From c25a82d12a8d5e875ec5c1b2e7155654f3141560 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 12:49:43 +0000 Subject: [PATCH 001/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e4066f8..3ac772b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,12 +20,22 @@ variables: GITLAB_TOKEN: $GITLAB_TOKEN ENV: "staging" PIPELINE: "TEST" + DAST_WEBSITE: "https://${OSM_HOSTNAME}" + FUZZAPI_PROFILE: Quick-10 + FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" + FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" stages: - deploy - test + - dast + - fuzz - cleanup +include: + - template: DAST.gitlab-ci.yaml + - template: API-Fuzzing.gitlab-ci.yml + workflow: rules: - if: $CI_MERGE_REQUEST_ID @@ -126,6 +136,17 @@ testing: - set -a - source hive/openstack-etsi.rc - python3 logs.py + +dast: + stage: dast + environment: + name: $ENV + +fuzz: + stage: fuzz + environment: + name: $ENV + cleanup: -- GitLab From 9c649c958f03416289b2fd6f8795b1b4ab0171de Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 12:51:21 +0000 Subject: [PATCH 002/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3ac772b..8b09670 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,7 +33,7 @@ stages: - cleanup include: - - template: DAST.gitlab-ci.yaml + - template: DAST.gitlab-ci.yml - template: API-Fuzzing.gitlab-ci.yml workflow: -- GitLab From adcc187a12b3dd3640e7ce0e34493c9d37fbb560 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 13:05:47 +0000 Subject: [PATCH 003/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8b09670..0ebbf5a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -142,7 +142,7 @@ dast: environment: name: $ENV -fuzz: +apifuzzer_fuzz: stage: fuzz environment: name: $ENV -- GitLab From f76bd5172af716427161e5bce403f7ae4255f2bf Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 13:06:16 +0000 Subject: [PATCH 004/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0ebbf5a..110e678 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,7 +19,7 @@ variables: GITLAB_API: $GITLAB_API GITLAB_TOKEN: $GITLAB_TOKEN ENV: "staging" - PIPELINE: "TEST" + PIPELINE: "SECURITY" DAST_WEBSITE: "https://${OSM_HOSTNAME}" FUZZAPI_PROFILE: Quick-10 FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" -- GitLab From ccb803c5d18df3821037d423314a8df03d5e3629 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 13:29:15 +0000 Subject: [PATCH 005/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 110e678..0ed1186 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,6 +31,7 @@ stages: - dast - fuzz - cleanup + - debug include: - template: DAST.gitlab-ci.yml @@ -137,6 +138,23 @@ testing: - source hive/openstack-etsi.rc - python3 logs.py +debug1: + stage: debug + image: ubuntu:20.04 + environment: + name: $ENV + script: + - curl "https://${OSM_HOSTNAME}" -v + +debug2: + stage: debug + tags: + - openstack + environment: + name: $ENV + script: + - curl "https://${OSM_HOSTNAME}" -v + dast: stage: dast environment: -- GitLab From ea6d8d41f6d485a6e72923f3f094d7ce8ace630a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 13:42:40 +0000 Subject: [PATCH 006/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0ed1186..ad72108 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,10 +28,10 @@ variables: stages: - deploy - test + - debug - dast - fuzz - cleanup - - debug include: - template: DAST.gitlab-ci.yml @@ -144,7 +144,8 @@ debug1: environment: name: $ENV script: - - curl "https://${OSM_HOSTNAME}" -v + - sudo apt install curl + - curl "https://${OSM_HOSTNAME}" -v -k debug2: stage: debug @@ -153,7 +154,7 @@ debug2: environment: name: $ENV script: - - curl "https://${OSM_HOSTNAME}" -v + - curl "https://${OSM_HOSTNAME}" -v -k dast: stage: dast -- GitLab From e368829973f35310c971f6493cb5276106c910c1 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 13:46:07 +0000 Subject: [PATCH 007/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ad72108..eb77ae2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -144,7 +144,7 @@ debug1: environment: name: $ENV script: - - sudo apt install curl + - sudo apt-get install curl -y - curl "https://${OSM_HOSTNAME}" -v -k debug2: -- GitLab From 294bb2ca616d83831426b8afa0c82e6859da37ce Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 13:46:37 +0000 Subject: [PATCH 008/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eb77ae2..5955aff 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -144,7 +144,7 @@ debug1: environment: name: $ENV script: - - sudo apt-get install curl -y + - apt-get install curl -y - curl "https://${OSM_HOSTNAME}" -v -k debug2: -- GitLab From d5b074c569dc5d2f4098c154450b0c05822bb426 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 13:49:24 +0000 Subject: [PATCH 009/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5955aff..a9bffce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -144,6 +144,7 @@ debug1: environment: name: $ENV script: + - apt-get update - apt-get install curl -y - curl "https://${OSM_HOSTNAME}" -v -k -- GitLab From 6431f3803d766655f0101dd73d2310ddf78a418e Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 14:33:54 +0000 Subject: [PATCH 010/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a9bffce..5324855 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -154,9 +154,13 @@ debug2: - openstack environment: name: $ENV + artifacts: + paths: + - log.txt script: - - curl "https://${OSM_HOSTNAME}" -v -k - + - curl "https://${OSM_HOSTNAME}" -v -k &> log.txt + - cat log.txt + dast: stage: dast environment: -- GitLab From 27724570ed53c6ec612ae59385d02645d53897ec Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 14:46:28 +0000 Subject: [PATCH 011/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5324855..b28d23d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,7 +23,7 @@ variables: DAST_WEBSITE: "https://${OSM_HOSTNAME}" FUZZAPI_PROFILE: Quick-10 FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" - FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" + FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}/osm" stages: - deploy -- GitLab From 5a512d77e6ec255a5fbb755027edb1e21e21777e Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 15:45:22 +0000 Subject: [PATCH 012/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b28d23d..0ebbb90 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,8 @@ variables: PIPELINE: "SECURITY" DAST_WEBSITE: "https://${OSM_HOSTNAME}" FUZZAPI_PROFILE: Quick-10 - FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" + #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" + FUZZAPI_OPENAPI: $OPENAPI FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}/osm" stages: @@ -147,6 +148,7 @@ debug1: - apt-get update - apt-get install curl -y - curl "https://${OSM_HOSTNAME}" -v -k + - cat $OPENAPI debug2: stage: debug @@ -161,6 +163,7 @@ debug2: - curl "https://${OSM_HOSTNAME}" -v -k &> log.txt - cat log.txt + dast: stage: dast environment: -- GitLab From 3ff8b156810fa59ed584fdacb91d9de514ea0a3e Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 16:01:36 +0000 Subject: [PATCH 013/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0ebbb90..9679de4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,7 +20,7 @@ variables: GITLAB_TOKEN: $GITLAB_TOKEN ENV: "staging" PIPELINE: "SECURITY" - DAST_WEBSITE: "https://${OSM_HOSTNAME}" + DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" FUZZAPI_PROFILE: Quick-10 #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" FUZZAPI_OPENAPI: $OPENAPI -- GitLab From f7a3ccb1e3f8b421a067c96be4776dc7d951a7e6 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 16:04:43 +0000 Subject: [PATCH 014/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9679de4..be1cedc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,10 +29,10 @@ variables: stages: - deploy - test - - debug - dast - fuzz - cleanup + - debug include: - template: DAST.gitlab-ci.yml @@ -147,8 +147,8 @@ debug1: script: - apt-get update - apt-get install curl -y - - curl "https://${OSM_HOSTNAME}" -v -k - - cat $OPENAPI + - curl "https://${OSM_HOSTNAME}/osm" -v -k + debug2: stage: debug @@ -160,7 +160,7 @@ debug2: paths: - log.txt script: - - curl "https://${OSM_HOSTNAME}" -v -k &> log.txt + - curl "https://${OSM_HOSTNAME}/osm" -v -k &> log.txt - cat log.txt -- GitLab From b1c4d81a1d7007a19f307377e7536e5190629f54 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 16:22:41 +0000 Subject: [PATCH 015/292] Update hive/openapi.json, .gitlab-ci.yml files --- .gitlab-ci.yml | 4 +- hive/openapi.json | 83697 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83699 insertions(+), 2 deletions(-) create mode 100644 hive/openapi.json diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index be1cedc..30c97ef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,14 +23,14 @@ variables: DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" FUZZAPI_PROFILE: Quick-10 #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" - FUZZAPI_OPENAPI: $OPENAPI + FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}/osm" stages: - deploy - test - - dast - fuzz + - dast - cleanup - debug diff --git a/hive/openapi.json b/hive/openapi.json new file mode 100644 index 0000000..7631807 --- /dev/null +++ b/hive/openapi.json @@ -0,0 +1,83697 @@ +{ + "openapi": "3.0.0", + "servers": [ + { + "description": "OSM NB API", + "url": "https://osm.etsi.org/nbapi/v1.0.0" + } + ], + "info": { + "description": "This is Open Source MANO Northbound API featuring ETSI NFV SOL005.\nFor more information on OSM, you can visit [http://osm.etsi.org](http://osm.etsi.org).\nYou can send us your comments and questions to OSM_TECH@list.etsi.org\nor join the [OpenSourceMANO Slack Workplace](https://join.slack.com/t/opensourcemano/shared_invite/enQtMzQ3MzYzNTQ0NDIyLWVkNTE4ZjZjNWI0ZTQyN2VhOTI1MjViMzU1NWYwMWM3ODI4NTQyY2VlODA2ZjczMWIyYTFkZWNiZmFkM2M2ZDk)\n", + "version": "1.0.0", + "title": "OSM NB API featuring ETSI NFV SOL005", + "contact": { + "email": "OSM_TECH@list.etsi.org" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "tags": [ + { + "name": "VNF packages", + "description": "Management operations of VNF descriptors and packages" + }, + { + "name": "NS packages", + "description": "Management operations of NS descriptors and packages" + }, + { + "name": "NS instances", + "description": "Management operations of NS instances" + }, + { + "name": "NetSlice templates", + "description": "Management operations of NetSlice Templates" + }, + { + "name": "NetSlice instances", + "description": "Management operations of NetSlice Instances" + }, + { + "name": "NS Performance Management", + "description": "Management operations related to Performance Mangement of NS instances" + }, + { + "name": "Physical Data Units (PDU)", + "description": "Management operations of PDUs" + }, + { + "name": "Authentication", + "description": "Authentication operations" + }, + { + "name": "Identity", + "description": "Management operations of users, projects and roles" + }, + { + "name": "Infrastructure", + "description": "Management operations of VIM, VIM accounts, WIM and SDN controllers" + }, + { + "name": "Repositories", + "description": "Management operations of repositories" + }, + { + "name": "Admin", + "description": "Management operations of Administration items" + } + ], + "security": [ + { + "bearerAuth": [] + } + ], + "paths": { + "/nsd/v1/ns_descriptors": { + "get": { + "tags": [ + "NS packages" + ], + "summary": "Query information about multiple NS descriptor resources", + "description": "Query information about multiple NS descriptor resources", + "operationId": "getNSDs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "NS packages" + ], + "summary": "Create a new NS descriptor resource", + "description": "Create a new NS descriptor resource", + "operationId": "addNSD", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsd/v1/ns_descriptors/{nsdInfoId}": { + "parameters": [ + { + "name": "nsdInfoId", + "in": "path", + "required": true, + "description": "NSD Info ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS packages" + ], + "summary": "Read information about an individual NS descriptor resource", + "description": "Read information about an individual NS descriptor resource", + "operationId": "getNSD", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + }, + "application/yaml": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "NS packages" + ], + "summary": "Delete an individual NS descriptor resource", + "description": "Delete an individual NS descriptor resource", + "operationId": "deleteNSD", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "NS packages" + ], + "summary": "Modify the data of an individual NS descriptor resource", + "description": "Modify the data of an individual NS descriptor resource", + "operationId": "updateNSD", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsd/v1/ns_descriptors/{nsdInfoId}/nsd_content": { + "parameters": [ + { + "name": "nsdInfoId", + "in": "path", + "required": true, + "description": "NSD Info ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS packages" + ], + "summary": "Fetch the content of a NSD", + "description": "Fetch the content of a NSD", + "operationId": "getNSDcontent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "206": { + "description": "Partial Content", + "headers": { + "Content-Range": { + "schema": { + "type": "string" + } + } + }, + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "put": { + "tags": [ + "NS packages" + ], + "summary": "Upload the content of a NSD", + "description": "Upload the content of a NSD", + "operationId": "updateNSDcontent", + "requestBody": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "responses": { + "202": { + "description": "Accepted" + }, + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsd/v1/ns_descriptors/{nsdInfoId}/artifacts/{artifactPath}": { + "parameters": [ + { + "name": "nsdInfoId", + "in": "path", + "required": true, + "description": "NS Package ID", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "Artifact Path", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS packages" + ], + "summary": "Fetch individual NS package artifact", + "description": "Fetch individual NS package artifact", + "operationId": "getNsPkgArtifact", + "responses": { + "200": { + "description": "OK", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "206": { + "description": "Partial Content", + "headers": { + "Content-Range": { + "schema": { + "type": "string" + } + } + }, + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsd/v1/ns_descriptors/{nsdInfoId}/nsd": { + "parameters": [ + { + "name": "nsdInfoId", + "in": "path", + "required": true, + "description": "NS Package ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS packages" + ], + "summary": "Read NSD of an on-boarded NS package", + "description": "Read NSD of an on-boarded NS package", + "operationId": "getNsPkgNsd", + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsd/v1/ns_descriptors_content": { + "post": { + "tags": [ + "NS packages" + ], + "summary": "Upload a NS package by providing the content of the NS package", + "description": "Upload a NS package by providing the content of the NS package", + "operationId": "uploadNsPkgsContent", + "requestBody": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "202": { + "description": "Accepted" + }, + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "get": { + "tags": [ + "NS packages" + ], + "summary": "Query information about multiple NS package resources", + "description": "Query information about multiple NS package resources", + "operationId": "getNsPkgsContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + } + } + }, + "206": { + "description": "Partial Content", + "headers": { + "Content-Range": { + "schema": { + "type": "string" + } + } + }, + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsd/v1/ns_descriptors_content/{nsdInfoId}": { + "parameters": [ + { + "name": "nsdInfoId", + "in": "path", + "required": true, + "description": "NS Package ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS packages" + ], + "summary": "Read information about an individual NS package resource", + "description": "Read information about an individual NS package resource", + "operationId": "getNsPkgsIdContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + }, + "application/yaml": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "put": { + "tags": [ + "NS packages" + ], + "summary": "Modify an individual NS package resource", + "description": "Modify an individual NS package resource", + "operationId": "updateNsPkgsIdContent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "NS packages" + ], + "summary": "Delete an individual NS package resource", + "description": "Delete an individual NS package resource", + "operationId": "deleteNSPkgsIdContent", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/vnfpkgm/v1/vnf_packages": { + "get": { + "tags": [ + "VNF packages" + ], + "summary": "Query information about multiple VNF package resources", + "description": "Query information about multiple VNF package resources", + "operationId": "getVnfPkgs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "VNF packages" + ], + "summary": "Create a new VNF package resource", + "description": "Create a new VNF package resource", + "operationId": "addVnfPkg", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/vnfpkgm/v1/vnf_packages/{vnfPkgId}": { + "parameters": [ + { + "name": "vnfPkgId", + "in": "path", + "required": true, + "description": "VNF Package ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "VNF packages" + ], + "summary": "Read information about an individual VNF package resource", + "description": "Read information about an individual VNF package resource", + "operationId": "getVnfPkg", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + }, + "application/yaml": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "VNF packages" + ], + "summary": "Delete an individual VNF package resource", + "description": "Delete an individual VNF package resource", + "operationId": "deleteVnfPkg", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "VNF packages" + ], + "summary": "Modify an individual VNF package resource", + "description": "Modify an individual VNF package resource", + "operationId": "updateVnfPkg", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/vnfpkgm/v1/vnf_packages/{vnfPkgId}/vnfd": { + "parameters": [ + { + "name": "vnfPkgId", + "in": "path", + "required": true, + "description": "VNF Package ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "VNF packages" + ], + "summary": "Read VNFD of an on-boarded VNF package", + "description": "Read VNFD of an on-boarded VNF package", + "operationId": "getVnfPkgVnfd", + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/vnfpkgm/v1/vnf_packages/{vnfPkgId}/package_content": { + "parameters": [ + { + "name": "vnfPkgId", + "in": "path", + "required": true, + "description": "VNF Package ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "VNF packages" + ], + "summary": "Fetch an on-boarded VNF package", + "description": "Fetch an on-boarded VNF package", + "operationId": "getVnfPkgContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "206": { + "description": "Partial Content", + "headers": { + "Content-Range": { + "schema": { + "type": "string" + } + } + }, + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "put": { + "tags": [ + "VNF packages" + ], + "summary": "Upload a VNF package by providing the content of the VNF package", + "description": "Upload a VNF package by providing the content of the VNF package", + "operationId": "uploadVnfPkgContent", + "requestBody": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "responses": { + "202": { + "description": "Accepted" + }, + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/vnfpkgm/v1/vnf_packages/{vnfPkgId}/artifacts/{artifactPath}": { + "parameters": [ + { + "name": "vnfPkgId", + "in": "path", + "required": true, + "description": "VNF Package ID", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "Artifact Path", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "VNF packages" + ], + "summary": "Fetch individual VNF package artifact", + "description": "Fetch individual VNF package artifact", + "operationId": "getVnfPkgArtifact", + "responses": { + "200": { + "description": "OK", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "206": { + "description": "Partial Content", + "headers": { + "Content-Range": { + "schema": { + "type": "string" + } + } + }, + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/vnfpkgm/v1/vnf_packages_content": { + "post": { + "tags": [ + "VNF packages" + ], + "summary": "Upload a VNF package by providing the content of the VNF package", + "description": "Upload a VNF package by providing the content of the VNF package", + "operationId": "uploadVnfPkgsContent", + "requestBody": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "202": { + "description": "Accepted" + }, + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "get": { + "tags": [ + "VNF packages" + ], + "summary": "Query information about multiple VNF package resources", + "description": "Query information about multiple VNF package resources", + "operationId": "getVnfPkgsContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + } + } + }, + "206": { + "description": "Partial Content", + "headers": { + "Content-Range": { + "schema": { + "type": "string" + } + } + }, + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/vnfpkgm/v1/vnf_packages_content/{packageContentId}": { + "parameters": [ + { + "name": "packageContentId", + "in": "path", + "required": true, + "description": "VNF Package Content ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "VNF packages" + ], + "summary": "Read information about an individual VNF package resource", + "description": "Read information about an individual VNF package resource", + "operationId": "getVnfPkgsIdContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + }, + "application/yaml": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "put": { + "tags": [ + "VNF packages" + ], + "summary": "Modify an individual VNF package resource", + "description": "Modify an individual VNF package resource", + "operationId": "updateVnfPkgsIdContent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "VNF packages" + ], + "summary": "Delete an individual VNF package resource", + "description": "Delete an individual VNF package resource", + "operationId": "deleteVnfPkgsIdContent", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_instances": { + "get": { + "tags": [ + "NS instances" + ], + "summary": "Query information about multiple NS instances", + "description": "Query information about multiple NS isntances", + "operationId": "getNSinstances", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "NS instances" + ], + "summary": "Create a new NS instance resource", + "description": "Create a new NS instance resource", + "operationId": "addNSinstance", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_instances/{nsInstanceId}": { + "parameters": [ + { + "name": "nsInstanceId", + "in": "path", + "required": true, + "description": "NS Instance ID", + "schema": { + "type": "string" + } + }, + { + "name": "vcaStatusRefresh", + "in": "query", + "required": false, + "description": "Set to true if vca status needs to be refreshed.", + "schema": { + "type": "boolean" + } + } + ], + "get": { + "tags": [ + "NS instances" + ], + "summary": "Read an individual NS instance resource", + "description": "Read an individual NS instance resource", + "operationId": "getNSinstance", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + }, + "application/yaml": { + "schema": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "NS instances" + ], + "summary": "Delete an individual NS instance resource", + "description": "Delete an individual NS instance resource", + "operationId": "deleteNSinstance", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_instances/{nsInstanceId}/instantiate": { + "parameters": [ + { + "name": "nsInstanceId", + "in": "path", + "required": true, + "description": "NS Instance ID", + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "NS instances" + ], + "summary": "Instantiate a NS", + "description": "Instantiate a NS. The precondition is that the NS instance must have\nbeen created and must be in NOT_INSTANTIATED state. As a result of the\nsuccess of this operation, the NFVO creates a \"NS Lifecycle Operation\nOccurrence\" resource for the request, and the NS instance state becomes\nINSTANTIATED.\n", + "operationId": "instantiateNSinstance", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "headers": { + "Location": { + "description": "It must point to the new \"NS Lifecycle Operation Occurrence\"\nresource, i.e. an URI like \".../ns_lcm_op_occs/{nsLcmOpOccId}\"\n", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_instances/{nsInstanceId}/scale": { + "parameters": [ + { + "name": "nsInstanceId", + "in": "path", + "required": true, + "description": "NS Instance ID", + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "NS instances" + ], + "summary": "Scale a NS instance", + "description": "Scale a NS instance. The precondition is that the NS instance must have\nbeen created and must be in INSTANTIATED state. As a result of the\nsuccess of this operation, the NFVO creates a \"NS Lifecycle Operation\nOccurrence\" resource for the request, and the NS instance state remains\nINSTANTIATED.\n", + "operationId": "scaleNSinstance", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scaleType": { + "type": "string", + "enum": [ + "SCALE_VNF" + ] + }, + "timeout_ns_scale": { + "description": "timeout for the scale operation", + "type": "integer" + }, + "scaleVnfData": { + "type": "object", + "properties": { + "scaleVnfType": { + "type": "string", + "enum": [ + "SCALE_IN", + "SCALE_OUT" + ] + }, + "scaleByStepData": { + "type": "object", + "properties": { + "scaling-group-descriptor": { + "type": "string" + }, + "scaling-policy": { + "type": "string" + }, + "member-vnf-index": { + "type": "string" + } + }, + "required": [ + "scaling-group-descriptor", + "member-vnf-index" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleVnfType", + "scaleByStepData" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleType", + "scaleVnfData" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "scaleType": { + "type": "string", + "enum": [ + "SCALE_VNF" + ] + }, + "timeout_ns_scale": { + "description": "timeout for the scale operation", + "type": "integer" + }, + "scaleVnfData": { + "type": "object", + "properties": { + "scaleVnfType": { + "type": "string", + "enum": [ + "SCALE_IN", + "SCALE_OUT" + ] + }, + "scaleByStepData": { + "type": "object", + "properties": { + "scaling-group-descriptor": { + "type": "string" + }, + "scaling-policy": { + "type": "string" + }, + "member-vnf-index": { + "type": "string" + } + }, + "required": [ + "scaling-group-descriptor", + "member-vnf-index" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleVnfType", + "scaleByStepData" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleType", + "scaleVnfData" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "headers": { + "Location": { + "description": "It must point to the new \"NS Lifecycle Operation Occurrence\"\nresource, i.e. an URI like \".../ns_lcm_op_occs/{nsLcmOpOccId}\"\n", + "schema": { + "type": "string", + "format": "uri" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_instances/{nsInstanceId}/terminate": { + "parameters": [ + { + "name": "nsInstanceId", + "in": "path", + "required": true, + "description": "NS Instance ID", + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "NS instances" + ], + "summary": "Terminate a NS instance", + "description": "Terminate a NS instance. The precondition is that the NS instance must have\nbeen created and must be in INSTANTIATED state. As a result of the\nsuccess of this operation, the NFVO creates a \"NS Lifecycle Operation\nOccurrence\" resource for the request, and the NS instance state becomes\nNOT_INSTANTIATED.\n", + "operationId": "terminateNSinstance", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "timeout_ns_terminate": { + "description": "timeout for terminate operation", + "type": "integer" + }, + "autoremove": { + "description": "remove network service if termination end without error", + "type": "boolean" + }, + "skip_terminate_primitives": { + "description": "Do not execute network service termination primitives", + "type": "boolean" + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "timeout_ns_terminate": { + "description": "timeout for terminate operation", + "type": "integer" + }, + "autoremove": { + "description": "remove network service if termination end without error", + "type": "boolean" + }, + "skip_terminate_primitives": { + "description": "Do not execute network service termination primitives", + "type": "boolean" + } + }, + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "headers": { + "Location": { + "description": "It must point to the new \"NS Lifecycle Operation Occurrence\"\nresource, i.e. an URI like \".../ns_lcm_op_occs/{nsLcmOpOccId}\"\n", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_instances/{nsInstanceId}/action": { + "parameters": [ + { + "name": "nsInstanceId", + "in": "path", + "required": true, + "description": "NS Instance ID", + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "NS instances" + ], + "summary": "Execute an action on a NS instance", + "description": "Execute an action on a NS instance.\nThe NS instance must have been created and must be in INSTANTIATED state.\n", + "operationId": "actionOnNSinstance", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "primitive": { + "type": "string", + "description": "name of the primitive in the 'config-descriptor'. If the target is\na kdu it can be also 'status', 'rollback' or 'upgrade'\n" + }, + "primitive_params": { + "description": "parameters of this primitive", + "type": "object", + "additionalProperties": true + }, + "member_vnf_index": { + "type": "string", + "description": "provide if the target action is for a vnf, vdu or kdu" + }, + "vdu_id": { + "type": "string", + "description": "provide if the target action is for a vdu" + }, + "kdu_name": { + "type": "string", + "description": "provide if the target action is for a kdu" + }, + "vdu_count_index": { + "type": "integer" + }, + "timeout_ns_action": { + "description": "timeout for the day 1/2 operation", + "type": "integer" + } + }, + "required": [ + "primitive", + "primitive_params" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "primitive": { + "type": "string", + "description": "name of the primitive in the 'config-descriptor'. If the target is\na kdu it can be also 'status', 'rollback' or 'upgrade'\n" + }, + "primitive_params": { + "description": "parameters of this primitive", + "type": "object", + "additionalProperties": true + }, + "member_vnf_index": { + "type": "string", + "description": "provide if the target action is for a vnf, vdu or kdu" + }, + "vdu_id": { + "type": "string", + "description": "provide if the target action is for a vdu" + }, + "kdu_name": { + "type": "string", + "description": "provide if the target action is for a kdu" + }, + "vdu_count_index": { + "type": "integer" + }, + "timeout_ns_action": { + "description": "timeout for the day 1/2 operation", + "type": "integer" + } + }, + "required": [ + "primitive", + "primitive_params" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "headers": { + "Location": { + "description": "It must point to the new \"NS Lifecycle Operation Occurrence\"\nresource, i.e. an URI like \".../ns_lcm_op_occs/{nsLcmOpOccId}\"\n", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_instances_content": { + "get": { + "tags": [ + "NS instances" + ], + "summary": "Query information about multiple NS instances", + "description": "Query information about multiple NS isntances", + "operationId": "getNSinstancesContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "NS instances" + ], + "summary": "Create a new NS instance", + "description": "Create a new NS instance", + "operationId": "createNSinstanceContent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nslcmop_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nslcmop_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_instances_content/{nsInstanceContentId}": { + "parameters": [ + { + "name": "nsInstanceContentId", + "in": "path", + "required": true, + "description": "NS Instance Content ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS instances" + ], + "summary": "Read an individual NS instance resource", + "description": "Read an individual NS instance resource", + "operationId": "getNSinstanceContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + }, + "application/yaml": { + "schema": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "NS instances" + ], + "summary": "Delete an individual NS instance resource", + "description": "Delete an individual NS instance resource", + "operationId": "deleteNSinstanceContent", + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_lcm_op_occs": { + "get": { + "tags": [ + "NS instances" + ], + "summary": "Query information about multiple NS LCM Operation Occurrences", + "description": "Query information about multiple NS LCM Operation Occurrences", + "operationId": "getNSLCMOpOccs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "nsInstance": { + "type": "string", + "format": "path" + } + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "nsInstance": { + "type": "string", + "format": "path" + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/ns_lcm_op_occs/{nsLcmOpOccId}": { + "parameters": [ + { + "name": "nsLcmOpOccId", + "in": "path", + "required": true, + "description": "NS LCM Operation Occurrence ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS instances" + ], + "summary": "Query information about an individual NS LCM Operation Occurrence", + "description": "Query information about an individual NS LCM Operation Occurrence", + "operationId": "getNSLCMOpOcc", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "nsInstance": { + "type": "string", + "format": "path" + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "nsInstance": { + "type": "string", + "format": "path" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/vnf_instances": { + "get": { + "tags": [ + "NS instances" + ], + "summary": "Query information about multiple VNF Instances", + "description": "Query information about multiple VNF Instances", + "operationId": "getVnfInstances", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "VNF Instance Information\nOnly generic fields (_id, id) are described\nFor a full specification of the VNF Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfr.html\n", + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "VNF Instance Information\nOnly generic fields (_id, id) are described\nFor a full specification of the VNF Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfr.html\n", + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/vnf_instances/{vnfInstanceId}": { + "parameters": [ + { + "name": "vnfInstanceId", + "in": "path", + "required": true, + "description": "VNF Instance ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS instances" + ], + "summary": "Query information about an individual VNF Instance", + "description": "Query information about an individual VNF Instance", + "operationId": "getVnfInstance", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "VNF Instance Information\nOnly generic fields (_id, id) are described\nFor a full specification of the VNF Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfr.html\n", + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "VNF Instance Information\nOnly generic fields (_id, id) are described\nFor a full specification of the VNF Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfr.html\n", + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/subscriptions": { + "get": { + "tags": [ + "NS instances" + ], + "summary": "Query information about multiple NS instance subscription", + "description": "Query information about multiple NS instance subscription", + "operationId": "getNsSubcriptions", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "_admin": { + "type": "object" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "filter": { + "type": "object" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "_admin": { + "type": "object" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "filter": { + "type": "object" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "NS instances" + ], + "summary": "Create a new subscription for the Network service", + "description": "Create a new subscription for the Network service", + "operationId": "addNsSubcriptions", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "filter": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "CallbackUri" + ] + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "filter": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "CallbackUri" + ] + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "object" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "filter": { + "type": "object" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "filter": { + "type": "object" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nslcm/v1/subscriptions/{nsSubscriptionsId}": { + "parameters": [ + { + "name": "nsSubscriptionsId", + "in": "path", + "required": true, + "description": "Network Service Subscription ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS instances" + ], + "summary": "Read information about an individual Network Service Subscription", + "description": "Read information about an individual Network Service Subscription", + "operationId": "getNsSubcriptionId", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "_admin": { + "type": "object" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "filter": { + "type": "object" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "_admin": { + "type": "object" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "filter": { + "type": "object" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "NS instances" + ], + "summary": "Delete an individual Network Service Subscription", + "description": "Delete an individual Network Service Subscription", + "operationId": "deleteNsSubcriptionId", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nst/v1/netslice_templates": { + "get": { + "tags": [ + "NetSlice templates" + ], + "summary": "Query information about multiple NetSlice template resources", + "description": "Query information about multiple NetSlice template resources", + "operationId": "getNSTs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "NetSlice templates" + ], + "summary": "Create a new NetSlice template resource", + "description": "Create a new NetSlice template resource", + "operationId": "addNST", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nst/v1/netslice_templates/{netsliceTemplateId}": { + "parameters": [ + { + "name": "netsliceTemplateId", + "in": "path", + "required": true, + "description": "NetSlice Template ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NetSlice templates" + ], + "summary": "Read information about an individual NetSlice template resource", + "description": "Read information about an individual NetSlice template resource", + "operationId": "getNST", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "NetSlice templates" + ], + "summary": "Delete an individual NetSlice template resource", + "description": "Delete an individual NetSlice template resource", + "operationId": "deleteNST", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nst/v1/netslice_templates/{netsliceTemplateId}/artifacts/{artifactPath}": { + "parameters": [ + { + "name": "netsliceTemplateId", + "in": "path", + "required": true, + "description": "NetSlice Template ID", + "schema": { + "type": "string" + } + }, + { + "name": "artifactPath", + "in": "path", + "required": true, + "description": "Artifact Path", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NetSlice templates" + ], + "summary": "Fetch individual NetSlice Template artifact", + "description": "Fetch individual NetSlice Template artifact", + "operationId": "getNstArtifact", + "responses": { + "200": { + "description": "OK", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "206": { + "description": "Partial Content", + "headers": { + "Content-Range": { + "schema": { + "type": "string" + } + } + }, + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nst/v1/netslice_templates/{netsliceTemplateId}/nst": { + "parameters": [ + { + "name": "netsliceTemplateId", + "in": "path", + "required": true, + "description": "NetSlice Template ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NetSlice templates" + ], + "summary": "Read NST of an on-boarded NetSlice Template", + "description": "Read NST of an on-boarded NetSlice Template", + "operationId": "getNstNst", + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nst/v1/netslice_templates/{netsliceTemplateId}/nst_content": { + "parameters": [ + { + "name": "netsliceTemplateId", + "in": "path", + "required": true, + "description": "NetSlice Template ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NetSlice templates" + ], + "summary": "Fetch the content of a NST", + "description": "Fetch the content of a NST", + "operationId": "getNSTcontent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "206": { + "description": "Partial Content", + "headers": { + "Content-Range": { + "schema": { + "type": "string" + } + } + }, + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "put": { + "tags": [ + "NetSlice templates" + ], + "summary": "Upload the content of a NST", + "description": "Upload the content of a NST", + "operationId": "updateNSTcontent", + "requestBody": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "responses": { + "202": { + "description": "Accepted" + }, + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nst/v1/netslice_templates_content": { + "post": { + "tags": [ + "NetSlice templates" + ], + "summary": "Upload a NetSlice package by providing the content of the NetSlice package", + "description": "Upload a NetSlice package by providing the content of the NetSlice package", + "operationId": "uploadNstContent", + "requestBody": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "202": { + "description": "Accepted" + }, + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "get": { + "tags": [ + "NetSlice templates" + ], + "summary": "Query information about multiple NetSlice Template resources", + "description": "Query information about multiple NetSlice Template resources", + "operationId": "getNstContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + } + } + } + }, + "206": { + "description": "Partial Content", + "headers": { + "Content-Range": { + "schema": { + "type": "string" + } + } + }, + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nst/v1/netslice_templates_content/{netsliceTemplateContentId}": { + "parameters": [ + { + "name": "netsliceTemplateContentId", + "in": "path", + "required": true, + "description": "NetSlice Template ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NetSlice templates" + ], + "summary": "Read information about an individual NetSlice Template resource", + "description": "Read information about an individual NetSlice Template resource", + "operationId": "getNstIdContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "put": { + "tags": [ + "NetSlice templates" + ], + "summary": "Modify an individual NetSlice Template resource", + "description": "Modify an individual NetSlice Template resource", + "operationId": "updateNstIdContent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "id": { + "description": "NST Identifier", + "type": "string" + }, + "name": { + "description": "NST Name", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "id": { + "description": "NST Identifier", + "type": "string" + }, + "name": { + "description": "NST Name", + "type": "string" + } + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "NetSlice templates" + ], + "summary": "Delete an individual NetSlice Template resource", + "description": "Delete an individual NetSlice Template resource", + "operationId": "deleteNstIdContent", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsilcm/v1/netslice_instances": { + "get": { + "tags": [ + "NetSlice instances" + ], + "summary": "Query information about multiple NetSlice instances", + "description": "Query information about multiple NetSlice isntances", + "operationId": "getNSIs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "NetSlice instances" + ], + "summary": "Create a new NetSlice instance resource", + "description": "Create a new NetSlice instance resource", + "operationId": "addNSI", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsilcm/v1/netslice_instances/{netsliceInstanceId}": { + "parameters": [ + { + "name": "netsliceInstanceId", + "in": "path", + "required": true, + "description": "NetSlice Instance ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NetSlice instances" + ], + "summary": "Read an individual NetSlice instance resource", + "description": "Read an individual NetSlice instance resource", + "operationId": "getNSI", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + }, + "application/yaml": { + "schema": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "NetSlice instances" + ], + "summary": "Delete an individual NetSlice instance resource", + "description": "Delete an individual NetSlice instance resource", + "operationId": "deleteNSI", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsilcm/v1/netslice_instances/{netsliceInstanceId}/instantiate": { + "parameters": [ + { + "name": "netsliceInstanceId", + "in": "path", + "required": true, + "description": "NetSlice Instance ID", + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "NetSlice instances" + ], + "summary": "Instantiate a NetSlice", + "description": "Instantiate a NetSlice. The precondition is that the NetSlice instance\nmust have been created and must be in NOT_INSTANTIATED state. As a result\nof the success of this operation, the NFVO creates a \"NetSlice Lifecycle\nOperation Occurrence\" resource for the request, and the NS instance state\nbecomes INSTANTIATED.\n", + "operationId": "instantiateNSI", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "headers": { + "Location": { + "description": "It must point to the new \"NetSlice Lifecycle Operation Occurrence\"\nresource, i.e. an URI like \".../nsi_lcm_op_occs/{nsiLcmOpOccId}\"\n", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsilcm/v1/netslice_instances/{netsliceInstanceId}/terminate": { + "parameters": [ + { + "name": "netsliceInstanceId", + "in": "path", + "required": true, + "description": "NetSlice Instance ID", + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "NetSlice instances" + ], + "summary": "Terminate a NetSlice instance", + "description": "Terminate a NetSlice instance. The precondition is that the NetSlice instance\nmust have been created and must be in INSTANTIATED state. As a result of the\nsuccess of this operation, the NFVO creates a \"NetSlice Lifecycle Operation\nOccurrence\" resource for the request, and the NetSlice instance state becomes\nNOT_INSTANTIATED.\n", + "operationId": "terminateNSI", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "terminationTime": { + "description": "Timestamp indicating the end time of the NSI, i.e. the NSI will be terminated\nautomatically at this timestamp. Cardinality \"0\" indicates the NSI termination\ntakes place immediately.\n", + "type": "string", + "format": "date-time" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "terminationTime": { + "description": "Timestamp indicating the end time of the NSI, i.e. the NSI will be terminated\nautomatically at this timestamp. Cardinality \"0\" indicates the NSI termination\ntakes place immediately.\n", + "type": "string", + "format": "date-time" + } + } + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "headers": { + "Location": { + "description": "It must point to the new \"NetSlice Lifecycle Operation Occurrence\"\nresource, i.e. an URI like \".../nsi_lcm_op_occs/{nsiLcmOpOccId}\"\n", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsilcm/v1/netslice_instances/{netsliceInstanceId}/action": { + "parameters": [ + { + "name": "netsliceInstanceId", + "in": "path", + "required": true, + "description": "NetSlice Instance ID", + "schema": { + "type": "string" + } + } + ], + "post": { + "tags": [ + "NetSlice instances" + ], + "summary": "Execute an action on a NetSlice instance", + "description": "Execute an action on a NetSlice instance.\nThe NetSlice instance must have been created and must be in INSTANTIATED state.\n", + "operationId": "actionOnNSI", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "primitive": { + "type": "string" + }, + "primitive_params": { + "type": "object", + "additionalProperties": true + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "primitive", + "primitive_params" + ] + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "primitive": { + "type": "string" + }, + "primitive_params": { + "type": "object", + "additionalProperties": true + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "primitive", + "primitive_params" + ] + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "headers": { + "Location": { + "description": "It must point to the new \"NS Lifecycle Operation Occurrence\"\nresource, i.e. an URI like \".../ns_lcm_op_occs/{nsLcmOpOccId}\"\n", + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsilcm/v1/netslice_instances_content": { + "get": { + "tags": [ + "NetSlice instances" + ], + "summary": "Query information about multiple NetSlice instances", + "description": "Query information about multiple NetSlice isntances", + "operationId": "getNSIsContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "NetSlice instances" + ], + "summary": "Create a new NetSlice instance", + "description": "Create a new NetSlice instance", + "operationId": "createNSIContent", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nsilcmop_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nsilcmop_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsilcm/v1/netslice_instances_content/{netsliceInstanceContentId}": { + "parameters": [ + { + "name": "netsliceInstanceContentId", + "in": "path", + "required": true, + "description": "NetSlice Instance Content ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NetSlice instances" + ], + "summary": "Read an individual NetSlice instance resource", + "description": "Read an individual NetSlice instance resource", + "operationId": "getNSIContent", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + }, + "application/yaml": { + "schema": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "NetSlice instances" + ], + "summary": "Delete an individual NS instance resource", + "description": "Delete an individual NS instance resource", + "operationId": "deleteNSIContent", + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsilcm/v1/nsi_lcm_op_occs": { + "get": { + "tags": [ + "NetSlice instances" + ], + "summary": "Query information about multiple NetSlice LCM Operation Occurrences", + "description": "Query information about multiple NetSlice LCM Operation Occurrences", + "operationId": "getNsiLcmOpOccs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsiName": { + "type": "string" + }, + "nstId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nslcmops_ids": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "netsliceInstanceId": { + "type": "string", + "format": "path" + } + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsiName": { + "type": "string" + }, + "nstId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nslcmops_ids": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "netsliceInstanceId": { + "type": "string", + "format": "path" + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nsilcm/v1/nsi_lcm_op_occs/{nsiLcmOpOccId}": { + "parameters": [ + { + "name": "nsiLcmOpOccId", + "in": "path", + "required": true, + "description": "NetSlice LCM Operation Occurrence ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NetSlice instances" + ], + "summary": "Query information about an individual NetSlice LCM Operation Occurrence", + "description": "Query information about an individual NetSlice LCM Operation Occurrence", + "operationId": "getNsiLcmOpOcc", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsiName": { + "type": "string" + }, + "nstId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nslcmops_ids": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "netsliceInstanceId": { + "type": "string", + "format": "path" + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsiName": { + "type": "string" + }, + "nstId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nslcmops_ids": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "netsliceInstanceId": { + "type": "string", + "format": "path" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/nspm/v1/pm_jobs/{pmJobId}/reports/{nsId}": { + "parameters": [ + { + "name": "pmJobId", + "in": "path", + "required": true, + "description": "NS PM Job ID", + "schema": { + "type": "string" + } + }, + { + "name": "nsId", + "in": "path", + "required": true, + "description": "NS ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "NS Performance Management" + ], + "summary": "Query information about an individual NS PM Job Report", + "description": "Query information about an individual NS PM Job Report", + "operationId": "getNsPmJobReport", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "objectInstanceId": { + "type": "string", + "format": "uuid" + }, + "performanceMetric": { + "type": "string" + }, + "performanceValue": { + "type": "object", + "properties": { + "performanceValue": { + "type": "object", + "properties": { + "performanceValue": { + "type": "number" + }, + "vnfMemberIndex": { + "type": "string" + }, + "vduName": { + "type": "string" + } + } + }, + "timestamp": { + "type": "number" + } + } + } + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "objectInstanceId": { + "type": "string", + "format": "uuid" + }, + "performanceMetric": { + "type": "string" + }, + "performanceValue": { + "type": "object", + "properties": { + "performanceValue": { + "type": "object", + "properties": { + "performanceValue": { + "type": "number" + }, + "vnfMemberIndex": { + "type": "string" + }, + "vduName": { + "type": "string" + } + } + }, + "timestamp": { + "type": "number" + } + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/pdu/v1/pdu_descriptors": { + "get": { + "tags": [ + "Physical Data Units (PDU)" + ], + "summary": "Query information about multiple PDU Descriptors", + "description": "Query information about multiple PDU Descriptors", + "operationId": "getPDUs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Physical Data Units (PDU)" + ], + "summary": "Create a new PDU", + "description": "Create a new PDU Descriptor", + "operationId": "createPDU", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "type", + "interfaces" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "type", + "interfaces" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/pdu/v1/pdu_descriptors/{pduDescriptorId}": { + "parameters": [ + { + "name": "pduDescriptorId", + "in": "path", + "required": true, + "description": "PDU Descriptor ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "Physical Data Units (PDU)" + ], + "summary": "Query information about an individual PDU Descriptor", + "description": "Query information about an individual PDU Descriptor", + "operationId": "getPDU", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Physical Data Units (PDU)" + ], + "summary": "Modify an individual PDU Descriptor", + "description": "Modify an individual PDU Descriptor", + "operationId": "editPDU", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Physical Data Units (PDU)" + ], + "summary": "Delete an individual PDU Descriptor", + "description": "Delete an individual PDU Descriptor", + "operationId": "deletePDU", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/tokens": { + "get": { + "tags": [ + "Authentication", + "Admin" + ], + "summary": "Query information about multiple Tokens", + "description": "Query information about multiple Tokens", + "operationId": "getTokens", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Authentication", + "Admin" + ], + "summary": "Request a new Token", + "description": "Request a new Token", + "operationId": "createToken", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_id": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ] + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_id": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ] + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Authentication", + "Admin" + ], + "summary": "Delete the Token indicated in the Authorization Header", + "description": "Delete the Token indicated in the Authorization Header", + "operationId": "deleteAuthToken", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/yaml": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/tokens/{tokenId}": { + "parameters": [ + { + "name": "tokenId", + "in": "path", + "required": true, + "description": "Token ID", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "Authentication", + "Admin" + ], + "summary": "Query information about an individual Token", + "description": "Query information about an individual Token", + "operationId": "getToken", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Authentication", + "Admin" + ], + "summary": "Delete the Token indicated as parameter", + "description": "Delete the Token indicated as parameter", + "operationId": "deleteToken", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string" + } + }, + "application/yaml": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/users": { + "get": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Query information about multiple Users", + "description": "Query information about multiple Users", + "operationId": "getUsers", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string", + "format": "uuid" + }, + "role": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "role_name": { + "type": "string" + } + } + } + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string", + "format": "uuid" + }, + "role": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "role_name": { + "type": "string" + } + } + } + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Create a new User", + "description": "Create a new User", + "operationId": "createUser", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/users/{userId}": { + "parameters": [ + { + "name": "userId", + "in": "path", + "required": true, + "description": "User ID/Name", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Query information about an individual User", + "description": "Query information about an individual User", + "operationId": "getUser", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string", + "format": "uuid" + }, + "role": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "role_name": { + "type": "string" + } + } + } + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string", + "format": "uuid" + }, + "role": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "role_name": { + "type": "string" + } + } + } + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Modify a User", + "description": "Modify a User", + "operationId": "editUser", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + } + ] + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "add_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "remove_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + } + ] + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "add_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "remove_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + } + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Delete a User", + "description": "Delete a User", + "operationId": "deleteUser", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/projects": { + "get": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Query information about multiple Projects", + "description": "Query information about multiple Projects", + "operationId": "getProjects", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Create a new Project", + "description": "Create a new Project", + "operationId": "createProject", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/projects/{projectId}": { + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "description": "Project ID/Name", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Query information about an individual Project", + "description": "Query information about an individual Project", + "operationId": "getProject", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Modify a Project", + "description": "Modify a Project", + "operationId": "editProject", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Delete a Project", + "description": "Delete a Project", + "operationId": "deleteProject", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/roles": { + "get": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Query information about multiple Roles", + "description": "Query information about multiple Roles", + "operationId": "getRoles", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Create a new Role", + "description": "Create a new Role", + "operationId": "createRole", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/roles/{roleId}": { + "parameters": [ + { + "name": "roleId", + "in": "path", + "required": true, + "description": "Role ID/Name", + "schema": { + "type": "string" + } + } + ], + "get": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Query information about an individual Role", + "description": "Query information about an individual Role", + "operationId": "getRole", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Modify a Role", + "description": "Modify a Role", + "operationId": "editRole", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + } + }, + "additionalProperties": false + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Identity", + "Admin" + ], + "summary": "Delete a Role", + "description": "Delete a Role", + "operationId": "deleteRole", + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/vims": { + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about multiple VIMs", + "description": "Query information about multiple VIMs", + "operationId": "getVIMs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Create a new VIM", + "description": "Create a new VIM", + "operationId": "createVIM", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/vims/{vimId}": { + "parameters": [ + { + "name": "vimId", + "in": "path", + "required": true, + "description": "VIM ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about an individual VIM", + "description": "Query information about an individual VIM", + "operationId": "getVIM", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Modify a VIM", + "description": "Modify a VIM", + "operationId": "editVIM", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Delete a VIM", + "description": "Delete a VIM", + "operationId": "deleteVIM", + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/vim_accounts": { + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about multiple VIM Accounts", + "description": "Query information about multiple VIM Accounts", + "operationId": "getVimAccounts", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Create a new VIM Account", + "description": "Create a new VIM Account", + "operationId": "createVimAccount", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/vim_accounts/{vimAccountId}": { + "parameters": [ + { + "name": "vimAccountId", + "in": "path", + "required": true, + "description": "VIM Account ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about an individual VIM Account", + "description": "Query information about an individual VIM Account", + "operationId": "getVimAccount", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Modify a VIM Account", + "description": "Modify a VIM Account", + "operationId": "editVimAccount", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Delete a VIM Account", + "description": "Delete a VIM Account", + "operationId": "deleteVimAccount", + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/wim_accounts": { + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about multiple WIM Accounts", + "description": "Query information about multiple WIM Accounts", + "operationId": "getWimAccounts", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Create a new WIM Account", + "description": "Create a new WIM Account", + "operationId": "createWimAccount", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "wim_url", + "wim_type" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "wim_url", + "wim_type" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/wim_accounts/{wimAccountId}": { + "parameters": [ + { + "name": "wimAccountId", + "in": "path", + "required": true, + "description": "WIM Account ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about an individual WIM Account", + "description": "Query information about an individual WIM Account", + "operationId": "getWimAccount", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Modify a WIM Account", + "description": "Modify a WIM Account", + "operationId": "editWimAccount", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string" + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string" + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Delete a WIM Account", + "description": "Delete a WIM Account", + "operationId": "deleteWimAccount", + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/sdns": { + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about multiple SDNs", + "description": "Query information about multiple SDNs", + "operationId": "getSDNs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ] + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Create a new SDN", + "description": "Create a new SDN", + "operationId": "createSDN", + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "required": [ + "name", + "type", + "ip", + "port", + "dpid" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "required": [ + "name", + "type", + "ip", + "port", + "dpid" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/sdns/{sdnId}": { + "parameters": [ + { + "name": "sdnId", + "in": "path", + "required": true, + "description": "SDN ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about an individual SDN", + "description": "Query information about an individual SDN", + "operationId": "getSDN", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ] + } + }, + "application/yaml": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ] + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Modify a SDN", + "description": "Modify a SDN", + "operationId": "editSDN", + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Delete a SDN", + "description": "Delete a SDN", + "operationId": "deleteSDN", + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/k8sclusters": { + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about multiple K8s Clusters", + "description": "Query information about multiple K8s Clusters", + "operationId": "getK8sClusters", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Create a new K8s Cluster", + "description": "Create a new K8s Cluster", + "operationId": "createK8sCluster", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "credentials", + "vim_account", + "k8s_version", + "nets" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "credentials", + "vim_account", + "k8s_version", + "nets" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/k8sclusters/{k8sClusterId}": { + "parameters": [ + { + "name": "k8sClusterId", + "in": "path", + "required": true, + "description": "K8s Cluster ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about an individual K8s Cluster", + "description": "Query information about an individual K8s Cluster", + "operationId": "getK8sCluster", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Modify a K8s Cluster", + "description": "Modify a K8s Cluster", + "operationId": "editK8sCluster", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Delete a K8s Cluster", + "description": "Delete a K8s Cluster", + "operationId": "deleteK8sCluster", + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/vca": { + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about multiple VCAs", + "description": "Query information about multiple VCAs", + "operationId": "getVcas", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Create a new VCA", + "description": "Create a new VCA", + "operationId": "createVca", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "endpoints", + "user", + "secret", + "cacert", + "lxd-cloud", + "lxd-credentials", + "k8s-cloud", + "k8s-credentials" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "endpoints", + "user", + "secret", + "cacert", + "lxd-cloud", + "lxd-credentials", + "k8s-cloud", + "k8s-credentials" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/vca/{vcaId}": { + "parameters": [ + { + "name": "vcaId", + "in": "path", + "required": true, + "description": "VCA ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Query information about an individual VCA", + "description": "Query information about an individual VCA", + "operationId": "getVca", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "patch": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Modify a VCA", + "description": "Modify a VCA", + "operationId": "editVca", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Infrastructure", + "Admin" + ], + "summary": "Delete a VCA", + "description": "Delete a VCA", + "operationId": "deleteVca", + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/k8srepos": { + "get": { + "tags": [ + "Repositories", + "Admin" + ], + "summary": "Query information about multiple K8s Repos", + "description": "Query information about multiple K8s Repos", + "operationId": "getK8sRepos", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + } + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "Repositories", + "Admin" + ], + "summary": "Create a new K8s Repo", + "description": "Create a new K8s Repo", + "operationId": "createK8sRepo", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name", + "type", + "url" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name", + "type", + "url" + ], + "additionalProperties": false + } + } + } + }, + "responses": { + "202": { + "description": "Accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + }, + "/admin/v1/k8srepos/{k8sRepoId}": { + "parameters": [ + { + "name": "k8sRepoId", + "in": "path", + "required": true, + "description": "K8s Repo ID", + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "get": { + "tags": [ + "Repositories", + "Admin" + ], + "summary": "Query information about an individual K8s Repo", + "description": "Query information about an individual K8s Repo", + "operationId": "getK8sRepo", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "delete": { + "tags": [ + "Repositories", + "Admin" + ], + "summary": "Delete a K8s Repo", + "description": "Delete a K8s Repo", + "operationId": "deleteK8sRepo", + "responses": { + "202": { + "description": "Accepted" + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + } + }, + "externalDocs": { + "description": "Find out more about OSM", + "url": "https://osm.etsi.org/docs/user-guide/" + }, + "components": { + "responses": { + "BadRequest": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "Unauthorized": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "Forbidden": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "NotFound": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "MethodNotAllowed": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "NotAcceptable": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "Conflict": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "UnprocessableEntity": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "InternalServerError": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "ServiceUnavailable": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "UnexpectedError": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "VnfDescriptor": { + "description": "VNF Descriptor (plaintext)", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "VnfPackage": { + "description": "VNF Package (compressed)", + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "NsDescriptor": { + "description": "NS Descriptor (plaintext)", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "NsPackage": { + "description": "NS Package (compressed)", + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "NetSliceTemplate": { + "description": "NetSlice Template (plaintext)", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "NetSlicePackage": { + "description": "NetSlice Package (compressed)", + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "NslcmSubscriptionResponse": { + "description": "NslcmSubscriptionResponse", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "filter": { + "type": "object" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "filter": { + "type": "object" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object" + } + } + } + } + } + } + }, + "schemas": { + "ObjectId": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + }, + "KeyValuePairs": { + "type": "object", + "additionalProperties": true + }, + "NsDescriptor": { + "type": "string", + "format": "yaml|json" + }, + "NsPackage": { + "type": "string", + "format": "binary" + }, + "CreateNsdInfoRequest": { + "type": "object", + "additionalProperties": true + }, + "NsdInfoModifications": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + }, + "NsdInfo": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + }, + "ArrayOfNsdInfo": { + "type": "array", + "items": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + }, + "ProblemDetails": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + }, + "VnfDescriptor": { + "type": "string", + "format": "yaml|json" + }, + "VnfPackage": { + "type": "string", + "format": "binary" + }, + "CreateVnfPkgInfoRequest": { + "type": "object", + "additionalProperties": true + }, + "VnfPkgInfoModifications": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + }, + "VnfPkgInfo": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + }, + "ArrayOfVnfPkgInfo": { + "type": "array", + "items": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + }, + "NsInstance": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + }, + "InstantiateNsRequest": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + }, + "ScaleNsRequest": { + "type": "object", + "properties": { + "scaleType": { + "type": "string", + "enum": [ + "SCALE_VNF" + ] + }, + "timeout_ns_scale": { + "description": "timeout for the scale operation", + "type": "integer" + }, + "scaleVnfData": { + "type": "object", + "properties": { + "scaleVnfType": { + "type": "string", + "enum": [ + "SCALE_IN", + "SCALE_OUT" + ] + }, + "scaleByStepData": { + "type": "object", + "properties": { + "scaling-group-descriptor": { + "type": "string" + }, + "scaling-policy": { + "type": "string" + }, + "member-vnf-index": { + "type": "string" + } + }, + "required": [ + "scaling-group-descriptor", + "member-vnf-index" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleVnfType", + "scaleByStepData" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleType", + "scaleVnfData" + ], + "additionalProperties": false + }, + "TerminateNsRequest": { + "type": "object", + "properties": { + "timeout_ns_terminate": { + "description": "timeout for terminate operation", + "type": "integer" + }, + "autoremove": { + "description": "remove network service if termination end without error", + "type": "boolean" + }, + "skip_terminate_primitives": { + "description": "Do not execute network service termination primitives", + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ArrayOfNsInstance": { + "type": "array", + "items": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + }, + "NSinstanceActionRequest": { + "type": "object", + "properties": { + "primitive": { + "type": "string", + "description": "name of the primitive in the 'config-descriptor'. If the target is\na kdu it can be also 'status', 'rollback' or 'upgrade'\n" + }, + "primitive_params": { + "description": "parameters of this primitive", + "type": "object", + "additionalProperties": true + }, + "member_vnf_index": { + "type": "string", + "description": "provide if the target action is for a vnf, vdu or kdu" + }, + "vdu_id": { + "type": "string", + "description": "provide if the target action is for a vdu" + }, + "kdu_name": { + "type": "string", + "description": "provide if the target action is for a kdu" + }, + "vdu_count_index": { + "type": "integer" + }, + "timeout_ns_action": { + "description": "timeout for the day 1/2 operation", + "type": "integer" + } + }, + "required": [ + "primitive", + "primitive_params" + ], + "additionalProperties": false + }, + "CreateNSinstanceContentResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nslcmop_id": { + "type": "string", + "format": "uuid" + } + } + }, + "NsLcmOpOcc": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "nsInstance": { + "type": "string", + "format": "path" + } + } + } + } + }, + "ArrayOfNsLcmOpOcc": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "nsInstance": { + "type": "string", + "format": "path" + } + } + } + } + } + }, + "VnfInstanceInfo": { + "description": "VNF Instance Information\nOnly generic fields (_id, id) are described\nFor a full specification of the VNF Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfr.html\n", + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + }, + "ArrayOfVnfInstanceInfo": { + "type": "array", + "items": { + "description": "VNF Instance Information\nOnly generic fields (_id, id) are described\nFor a full specification of the VNF Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfr.html\n", + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "NstInfo": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + }, + "ArrayOfNstInfo": { + "type": "array", + "items": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + }, + "CreateNstInfoRequest": { + "type": "object", + "additionalProperties": true + }, + "NetSliceTemplate": { + "type": "string", + "format": "yaml|json" + }, + "NetSlicePackage": { + "type": "string", + "format": "binary" + }, + "NstInfoModifications": { + "description": "NetSlice Template Information\nOnly generic fields (id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "id": { + "description": "NST Identifier", + "type": "string" + }, + "name": { + "description": "NST Name", + "type": "string" + } + } + }, + "NetSliceInstance": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + }, + "ArrayOfNetSliceInstance": { + "type": "array", + "items": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + }, + "InstantiateNsiRequest": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + }, + "TerminateNsiRequest": { + "type": "object", + "properties": { + "terminationTime": { + "description": "Timestamp indicating the end time of the NSI, i.e. the NSI will be terminated\nautomatically at this timestamp. Cardinality \"0\" indicates the NSI termination\ntakes place immediately.\n", + "type": "string", + "format": "date-time" + } + } + }, + "NsiActionRequest": { + "type": "object", + "properties": { + "primitive": { + "type": "string" + }, + "primitive_params": { + "type": "object", + "additionalProperties": true + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "primitive", + "primitive_params" + ] + }, + "CreateNsiContentResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nsilcmop_id": { + "type": "string", + "format": "uuid" + } + } + }, + "NsiLcmOpOcc": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsiName": { + "type": "string" + }, + "nstId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nslcmops_ids": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "netsliceInstanceId": { + "type": "string", + "format": "path" + } + } + } + } + }, + "ArrayOfNsiLcmOpOcc": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsiName": { + "type": "string" + }, + "nstId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nslcmops_ids": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "netsliceInstanceId": { + "type": "string", + "format": "path" + } + } + } + } + } + }, + "TokenInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + }, + "ArrayOfTokenInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + } + }, + "CreateTokenRequest": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_id": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ] + }, + "UserInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string", + "format": "uuid" + }, + "role": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "role_name": { + "type": "string" + } + } + } + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ArrayOfUserInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string", + "format": "uuid" + }, + "role": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "role_name": { + "type": "string" + } + } + } + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "ProjectRoleMappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "ProjectRoleMappingsOpt": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + }, + "CreateUserRequest": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + }, + "ShortNameList": { + "type": "array", + "items": { + "type": "string" + } + }, + "ArrayEditionSchema": { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + }, + "EditUserRequest": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + } + ] + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "add_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "remove_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + } + } + }, + "QuotasInfo": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + }, + "EditQuotasInfo": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + }, + "ProjectInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + } + }, + "ArrayOfProjectInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + } + } + }, + "CreateProjectRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "EditProjectRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "PermissionsInfo": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + }, + "EditPermissionsInfo": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + }, + "RoleInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + } + }, + "ArrayOfRoleInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + } + } + }, + "CreateRoleRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "EditRoleRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + } + }, + "additionalProperties": false + }, + "VimType": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "VimInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + }, + "ArrayOfVimInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + }, + "CreateVimRequest": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + }, + "EditVimRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "ObjectId_plus_OpId": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + }, + "OpId": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + }, + "WimType": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "WimInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + } + }, + "ArrayOfWimInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "CreateWimRequest": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "wim_url", + "wim_type" + ], + "additionalProperties": false + }, + "EditWimRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string" + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "SdnBasicProperties": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "SdnExtraProperties": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + "SdnInfo": { + "allOf": [ + { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ] + }, + "ArrayOfSdnInfo": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ] + } + }, + "CreateSdnRequest": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "required": [ + "name", + "type", + "ip", + "port", + "dpid" + ], + "additionalProperties": false + }, + "EditSdnRequest": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "additionalProperties": false + }, + "NsPmJobReportInfo": { + "type": "object", + "properties": { + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "objectInstanceId": { + "type": "string", + "format": "uuid" + }, + "performanceMetric": { + "type": "string" + }, + "performanceValue": { + "type": "object", + "properties": { + "performanceValue": { + "type": "object", + "properties": { + "performanceValue": { + "type": "number" + }, + "vnfMemberIndex": { + "type": "string" + }, + "vduName": { + "type": "string" + } + } + }, + "timestamp": { + "type": "number" + } + } + } + } + } + } + } + }, + "PduInterfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + }, + "PduInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + } + }, + "ArrayOfPduInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + } + } + }, + "CreatePduRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "type", + "interfaces" + ], + "additionalProperties": false + }, + "EditPduRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "K8sClusterNetList": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "K8sClusterInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ArrayOfK8sClusterInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "CreateK8sClusterRequest": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "credentials", + "vim_account", + "k8s_version", + "nets" + ], + "additionalProperties": false + }, + "EditK8sClusterRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "VcaInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + } + }, + "ArrayOfVcaInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "CreateVcaRequest": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "endpoints", + "user", + "secret", + "cacert", + "lxd-cloud", + "lxd-credentials", + "k8s-cloud", + "k8s-credentials" + ], + "additionalProperties": false + }, + "EditVcaRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "K8sRepoType": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "K8sRepoInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "ArrayOfK8sRepoInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + } + } + }, + "CreateK8sRepoRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name", + "type", + "url" + ], + "additionalProperties": false + }, + "NslcmSubscriptionResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "filter": { + "type": "object" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object" + } + } + }, + "NslcmSubscriptionInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "_admin": { + "type": "object" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "filter": { + "type": "object" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + } + }, + "ArrayOfNslcmSubscriptionInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "_admin": { + "type": "object" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "filter": { + "type": "object" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + } + } + }, + "NsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "nsdIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "vnfdIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "pnfdIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsInstanceIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsInstanceNames": { + "type": "array", + "items": { + "type": "string" + } + }, + "Nslcmsubschema": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "Authenticationschema": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + }, + "NslcmSubscriptionRequest": { + "type": "object", + "properties": { + "filter": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "CallbackUri" + ] + } + }, + "requestBodies": { + "CreateNsdInfoRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "NsdInfoModifications": { + "content": { + "application/json": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + } + } + } + }, + "NsDescriptor": { + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "NsPackage": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "CreateVnfPkgInfoRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "VnfPkgInfoModifications": { + "content": { + "application/json": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + } + } + } + }, + "VnfPackage": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "VnfDescriptor": { + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "InstantiateNsRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "ScaleNsRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scaleType": { + "type": "string", + "enum": [ + "SCALE_VNF" + ] + }, + "timeout_ns_scale": { + "description": "timeout for the scale operation", + "type": "integer" + }, + "scaleVnfData": { + "type": "object", + "properties": { + "scaleVnfType": { + "type": "string", + "enum": [ + "SCALE_IN", + "SCALE_OUT" + ] + }, + "scaleByStepData": { + "type": "object", + "properties": { + "scaling-group-descriptor": { + "type": "string" + }, + "scaling-policy": { + "type": "string" + }, + "member-vnf-index": { + "type": "string" + } + }, + "required": [ + "scaling-group-descriptor", + "member-vnf-index" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleVnfType", + "scaleByStepData" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleType", + "scaleVnfData" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "scaleType": { + "type": "string", + "enum": [ + "SCALE_VNF" + ] + }, + "timeout_ns_scale": { + "description": "timeout for the scale operation", + "type": "integer" + }, + "scaleVnfData": { + "type": "object", + "properties": { + "scaleVnfType": { + "type": "string", + "enum": [ + "SCALE_IN", + "SCALE_OUT" + ] + }, + "scaleByStepData": { + "type": "object", + "properties": { + "scaling-group-descriptor": { + "type": "string" + }, + "scaling-policy": { + "type": "string" + }, + "member-vnf-index": { + "type": "string" + } + }, + "required": [ + "scaling-group-descriptor", + "member-vnf-index" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleVnfType", + "scaleByStepData" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleType", + "scaleVnfData" + ], + "additionalProperties": false + } + } + } + }, + "TerminateNsRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "timeout_ns_terminate": { + "description": "timeout for terminate operation", + "type": "integer" + }, + "autoremove": { + "description": "remove network service if termination end without error", + "type": "boolean" + }, + "skip_terminate_primitives": { + "description": "Do not execute network service termination primitives", + "type": "boolean" + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "timeout_ns_terminate": { + "description": "timeout for terminate operation", + "type": "integer" + }, + "autoremove": { + "description": "remove network service if termination end without error", + "type": "boolean" + }, + "skip_terminate_primitives": { + "description": "Do not execute network service termination primitives", + "type": "boolean" + } + }, + "additionalProperties": false + } + } + } + }, + "CreateNstInfoRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "NetSliceTemplate": { + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "NetSlicePackage": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "NstInfoModifications": { + "content": { + "application/json": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "id": { + "description": "NST Identifier", + "type": "string" + }, + "name": { + "description": "NST Name", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "id": { + "description": "NST Identifier", + "type": "string" + }, + "name": { + "description": "NST Name", + "type": "string" + } + } + } + } + } + }, + "InstantiateNsiRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "TerminateNsiRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "terminationTime": { + "description": "Timestamp indicating the end time of the NSI, i.e. the NSI will be terminated\nautomatically at this timestamp. Cardinality \"0\" indicates the NSI termination\ntakes place immediately.\n", + "type": "string", + "format": "date-time" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "terminationTime": { + "description": "Timestamp indicating the end time of the NSI, i.e. the NSI will be terminated\nautomatically at this timestamp. Cardinality \"0\" indicates the NSI termination\ntakes place immediately.\n", + "type": "string", + "format": "date-time" + } + } + } + } + } + }, + "NsiActionRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "primitive": { + "type": "string" + }, + "primitive_params": { + "type": "object", + "additionalProperties": true + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "primitive", + "primitive_params" + ] + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "primitive": { + "type": "string" + }, + "primitive_params": { + "type": "object", + "additionalProperties": true + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "primitive", + "primitive_params" + ] + } + } + } + }, + "CreateTokenRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_id": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ] + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_id": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ] + } + } + } + }, + "CreateUserRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + } + } + } + }, + "EditUserRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + } + ] + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "add_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "remove_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + } + ] + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "add_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "remove_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + } + } + } + } + } + }, + "CreateProjectRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + }, + "EditProjectRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } + } + }, + "CreateRoleRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + }, + "EditRoleRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + } + }, + "additionalProperties": false + } + } + } + }, + "CreateVimRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + } + } + } + }, + "EditVimRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "CreateWimRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "wim_url", + "wim_type" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "wim_url", + "wim_type" + ], + "additionalProperties": false + } + } + } + }, + "EditWimRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string" + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string" + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "CreateSdnRequest": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "required": [ + "name", + "type", + "ip", + "port", + "dpid" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "required": [ + "name", + "type", + "ip", + "port", + "dpid" + ], + "additionalProperties": false + } + } + } + }, + "EditSdnRequest": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "additionalProperties": false + } + } + } + }, + "CreatePduRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "type", + "interfaces" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "type", + "interfaces" + ], + "additionalProperties": false + } + } + } + }, + "EditPduRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + } + } + }, + "CreateK8sClusterRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "credentials", + "vim_account", + "k8s_version", + "nets" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "credentials", + "vim_account", + "k8s_version", + "nets" + ], + "additionalProperties": false + } + } + } + }, + "EditK8sClusterRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + } + } + }, + "CreateVcaRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "endpoints", + "user", + "secret", + "cacert", + "lxd-cloud", + "lxd-credentials", + "k8s-cloud", + "k8s-credentials" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "endpoints", + "user", + "secret", + "cacert", + "lxd-cloud", + "lxd-credentials", + "k8s-cloud", + "k8s-credentials" + ], + "additionalProperties": false + } + } + } + }, + "EditVcaRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "CreateK8sRepoRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name", + "type", + "url" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name", + "type", + "url" + ], + "additionalProperties": false + } + } + } + }, + "NslcmSubscriptionRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "filter": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "CallbackUri" + ] + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "filter": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "CallbackUri" + ] + } + } + } + } + }, + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + } + } +} \ No newline at end of file -- GitLab From f30eeef5a60a403eecc3af3a5124d42d5fe2194a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 17:26:00 +0000 Subject: [PATCH 016/292] Update .gitlab-ci.yml, hive/token.json files --- .gitlab-ci.yml | 8 ++++++-- hive/token.json | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 hive/token.json diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 30c97ef..d7605fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,6 +25,7 @@ variables: #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}/osm" + DAST_API_OVERRIDES_FILE: /hive/token.json stages: - deploy @@ -162,12 +163,15 @@ debug2: script: - curl "https://${OSM_HOSTNAME}/osm" -v -k &> log.txt - cat log.txt - - + + + dast: stage: dast environment: name: $ENV + before_script: + - apifuzzer_fuzz: stage: fuzz diff --git a/hive/token.json b/hive/token.json new file mode 100644 index 0000000..b1fc643 --- /dev/null +++ b/hive/token.json @@ -0,0 +1,5 @@ +{ + "headers" : { + "Authorization" : "Bearer gAAAAABh4bHkEB9zcgPN0C_P902uVFUVV7L5YkGqaeu52jbtesPaF0xZjQ0Oogv667BJCTiy4nQB4AUs6HW3LCJvznhhJIq0xhby8c_vht_c5MohYpm-QeZ7_-epuWf-ljZl7IFxDkIqCnzbP1Xf9IKYgidrujqqpjXY5e8pymwOi145rBggxroqvEAmDLMR60IBekWhaq4r" + } +} -- GitLab From 9f4b51c2ae5bed20c6cc3da9c331ba6db15e0dd2 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 17:26:37 +0000 Subject: [PATCH 017/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d7605fb..ee4a9f5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -170,8 +170,6 @@ dast: stage: dast environment: name: $ENV - before_script: - - apifuzzer_fuzz: stage: fuzz -- GitLab From ccbce770e259e16b508955b197befe72c31bb932 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 17:27:21 +0000 Subject: [PATCH 018/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee4a9f5..43f73ff 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,8 +30,8 @@ variables: stages: - deploy - test - - fuzz - dast + - fuzz - cleanup - debug -- GitLab From 2c06ea69f855f04ca230f7bcb5a8b539c16ebe1d Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 17:37:25 +0000 Subject: [PATCH 019/292] Update utils.py, .gitlab-ci.yml files --- .gitlab-ci.yml | 2 +- utils.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 43f73ff..c77642e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,7 +25,7 @@ variables: #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}/osm" - DAST_API_OVERRIDES_FILE: /hive/token.json + DAST_API_OVERRIDES_FILE: hive/token.json stages: - deploy diff --git a/utils.py b/utils.py index c881c40..129d928 100644 --- a/utils.py +++ b/utils.py @@ -51,5 +51,13 @@ def gitlabRequest(method, endpoint, payload): res = requests.request("{}".format(method), "{}/{}{}".format(url, endpoint, filter), headers=header, data=payload) return res +def getAuthToken(self): + r = requests.post("https://{}:{}/osm/admin/v1/tokens".format(self.osm_hostname, self.port), verify=False, headers={"Accept":"application/json"}, json={ + "username": "admin", + "password": "admin", + "project": "admin" + }) + return r.json()["id"] + -- GitLab From 7383a6c3b319415460bc6eb3a1a88a4dd4d7e545 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 14 Jan 2022 19:07:33 +0000 Subject: [PATCH 020/292] Update .gitlab-ci.yml, hive/openapi.json, hive/token.json files --- .gitlab-ci.yml | 5 ++++- hive/openapi.json | 4 ++-- hive/token.json | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c77642e..a72573a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,7 +25,10 @@ variables: #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}/osm" - DAST_API_OVERRIDES_FILE: hive/token.json + #DAST_API_OVERRIDES_FILE: hive/token.json + FUZZAPI_OVERRIDES_ENV: hive/token.json + DAST_API_HTTP_USERNAME: admin + DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD stages: - deploy diff --git a/hive/openapi.json b/hive/openapi.json index 7631807..4c790cc 100644 --- a/hive/openapi.json +++ b/hive/openapi.json @@ -3,7 +3,7 @@ "servers": [ { "description": "OSM NB API", - "url": "https://osm.etsi.org/nbapi/v1.0.0" + "url": "https://osm.etsi.org/osm" } ], "info": { @@ -83694,4 +83694,4 @@ } } } -} \ No newline at end of file +} diff --git a/hive/token.json b/hive/token.json index b1fc643..6b7512e 100644 --- a/hive/token.json +++ b/hive/token.json @@ -1,5 +1,5 @@ { "headers" : { - "Authorization" : "Bearer gAAAAABh4bHkEB9zcgPN0C_P902uVFUVV7L5YkGqaeu52jbtesPaF0xZjQ0Oogv667BJCTiy4nQB4AUs6HW3LCJvznhhJIq0xhby8c_vht_c5MohYpm-QeZ7_-epuWf-ljZl7IFxDkIqCnzbP1Xf9IKYgidrujqqpjXY5e8pymwOi145rBggxroqvEAmDLMR60IBekWhaq4r" + "Authorization" : "Bearer gAAAAABh4cmnsSzuqJ71owrAmKFTzGif_R80G_RR9Gr21lsq4LGPe9sp1TFPeeCOszXEJZy2oxh_Vfnu9z5JLNLtFUZau7ZH-SkG4ejx9UQSKdVdoK_OM3a9haLyjgDScxHHGbW-GSwZKGnn2l3jO9msq_9HeOxPmoRwE3XUBPMUawqlnAZ6VQhGJMIHnRFZ9n8QW-5_3usw" } } -- GitLab From bc2287397b276cbe5b7a0f7b728ac2d6b115a965 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 09:33:50 +0000 Subject: [PATCH 021/292] Update hive/token.json --- hive/token.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hive/token.json b/hive/token.json index 6b7512e..d6c6279 100644 --- a/hive/token.json +++ b/hive/token.json @@ -1,5 +1,5 @@ { "headers" : { - "Authorization" : "Bearer gAAAAABh4cmnsSzuqJ71owrAmKFTzGif_R80G_RR9Gr21lsq4LGPe9sp1TFPeeCOszXEJZy2oxh_Vfnu9z5JLNLtFUZau7ZH-SkG4ejx9UQSKdVdoK_OM3a9haLyjgDScxHHGbW-GSwZKGnn2l3jO9msq_9HeOxPmoRwE3XUBPMUawqlnAZ6VQhGJMIHnRFZ9n8QW-5_3usw" + "Authorization" : "Bearer gAAAAABh5Tfqux9QFH1BEc8qlP8Bh7VnSZQ9MZ2c2LkfZcthA-UjMR07EsfZfBL46cFa6si1gidZJHE4o7ePBi_ybH9Pswl3YybzIwgWc8XKINXdJcnTpqPXf9ym2bVh04zo4bSkEpqcZtEJ6DqOSQGeMMkW6SX77OIt7wkLe6Zw8OcU6kIVlTp8vuYFqgkAwZiQc2a6D0L1" } } -- GitLab From 7754d1b953bb54dfd80d77dfd7e5cfe9d9c6ce0f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 10:06:15 +0000 Subject: [PATCH 022/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a72573a..f47629d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -40,7 +40,7 @@ stages: include: - template: DAST.gitlab-ci.yml - - template: API-Fuzzing.gitlab-ci.yml + - template: API-Fuzzing.latest.gitlab-ci.yml workflow: rules: -- GitLab From 434391115bb52ca5f93c396c8a75e56e7ead125c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 12:24:36 +0000 Subject: [PATCH 023/292] Update hive/token.json, .gitlab-ci.yml files --- .gitlab-ci.yml | 7 ++++--- hive/token.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f47629d..e4c9870 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,9 +26,10 @@ variables: FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}/osm" #DAST_API_OVERRIDES_FILE: hive/token.json - FUZZAPI_OVERRIDES_ENV: hive/token.json - DAST_API_HTTP_USERNAME: admin - DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD + #FUZZAPI_OVERRIDES_ENV: hive/token.json + FUZZAPI_OVERRIDES_FILE: hive/token.json + #DAST_API_HTTP_USERNAME: admin + #DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD stages: - deploy diff --git a/hive/token.json b/hive/token.json index d6c6279..92896ff 100644 --- a/hive/token.json +++ b/hive/token.json @@ -1,5 +1,5 @@ { "headers" : { - "Authorization" : "Bearer gAAAAABh5Tfqux9QFH1BEc8qlP8Bh7VnSZQ9MZ2c2LkfZcthA-UjMR07EsfZfBL46cFa6si1gidZJHE4o7ePBi_ybH9Pswl3YybzIwgWc8XKINXdJcnTpqPXf9ym2bVh04zo4bSkEpqcZtEJ6DqOSQGeMMkW6SX77OIt7wkLe6Zw8OcU6kIVlTp8vuYFqgkAwZiQc2a6D0L1" + "Authorization" : "Bearer gAAAAABh5V_HJkOkvWg_4Hee5cjtCnO1O7GABSw7MHr-lIutlcJYhadMi4yEyzVWmXLokL_nXXgLLRa7E0nVqv_-u5OBAWv9Y5cvFYmkHs8hAe4tsrwI5lF2YxSqkVq36oknyj2KTWO73Lwh58eq_R3_XacWjPcSaPYN4-5CK4xS7eunWSYmqxK0pKLtCxxMIsp-_iDA4Ode" } } -- GitLab From 0e2e1ff65603c671c71853e9cc0b05fe3dbffbae Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 12:33:17 +0000 Subject: [PATCH 024/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e4c9870..b62d392 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,8 +24,8 @@ variables: FUZZAPI_PROFILE: Quick-10 #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" FUZZAPI_OPENAPI: hive/openapi.json - FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}/osm" - #DAST_API_OVERRIDES_FILE: hive/token.json + FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" + DAST_API_OVERRIDES_FILE: hive/token.json #FUZZAPI_OVERRIDES_ENV: hive/token.json FUZZAPI_OVERRIDES_FILE: hive/token.json #DAST_API_HTTP_USERNAME: admin @@ -41,7 +41,7 @@ stages: include: - template: DAST.gitlab-ci.yml - - template: API-Fuzzing.latest.gitlab-ci.yml + - template: API-Fuzzing.gitlab-ci.yml workflow: rules: -- GitLab From 3568e7f031a98e48b61ebe8458d40cc8a36d18e8 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 13:36:22 +0000 Subject: [PATCH 025/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b62d392..278d888 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,6 +30,8 @@ variables: FUZZAPI_OVERRIDES_FILE: hive/token.json #DAST_API_HTTP_USERNAME: admin #DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD + FUZZAPI_HTTP_USERNAME: admin + FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD stages: - deploy -- GitLab From 3572f359153dd0f304c09b82f0e12f2576c539ed Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 13:38:06 +0000 Subject: [PATCH 026/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 278d888..b6482c9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,11 +25,11 @@ variables: #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" - DAST_API_OVERRIDES_FILE: hive/token.json + #DAST_API_OVERRIDES_FILE: hive/token.json #FUZZAPI_OVERRIDES_ENV: hive/token.json - FUZZAPI_OVERRIDES_FILE: hive/token.json - #DAST_API_HTTP_USERNAME: admin - #DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD + #FUZZAPI_OVERRIDES_FILE: hive/token.json + DAST_API_HTTP_USERNAME: admin + DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD FUZZAPI_HTTP_USERNAME: admin FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD -- GitLab From d06126542fca6ea712948847c4b276490a5dd8a6 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 14:30:47 +0000 Subject: [PATCH 027/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b6482c9..5917fc8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,7 +23,7 @@ variables: DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" FUZZAPI_PROFILE: Quick-10 #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" - FUZZAPI_OPENAPI: hive/openapi.json + #FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" #DAST_API_OVERRIDES_FILE: hive/token.json #FUZZAPI_OVERRIDES_ENV: hive/token.json @@ -32,12 +32,13 @@ variables: DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD FUZZAPI_HTTP_USERNAME: admin FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD + OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false stages: - deploy - test - - dast - fuzz + - dast - cleanup - debug @@ -179,8 +180,13 @@ dast: apifuzzer_fuzz: stage: fuzz + FUZZAPI_OPENAPI: openapi.json environment: name: $ENV + before_script: + - echo "Preparing API Fuzzing" + - wget $OPENAPI_URL -O openapi.yaml + - yq eval -o=j openapi.yaml > openapi.json -- GitLab From 782b76c395fa2bfc76a0e3f2ce793c8cef2f402c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 14:32:29 +0000 Subject: [PATCH 028/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5917fc8..332d853 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,6 +33,7 @@ variables: FUZZAPI_HTTP_USERNAME: admin FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false + FUZZAPI_OPENAPI: openapi.json stages: - deploy @@ -180,7 +181,6 @@ dast: apifuzzer_fuzz: stage: fuzz - FUZZAPI_OPENAPI: openapi.json environment: name: $ENV before_script: -- GitLab From 63442275a7490c86b7f0d2cc62adbbf80d74c29f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 14:34:39 +0000 Subject: [PATCH 029/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 332d853..a5b15f3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -185,6 +185,7 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" + - snap install yq - wget $OPENAPI_URL -O openapi.yaml - yq eval -o=j openapi.yaml > openapi.json -- GitLab From bbc0fe35fde61b172e4ac1c58de5cb824b10be9b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 14:37:30 +0000 Subject: [PATCH 030/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a5b15f3..dda1752 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -185,7 +185,8 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" - - snap install yq + - 'wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY}.tar.gz -O - |\ + tar xz && mv ${BINARY} /usr/bin/yq' - wget $OPENAPI_URL -O openapi.yaml - yq eval -o=j openapi.yaml > openapi.json -- GitLab From 7f7f740b7ad29d2abdb898797dd3469cdc8e0218 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 14:40:34 +0000 Subject: [PATCH 031/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dda1752..0f74ebf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -185,8 +185,7 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" - - 'wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY}.tar.gz -O - |\ - tar xz && mv ${BINARY} /usr/bin/yq' + - wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - wget $OPENAPI_URL -O openapi.yaml - yq eval -o=j openapi.yaml > openapi.json -- GitLab From 2fef0c2c63e1eec7c81ca5a2fe9c3ec9cc12532b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 14:45:35 +0000 Subject: [PATCH 032/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0f74ebf..9c20c1a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -185,7 +185,9 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" - - wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq + - sudo apt install snapd + - snap install yq + #- wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - wget $OPENAPI_URL -O openapi.yaml - yq eval -o=j openapi.yaml > openapi.json -- GitLab From 2f9e379f1371fe1c85fca6c34312a3a3cedcd736 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 15:00:27 +0000 Subject: [PATCH 033/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9c20c1a..c4da799 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -185,8 +185,7 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" - - sudo apt install snapd - - snap install yq + - apk add yq #- wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - wget $OPENAPI_URL -O openapi.yaml - yq eval -o=j openapi.yaml > openapi.json -- GitLab From 6bdf8a7b7bfc87d299b0ef6c9ee24774c277d24b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 15:06:01 +0000 Subject: [PATCH 034/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c4da799..b80110c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -186,6 +186,7 @@ apifuzzer_fuzz: before_script: - echo "Preparing API Fuzzing" - apk add yq + - yq --help #- wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - wget $OPENAPI_URL -O openapi.yaml - yq eval -o=j openapi.yaml > openapi.json -- GitLab From 9244162537d2e29ae3dad1a14d703f6429086562 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 15:10:06 +0000 Subject: [PATCH 035/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b80110c..2745fbc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -189,7 +189,9 @@ apifuzzer_fuzz: - yq --help #- wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - wget $OPENAPI_URL -O openapi.yaml - - yq eval -o=j openapi.yaml > openapi.json + #- yq eval -o=j openapi.yaml > openapi.json + - yq v -j openapi.yaml + - yq v -j openapi.yaml > openapi.json -- GitLab From 2d6b05f8075ef5d4dcff2fecb4dba62253d3febe Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 15:12:11 +0000 Subject: [PATCH 036/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2745fbc..27a9214 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -192,6 +192,7 @@ apifuzzer_fuzz: #- yq eval -o=j openapi.yaml > openapi.json - yq v -j openapi.yaml - yq v -j openapi.yaml > openapi.json + - cat openapi.json -- GitLab From 85c45335f7546f708603cd4bba6faaa01891805b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 15:38:02 +0000 Subject: [PATCH 037/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 27a9214..a413fcc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -191,7 +191,7 @@ apifuzzer_fuzz: - wget $OPENAPI_URL -O openapi.yaml #- yq eval -o=j openapi.yaml > openapi.json - yq v -j openapi.yaml - - yq v -j openapi.yaml > openapi.json + - yq r -j openapi.yaml > openapi.json - cat openapi.json -- GitLab From b7fc5381edb2f4baf4a8a99ab46280a5ca0ba328 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 17 Jan 2022 15:47:50 +0000 Subject: [PATCH 038/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a413fcc..7f51f44 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -185,7 +185,9 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" + - apk add yq + - apk update - yq --help #- wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - wget $OPENAPI_URL -O openapi.yaml -- GitLab From 5a359231b985d885e031b83808b37f92a4afa7bc Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 08:50:47 +0000 Subject: [PATCH 039/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7f51f44..eb0ec9b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -149,7 +149,7 @@ testing: - python3 logs.py debug1: - stage: debug + #stage: debug image: ubuntu:20.04 environment: name: $ENV @@ -160,7 +160,7 @@ debug1: debug2: - stage: debug + #stage: debug tags: - openstack environment: @@ -180,6 +180,10 @@ dast: name: $ENV apifuzzer_fuzz: + artifacts: + when: always + paths: + - openapi.json stage: fuzz environment: name: $ENV @@ -187,12 +191,12 @@ apifuzzer_fuzz: - echo "Preparing API Fuzzing" - apk add yq - - apk update + #- apk update - yq --help #- wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - wget $OPENAPI_URL -O openapi.yaml #- yq eval -o=j openapi.yaml > openapi.json - - yq v -j openapi.yaml + #- yq v -j openapi.yaml - yq r -j openapi.yaml > openapi.json - cat openapi.json -- GitLab From 87c6c4c4996b332c78b77932a7914d0e73e7a398 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 08:51:54 +0000 Subject: [PATCH 040/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eb0ec9b..f43a45d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -148,29 +148,6 @@ testing: - source hive/openstack-etsi.rc - python3 logs.py -debug1: - #stage: debug - image: ubuntu:20.04 - environment: - name: $ENV - script: - - apt-get update - - apt-get install curl -y - - curl "https://${OSM_HOSTNAME}/osm" -v -k - - -debug2: - #stage: debug - tags: - - openstack - environment: - name: $ENV - artifacts: - paths: - - log.txt - script: - - curl "https://${OSM_HOSTNAME}/osm" -v -k &> log.txt - - cat log.txt -- GitLab From 743cb5ebe53dca442663844905cacacdf9a3fcef Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 09:04:20 +0000 Subject: [PATCH 041/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f43a45d..958f7ef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -157,6 +157,8 @@ dast: name: $ENV apifuzzer_fuzz: + timeout: + 2 hours artifacts: when: always paths: -- GitLab From 3de7e18e0f1e95d29a1097635516a5b262c4c578 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 09:15:13 +0000 Subject: [PATCH 042/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 958f7ef..006ded7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -159,10 +159,6 @@ dast: apifuzzer_fuzz: timeout: 2 hours - artifacts: - when: always - paths: - - openapi.json stage: fuzz environment: name: $ENV -- GitLab From 9359a6fac6cc93bc280670e737c6132e90dbc3d6 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 09:40:37 +0000 Subject: [PATCH 043/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 006ded7..5341e7b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -172,7 +172,7 @@ apifuzzer_fuzz: - wget $OPENAPI_URL -O openapi.yaml #- yq eval -o=j openapi.yaml > openapi.json #- yq v -j openapi.yaml - - yq r -j openapi.yaml > openapi.json + - yq r -j -P openapi.yaml > openapi.json - cat openapi.json -- GitLab From 6439d685058dc4930fbf5352e3e31357a917599b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 09:52:32 +0000 Subject: [PATCH 044/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5341e7b..a190ba1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,7 +23,7 @@ variables: DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" FUZZAPI_PROFILE: Quick-10 #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" - #FUZZAPI_OPENAPI: hive/openapi.json + FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" #DAST_API_OVERRIDES_FILE: hive/token.json #FUZZAPI_OVERRIDES_ENV: hive/token.json @@ -33,7 +33,7 @@ variables: FUZZAPI_HTTP_USERNAME: admin FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false - FUZZAPI_OPENAPI: openapi.json + #FUZZAPI_OPENAPI: openapi.json stages: - deploy -- GitLab From 371ba8e234fe96d4ef1cc385c4cf915039cd85b9 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 10:38:29 +0000 Subject: [PATCH 045/292] Update utils.py, .gitlab-ci.yml files --- .gitlab-ci.yml | 17 ++++++++++------- utils.py | 7 ++++++- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a190ba1..4aa5ab1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,9 +30,12 @@ variables: #FUZZAPI_OVERRIDES_FILE: hive/token.json DAST_API_HTTP_USERNAME: admin DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD - FUZZAPI_HTTP_USERNAME: admin - FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD + #FUZZAPI_HTTP_USERNAME: admin + #FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false + FUZZAPI_OVERRIDES_FILE: token.json + FUZZAPI_OVERRIDES_CMD: python3 -c 'from utils import *; getAuthToken()' + FUZZAPI_OVERRIDES_INTERVAL: 300 #FUZZAPI_OPENAPI: openapi.json stages: @@ -165,15 +168,15 @@ apifuzzer_fuzz: before_script: - echo "Preparing API Fuzzing" - - apk add yq + #- apk add yq #- apk update - - yq --help + #- yq --help #- wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - - wget $OPENAPI_URL -O openapi.yaml + # - wget $OPENAPI_URL -O openapi.yaml #- yq eval -o=j openapi.yaml > openapi.json #- yq v -j openapi.yaml - - yq r -j -P openapi.yaml > openapi.json - - cat openapi.json + #- yq r -j -P openapi.yaml > openapi.json + #- cat openapi.json diff --git a/utils.py b/utils.py index 129d928..4afbe6d 100644 --- a/utils.py +++ b/utils.py @@ -3,6 +3,7 @@ import os import time import subprocess import sys +import json def cleanVM(): if (os.environ.get('OS_TOKEN') is None): @@ -57,7 +58,11 @@ def getAuthToken(self): "password": "admin", "project": "admin" }) - return r.json()["id"] + token = r.json()["id"] + obj = '{"headers": {"Authorization": "Bearer %s"}}' % (token) + f = open("openapi.json", "w") + f.write(obj) + f.close() -- GitLab From 14231992ceddff94a32699b0b4c76c2da90962eb Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 10:50:43 +0000 Subject: [PATCH 046/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4aa5ab1..d5b4a84 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,8 +28,8 @@ variables: #DAST_API_OVERRIDES_FILE: hive/token.json #FUZZAPI_OVERRIDES_ENV: hive/token.json #FUZZAPI_OVERRIDES_FILE: hive/token.json - DAST_API_HTTP_USERNAME: admin - DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD + #DAST_API_HTTP_USERNAME: admin + #DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD #FUZZAPI_HTTP_USERNAME: admin #FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false -- GitLab From 46399747c65b200d1d8b5121332c175791f7d52b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 11:20:32 +0000 Subject: [PATCH 047/292] Update utils.py --- utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.py b/utils.py index 4afbe6d..17911fc 100644 --- a/utils.py +++ b/utils.py @@ -60,7 +60,7 @@ def getAuthToken(self): }) token = r.json()["id"] obj = '{"headers": {"Authorization": "Bearer %s"}}' % (token) - f = open("openapi.json", "w") + f = open("token.json", "w") f.write(obj) f.close() -- GitLab From 39d9cb19f67af0faf235740ba94a10cfa9c8856e Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 11:25:56 +0000 Subject: [PATCH 048/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d5b4a84..9d1aff9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,7 +33,7 @@ variables: #FUZZAPI_HTTP_USERNAME: admin #FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false - FUZZAPI_OVERRIDES_FILE: token.json + FUZZAPI_OVERRIDES_FILE: hive/token.json FUZZAPI_OVERRIDES_CMD: python3 -c 'from utils import *; getAuthToken()' FUZZAPI_OVERRIDES_INTERVAL: 300 #FUZZAPI_OPENAPI: openapi.json -- GitLab From ea225331dc266b4e84c93dd3339f5d7a23311a25 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 11:56:46 +0000 Subject: [PATCH 049/292] Update hive/token.json --- hive/token.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hive/token.json b/hive/token.json index 92896ff..d24523d 100644 --- a/hive/token.json +++ b/hive/token.json @@ -1,5 +1,5 @@ { "headers" : { - "Authorization" : "Bearer gAAAAABh5V_HJkOkvWg_4Hee5cjtCnO1O7GABSw7MHr-lIutlcJYhadMi4yEyzVWmXLokL_nXXgLLRa7E0nVqv_-u5OBAWv9Y5cvFYmkHs8hAe4tsrwI5lF2YxSqkVq36oknyj2KTWO73Lwh58eq_R3_XacWjPcSaPYN4-5CK4xS7eunWSYmqxK0pKLtCxxMIsp-_iDA4Ode" + "Authorization" : "Bearer gAAAAABh5qrwrtFblGQyVddv717sVW55Q5Ta1WkSXfOb7lWNq_abjar0G6Z2wmaDhMRkJ9-klSSjLEgdyI-Rf0DoenC2PdU6r4j27lazNjVMsTh70fo3FsA7rdEJLT7TalXfr_fdmrY7AC1IDICdMKBI_uyFhmNgN_hKOfBywY0twX6lOhSFIxrub21ewRCBzQ58a-vvISK2" } } -- GitLab From 3412af2c352a36ba620103805d88c0da51308016 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 12:01:46 +0000 Subject: [PATCH 050/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9d1aff9..1c9184c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,8 +23,7 @@ variables: DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" FUZZAPI_PROFILE: Quick-10 #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" - FUZZAPI_OPENAPI: hive/openapi.json - FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" + #DAST_API_OVERRIDES_FILE: hive/token.json #FUZZAPI_OVERRIDES_ENV: hive/token.json #FUZZAPI_OVERRIDES_FILE: hive/token.json @@ -33,10 +32,15 @@ variables: #FUZZAPI_HTTP_USERNAME: admin #FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false + + #FUZZAPI_OPENAPI: openapi.json + + FUZZAPI_OPENAPI: hive/openapi.json + FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" + FUZZAPI_OVERRIDES_FILE: hive/token.json - FUZZAPI_OVERRIDES_CMD: python3 -c 'from utils import *; getAuthToken()' + FUZZAPI_OVERRIDES_CMD: python3 -c 'from utils import *; getAuthToken() FUZZAPI_OVERRIDES_INTERVAL: 300 - #FUZZAPI_OPENAPI: openapi.json stages: - deploy -- GitLab From 650a2be2584666b09bbea3c827ce9c18274f2da4 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 12:13:19 +0000 Subject: [PATCH 051/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1c9184c..cf4da62 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,8 +39,8 @@ variables: FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: hive/token.json - FUZZAPI_OVERRIDES_CMD: python3 -c 'from utils import *; getAuthToken() - FUZZAPI_OVERRIDES_INTERVAL: 300 + #FUZZAPI_OVERRIDES_CMD: python3 -c 'from utils import *; getAuthToken()' + #FUZZAPI_OVERRIDES_INTERVAL: 300 stages: - deploy @@ -48,7 +48,6 @@ stages: - fuzz - dast - cleanup - - debug include: - template: DAST.gitlab-ci.yml -- GitLab From 8021e043bf853fb0fff3828d0fddce8ef3d7a7df Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 12:30:13 +0000 Subject: [PATCH 052/292] Update newToken.py, .gitlab-ci.yml files --- .gitlab-ci.yml | 6 +++--- newToken.py | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 newToken.py diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cf4da62..58fa700 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,7 @@ variables: SSH_KEY: $SSH_KEY GITLAB_API: $GITLAB_API GITLAB_TOKEN: $GITLAB_TOKEN - ENV: "staging" + ENV: "testing" PIPELINE: "SECURITY" DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" FUZZAPI_PROFILE: Quick-10 @@ -39,8 +39,8 @@ variables: FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: hive/token.json - #FUZZAPI_OVERRIDES_CMD: python3 -c 'from utils import *; getAuthToken()' - #FUZZAPI_OVERRIDES_INTERVAL: 300 + FUZZAPI_OVERRIDES_CMD: newToken.py + FUZZAPI_OVERRIDES_INTERVAL: 300 stages: - deploy diff --git a/newToken.py b/newToken.py new file mode 100644 index 0000000..5ae9735 --- /dev/null +++ b/newToken.py @@ -0,0 +1,12 @@ +import requests + +r = requests.post("https://{}:{}/osm/admin/v1/tokens".format(self.osm_hostname, self.port), verify=False, headers={"Accept":"application/json"}, json={ + "username": "admin", + "password": "admin", + "project": "admin" + }) + token = r.json()["id"] + obj = '{"headers": {"Authorization": "Bearer %s"}}' % (token) + f = open("token.json", "w") + f.write(obj) + f.close() \ No newline at end of file -- GitLab From b2b83321fd1ec8fb096495b7d84012c9fbcf9e28 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 12:31:05 +0000 Subject: [PATCH 053/292] Update newToken.py --- newToken.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/newToken.py b/newToken.py index 5ae9735..93bb195 100644 --- a/newToken.py +++ b/newToken.py @@ -5,8 +5,8 @@ r = requests.post("https://{}:{}/osm/admin/v1/tokens".format(self.osm_hostname, "password": "admin", "project": "admin" }) - token = r.json()["id"] - obj = '{"headers": {"Authorization": "Bearer %s"}}' % (token) - f = open("token.json", "w") - f.write(obj) - f.close() \ No newline at end of file +token = r.json()["id"] +obj = '{"headers": {"Authorization": "Bearer %s"}}' % (token) +f = open("token.json", "w") +f.write(obj) +f.close() -- GitLab From f716bac8a5f4f2bde0f580b45041426def8e4e23 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 12:32:13 +0000 Subject: [PATCH 054/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 58fa700..612bf50 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,7 +38,7 @@ variables: FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" - FUZZAPI_OVERRIDES_FILE: hive/token.json + FUZZAPI_OVERRIDES_FILE: token.json FUZZAPI_OVERRIDES_CMD: newToken.py FUZZAPI_OVERRIDES_INTERVAL: 300 -- GitLab From cbef89692edc06a6534001531a4bd14c309ef67c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 12:35:26 +0000 Subject: [PATCH 055/292] Update newToken.py --- newToken.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/newToken.py b/newToken.py index 93bb195..f6bdd22 100644 --- a/newToken.py +++ b/newToken.py @@ -1,6 +1,7 @@ import requests +import os -r = requests.post("https://{}:{}/osm/admin/v1/tokens".format(self.osm_hostname, self.port), verify=False, headers={"Accept":"application/json"}, json={ +r = requests.post("https://{}/osm/admin/v1/tokens".format(os.environ.get('OSM_HOSTNAME')), verify=False, headers={"Accept":"application/json"}, json={ "username": "admin", "password": "admin", "project": "admin" -- GitLab From fdeb99fc3cdab7f826811958cdbc10d6568259ca Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 12:41:23 +0000 Subject: [PATCH 056/292] Update newToken.py, .gitlab-ci.yml files --- .gitlab-ci.yml | 3 ++- newToken.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 612bf50..3bf339a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,7 @@ variables: SSH_KEY: $SSH_KEY GITLAB_API: $GITLAB_API GITLAB_TOKEN: $GITLAB_TOKEN - ENV: "testing" + ENV: "New" PIPELINE: "SECURITY" DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" FUZZAPI_PROFILE: Quick-10 @@ -170,6 +170,7 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" + - chmod +x newToken.py #- apk add yq #- apk update diff --git a/newToken.py b/newToken.py index f6bdd22..7a99550 100644 --- a/newToken.py +++ b/newToken.py @@ -1,3 +1,4 @@ +#!/usr/bin/python3 import requests import os -- GitLab From 7515941fd73c3733f7e0a375e5d7983c465cb849 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 16:07:21 +0000 Subject: [PATCH 057/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3bf339a..f8afdb3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -164,8 +164,10 @@ dast: apifuzzer_fuzz: timeout: - 2 hours + 3 hours stage: fuzz + artifacts: + when: always environment: name: $ENV before_script: -- GitLab From 54cca52024684571b7b4dd015916511d4561c841 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 16:09:35 +0000 Subject: [PATCH 058/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f8afdb3..ae4f44e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,8 +56,8 @@ include: workflow: rules: - if: $CI_MERGE_REQUEST_ID - when: never - - if: $CI_COMMIT_BRANCH + #when: never + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH deploy: -- GitLab From dba2cbce5bbf98142d5b7f02df2f09c913aa765a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 16:16:51 +0000 Subject: [PATCH 059/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ae4f44e..7883b54 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,7 +39,7 @@ variables: FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: newToken.py + FUZZAPI_OVERRIDES_CMD: python3 newToken.py FUZZAPI_OVERRIDES_INTERVAL: 300 stages: -- GitLab From 3419f1d70520616781bd108030bba34ece52c99f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 16:18:32 +0000 Subject: [PATCH 060/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7883b54..6566f92 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -55,8 +55,9 @@ include: workflow: rules: - - if: $CI_MERGE_REQUEST_ID - #when: never + - if: $CI_COMMIT_MESSAGE =~ /-draft$/ + when: never + - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH -- GitLab From a450a576e5185e1f801c9ec6fba56486ae441db9 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 16:19:33 +0000 Subject: [PATCH 061/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6566f92..7e9b166 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,6 +59,7 @@ workflow: when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_BRANCH deploy: -- GitLab From 3087678ceadc77dc12c44ba5cfb1196af2ec498f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 16:21:52 +0000 Subject: [PATCH 062/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7e9b166..38bd0dd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -175,6 +175,8 @@ apifuzzer_fuzz: before_script: - echo "Preparing API Fuzzing" - chmod +x newToken.py + - python3 newToken.py + - cat token.json #- apk add yq #- apk update -- GitLab From 9917cdaea8389c80c53c5d817f23858a0d4f32a8 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 17:36:47 +0000 Subject: [PATCH 063/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 38bd0dd..a5257ee 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -174,6 +174,8 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" + - apk add curl + - curl $OSM_OSTNAME -k -v - chmod +x newToken.py - python3 newToken.py - cat token.json -- GitLab From 8d208b00cdd310511cf44ca317e74496d8d99e9e Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 17:37:41 +0000 Subject: [PATCH 064/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a5257ee..ae4c23e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -175,7 +175,7 @@ apifuzzer_fuzz: before_script: - echo "Preparing API Fuzzing" - apk add curl - - curl $OSM_OSTNAME -k -v + - curl $OSM_HOSTNAME -k -v - chmod +x newToken.py - python3 newToken.py - cat token.json -- GitLab From d72f17ea4db22ea2a8c73249e7edb49e9c089e08 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 17:42:11 +0000 Subject: [PATCH 065/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ae4c23e..4e2c410 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -176,9 +176,9 @@ apifuzzer_fuzz: - echo "Preparing API Fuzzing" - apk add curl - curl $OSM_HOSTNAME -k -v - - chmod +x newToken.py - - python3 newToken.py - - cat token.json + #- chmod +x newToken.py + #- python3 newToken.py + #- cat token.json #- apk add yq #- apk update -- GitLab From 59881b000e82a0f14c8c3f96d6f4f0114a0350a9 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 17:43:48 +0000 Subject: [PATCH 066/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e2c410..e424819 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -174,8 +174,8 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" - - apk add curl - - curl $OSM_HOSTNAME -k -v + #- apk add curl + #- curl $OSM_HOSTNAME -k -v #- chmod +x newToken.py #- python3 newToken.py #- cat token.json -- GitLab From 153b21b7d3f940cae655957223e8ea5822250fca Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 17:47:05 +0000 Subject: [PATCH 067/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e424819..db77ea7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -175,7 +175,7 @@ apifuzzer_fuzz: before_script: - echo "Preparing API Fuzzing" #- apk add curl - #- curl $OSM_HOSTNAME -k -v + - curl https://nbi.172.21.248.230.nip.io/osm/ -k -v #- chmod +x newToken.py #- python3 newToken.py #- cat token.json -- GitLab From 2f8805659dcd77cee4d59a64f0a4e8ff7b85608b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 17:47:37 +0000 Subject: [PATCH 068/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db77ea7..50430ab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -174,7 +174,7 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" - #- apk add curl + - apk add curl - curl https://nbi.172.21.248.230.nip.io/osm/ -k -v #- chmod +x newToken.py #- python3 newToken.py -- GitLab From 558b53acb445d410cc149ebefb5f0263a23221be Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 17:49:57 +0000 Subject: [PATCH 069/292] Update newToken.py --- newToken.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/newToken.py b/newToken.py index 7a99550..9c50fe3 100644 --- a/newToken.py +++ b/newToken.py @@ -2,7 +2,7 @@ import requests import os -r = requests.post("https://{}/osm/admin/v1/tokens".format(os.environ.get('OSM_HOSTNAME')), verify=False, headers={"Accept":"application/json"}, json={ +r = requests.post("https://{}/osm/admin/v1/tokens".format('nbi.172.21.248.230.nip.io'), verify=False, headers={"Accept":"application/json"}, json={ "username": "admin", "password": "admin", "project": "admin" -- GitLab From 8af99413725f4d7b87f8a8392de7a11a18034f97 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 17:50:13 +0000 Subject: [PATCH 070/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 50430ab..3320f64 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -177,8 +177,8 @@ apifuzzer_fuzz: - apk add curl - curl https://nbi.172.21.248.230.nip.io/osm/ -k -v #- chmod +x newToken.py - #- python3 newToken.py - #- cat token.json + - python3 newToken.py + - cat token.json #- apk add yq #- apk update -- GitLab From d2c5786798b50a7340c6d8e9f84f3e0520e7d283 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 17:54:08 +0000 Subject: [PATCH 071/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3320f64..6becdc5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -174,8 +174,8 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" - - apk add curl - - curl https://nbi.172.21.248.230.nip.io/osm/ -k -v + #- apk add curl + #- curl https://nbi.172.21.248.230.nip.io/osm/ -k -v #- chmod +x newToken.py - python3 newToken.py - cat token.json -- GitLab From 08beb4f94981641b70265798179f0d0b9a2922f1 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 18:07:54 +0000 Subject: [PATCH 072/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6becdc5..a1f54d0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -179,6 +179,7 @@ apifuzzer_fuzz: #- chmod +x newToken.py - python3 newToken.py - cat token.json + #- apk add yq #- apk update -- GitLab From d20f61f1a284ea677f7bfd954fc329a69ea62b99 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 18:19:19 +0000 Subject: [PATCH 073/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a1f54d0..7205ae8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -36,7 +36,7 @@ variables: #FUZZAPI_OPENAPI: openapi.json FUZZAPI_OPENAPI: hive/openapi.json - FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" + FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" FUZZAPI_OVERRIDES_FILE: token.json FUZZAPI_OVERRIDES_CMD: python3 newToken.py -- GitLab From 50ee711ba3e2e5446b993830f99553239def6db1 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 18:20:48 +0000 Subject: [PATCH 074/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7205ae8..dd7c630 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,7 +38,7 @@ variables: FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" - FUZZAPI_OVERRIDES_FILE: token.json + FUZZAPI_OVERRIDES_FILE: hive/token.json FUZZAPI_OVERRIDES_CMD: python3 newToken.py FUZZAPI_OVERRIDES_INTERVAL: 300 -- GitLab From 3f49813a28c53c48ca29b5a9c31c2c95edb84c41 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 19:34:23 +0000 Subject: [PATCH 075/292] Update hive/token.json --- hive/token.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hive/token.json b/hive/token.json index d24523d..9d1c54d 100644 --- a/hive/token.json +++ b/hive/token.json @@ -1,5 +1,5 @@ { "headers" : { - "Authorization" : "Bearer gAAAAABh5qrwrtFblGQyVddv717sVW55Q5Ta1WkSXfOb7lWNq_abjar0G6Z2wmaDhMRkJ9-klSSjLEgdyI-Rf0DoenC2PdU6r4j27lazNjVMsTh70fo3FsA7rdEJLT7TalXfr_fdmrY7AC1IDICdMKBI_uyFhmNgN_hKOfBywY0twX6lOhSFIxrub21ewRCBzQ58a-vvISK2" + "Authorization" : "Bearer gAAAAABh5xXPwM76vwvKTE6TOaMxkj1YuvqDfh3BZzU760lARe4ejey_7Tyrhyef0HTAAqTotn-IHjrjn9yLT4wP7HZYMze5TaGoVBY0zud5JO0MckhWTM95ZBLx4kpvJhi7CVJtob00mNEYjqguMGs5QEoZUb5O96y2Iwty4hve5GNA0fKz6CskR63XwLoviB_q3J9sSv4f" } } -- GitLab From f4b35a928fd308981df78324c960d03380bb88cd Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 19:35:22 +0000 Subject: [PATCH 076/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dd7c630..d921100 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,7 +39,7 @@ variables: FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" FUZZAPI_OVERRIDES_FILE: hive/token.json - FUZZAPI_OVERRIDES_CMD: python3 newToken.py + FUZZAPI_OVERRIDES_CMD: newToken.py FUZZAPI_OVERRIDES_INTERVAL: 300 stages: -- GitLab From 5a58bdce0ea38d60390facb95dbe048629633c54 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 19:45:18 +0000 Subject: [PATCH 077/292] Update .gitlab-ci.yml, newToken.py files --- .gitlab-ci.yml | 2 +- newToken.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d921100..9fbb88a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,7 +38,7 @@ variables: FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" - FUZZAPI_OVERRIDES_FILE: hive/token.json + FUZZAPI_OVERRIDES_FILE: token.json FUZZAPI_OVERRIDES_CMD: newToken.py FUZZAPI_OVERRIDES_INTERVAL: 300 diff --git a/newToken.py b/newToken.py index 9c50fe3..7a99550 100644 --- a/newToken.py +++ b/newToken.py @@ -2,7 +2,7 @@ import requests import os -r = requests.post("https://{}/osm/admin/v1/tokens".format('nbi.172.21.248.230.nip.io'), verify=False, headers={"Accept":"application/json"}, json={ +r = requests.post("https://{}/osm/admin/v1/tokens".format(os.environ.get('OSM_HOSTNAME')), verify=False, headers={"Accept":"application/json"}, json={ "username": "admin", "password": "admin", "project": "admin" -- GitLab From a4010898a310c7031b839d42b535c9aa683ccac0 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 20:11:35 +0000 Subject: [PATCH 078/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9fbb88a..d866e84 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,7 @@ variables: SSH_KEY: $SSH_KEY GITLAB_API: $GITLAB_API GITLAB_TOKEN: $GITLAB_TOKEN - ENV: "New" + ENV: "staging" PIPELINE: "SECURITY" DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" FUZZAPI_PROFILE: Quick-10 @@ -35,7 +35,7 @@ variables: #FUZZAPI_OPENAPI: openapi.json - FUZZAPI_OPENAPI: hive/openapi.json + FUZZAPI_OPENAPI: openapi.json FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" FUZZAPI_OVERRIDES_FILE: token.json @@ -181,15 +181,15 @@ apifuzzer_fuzz: - cat token.json - #- apk add yq + - apk add yq #- apk update #- yq --help #- wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - # - wget $OPENAPI_URL -O openapi.yaml + - wget $OPENAPI_URL -O openapi.yaml #- yq eval -o=j openapi.yaml > openapi.json #- yq v -j openapi.yaml - #- yq r -j -P openapi.yaml > openapi.json - #- cat openapi.json + - yq r -j -P openapi.yaml > openapi.json + - cat openapi.json -- GitLab From 6ecb297fdc39d5a744b62e7d03e16db5fd55d903 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 20:53:41 +0000 Subject: [PATCH 079/292] Update .gitlab-ci.yml, hive/token.json files --- .gitlab-ci.yml | 7 +++++-- hive/token.json | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d866e84..8787540 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,7 +20,10 @@ variables: GITLAB_TOKEN: $GITLAB_TOKEN ENV: "staging" PIPELINE: "SECURITY" - DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" + #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" + DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io/osm" + DAST_API_OVERRIDES_FILE: hive/token.json + FUZZAPI_PROFILE: Quick-10 #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" @@ -45,8 +48,8 @@ variables: stages: - deploy - test - - fuzz - dast + - fuzz - cleanup include: diff --git a/hive/token.json b/hive/token.json index 9d1c54d..d34135f 100644 --- a/hive/token.json +++ b/hive/token.json @@ -1,5 +1,5 @@ { "headers" : { - "Authorization" : "Bearer gAAAAABh5xXPwM76vwvKTE6TOaMxkj1YuvqDfh3BZzU760lARe4ejey_7Tyrhyef0HTAAqTotn-IHjrjn9yLT4wP7HZYMze5TaGoVBY0zud5JO0MckhWTM95ZBLx4kpvJhi7CVJtob00mNEYjqguMGs5QEoZUb5O96y2Iwty4hve5GNA0fKz6CskR63XwLoviB_q3J9sSv4f" + "Authorization" : "Bearer gAAAAABh5yinxC9M0UjWHo4PSnO3jIWSjo9xo2o7vj7iUkxKEK3zBq8S-Kn4ExaXSpKU2axqtDmdKvwnGGRTX293MShX08lKHjJIwxThR6FomQHdWjlch5aNHpSetktB9XLRZFPWWf5g41N7g2RW_TOiaOMc39GwQeBUXJSnE_Bp7k-6E3RSy8-GIOPdG8QrimuiSPO3-Jiq" } } -- GitLab From 6ba76f59b5612dbfb229e3b939c02f1bcbe5db8a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 21:05:06 +0000 Subject: [PATCH 080/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8787540..08e4935 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,7 +21,7 @@ variables: ENV: "staging" PIPELINE: "SECURITY" #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" - DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io/osm" + DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io/osm/" DAST_API_OVERRIDES_FILE: hive/token.json FUZZAPI_PROFILE: Quick-10 @@ -38,7 +38,7 @@ variables: #FUZZAPI_OPENAPI: openapi.json - FUZZAPI_OPENAPI: openapi.json + FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" FUZZAPI_OVERRIDES_FILE: token.json @@ -177,22 +177,14 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" - #- apk add curl - #- curl https://nbi.172.21.248.230.nip.io/osm/ -k -v - #- chmod +x newToken.py + - chmod +x newToken.py - python3 newToken.py - cat token.json - - - apk add yq - #- apk update - #- yq --help - #- wget https://github.com/mikefarah/yq/releases/download/${VERSION}/${BINARY} -O /usr/bin/yq &&\ chmod +x /usr/bin/yq - - wget $OPENAPI_URL -O openapi.yaml - #- yq eval -o=j openapi.yaml > openapi.json - #- yq v -j openapi.yaml - - yq r -j -P openapi.yaml > openapi.json - - cat openapi.json + #- apk add yq + #- wget $OPENAPI_URL -O openapi.yaml + #- yq r -j -P openapi.yaml > openapi.json + #- cat openapi.json -- GitLab From d3d5900d66932e2f2166714380bf68de5283acf4 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 18 Jan 2022 21:08:34 +0000 Subject: [PATCH 081/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 08e4935..929cb2c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,7 +21,7 @@ variables: ENV: "staging" PIPELINE: "SECURITY" #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" - DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io/osm/" + DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" DAST_API_OVERRIDES_FILE: hive/token.json FUZZAPI_PROFILE: Quick-10 -- GitLab From 64651dc879f8073e617fd9895805bc773d5bda7e Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 09:12:55 +0000 Subject: [PATCH 082/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 929cb2c..f0975bd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -177,9 +177,11 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" + - ls -la - chmod +x newToken.py - python3 newToken.py - cat token.json + - ls -la #- apk add yq #- wget $OPENAPI_URL -O openapi.yaml -- GitLab From 407316f8d7865c60f1b418b543cc06387268cc24 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 09:37:33 +0000 Subject: [PATCH 083/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f0975bd..8329aee 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,7 +43,7 @@ variables: FUZZAPI_OVERRIDES_FILE: token.json FUZZAPI_OVERRIDES_CMD: newToken.py - FUZZAPI_OVERRIDES_INTERVAL: 300 + FUZZAPI_OVERRIDES_INTERVAL: 30 stages: - deploy -- GitLab From e6cd1665d276a752869959b5f77808146543ad3e Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 09:38:02 +0000 Subject: [PATCH 084/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8329aee..6a06e39 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -48,8 +48,8 @@ variables: stages: - deploy - test - - dast - fuzz + - dast - cleanup include: -- GitLab From e8b5d21a528d420365ab7737fe16e91299debdea Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 10:14:59 +0000 Subject: [PATCH 085/292] Update hive/test-openapi.json, .gitlab-ci.yml files --- .gitlab-ci.yml | 2 +- hive/test-openapi.json | 997 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 998 insertions(+), 1 deletion(-) create mode 100644 hive/test-openapi.json diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6a06e39..2a47b93 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,7 +38,7 @@ variables: #FUZZAPI_OPENAPI: openapi.json - FUZZAPI_OPENAPI: hive/openapi.json + FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" FUZZAPI_OVERRIDES_FILE: token.json diff --git a/hive/test-openapi.json b/hive/test-openapi.json new file mode 100644 index 0000000..3147002 --- /dev/null +++ b/hive/test-openapi.json @@ -0,0 +1,997 @@ +{ + "openapi": "3.0.0", + "servers": [ + { + "description": "OSM NB API", + "url": "https://osm.etsi.org/osm" + } + ], + + "info": { + "description": "This is Open Source MANO Northbound API featuring ETSI NFV SOL005.\nFor more information on OSM, you can visit [http://osm.etsi.org](http://osm.etsi.org).\nYou can send us your comments and questions to OSM_TECH@list.etsi.org\nor join the [OpenSourceMANO Slack Workplace](https://join.slack.com/t/opensourcemano/shared_invite/enQtMzQ3MzYzNTQ0NDIyLWVkNTE4ZjZjNWI0ZTQyN2VhOTI1MjViMzU1NWYwMWM3ODI4NTQyY2VlODA2ZjczMWIyYTFkZWNiZmFkM2M2ZDk)\n", + "version": "1.0.0", + "title": "OSM NB API featuring ETSI NFV SOL005", + "contact": { + "email": "OSM_TECH@list.etsi.org" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + } + }, + "tags": [ + { + "name": "NS packages", + "description": "Management operations of NS descriptors and packages" + } + ], + + "security": [ + { + "bearerAuth": [] + } + ], + + + +"paths": { + "/nsd/v1/ns_descriptors": { + "get": { + "tags": [ + "NS packages" + ], + "summary": "Query information about multiple NS descriptor resources", + "description": "Query information about multiple NS descriptor resources", + "operationId": "getNSDs", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + }, + "application/yaml": { + "schema": { + "type": "array", + "items": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + }, + "post": { + "tags": [ + "NS packages" + ], + "summary": "Create a new NS descriptor resource", + "description": "Create a new NS descriptor resource", + "operationId": "addNSD", + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "responses": { + "201": { + "description": "Created", + "headers": { + "Location": { + "schema": { + "type": "string", + "format": "uri" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + } + } + } + }, + "400": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "401": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "403": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "404": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "405": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "406": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "409": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "422": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "500": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "503": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "5XX": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "default": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + } + } + } + } + } +} -- GitLab From 1f829f4fd99a374e6232cb91928ea537caec113c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 10:23:04 +0000 Subject: [PATCH 086/292] Update hive/test-openapi.json --- hive/test-openapi.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hive/test-openapi.json b/hive/test-openapi.json index 3147002..0035763 100644 --- a/hive/test-openapi.json +++ b/hive/test-openapi.json @@ -992,6 +992,12 @@ } } } + }, + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } } } } -- GitLab From 4aa26ab8f8c564ff5b591c59df209c21280da9da Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 10:27:29 +0000 Subject: [PATCH 087/292] Update hive/test-openapi.json --- hive/test-openapi.json | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hive/test-openapi.json b/hive/test-openapi.json index 0035763..e87f081 100644 --- a/hive/test-openapi.json +++ b/hive/test-openapi.json @@ -992,8 +992,10 @@ } } } - }, - "securitySchemes": { + } + }, + "components": { + "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer" -- GitLab From 6a99f9628b365c929c0ac5f0392b7455b3529613 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 10:41:09 +0000 Subject: [PATCH 088/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2a47b93..616ccc2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,8 +42,8 @@ variables: FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: newToken.py - FUZZAPI_OVERRIDES_INTERVAL: 30 + #FUZZAPI_OVERRIDES_CMD: newToken.py + #FUZZAPI_OVERRIDES_INTERVAL: 30 stages: - deploy -- GitLab From 2766465c505e90da0e5f495811a6b230f38adfa2 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 13:44:32 +0000 Subject: [PATCH 089/292] Update hive/test-openapi.json --- hive/test-openapi.json | 10487 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 10485 insertions(+), 2 deletions(-) diff --git a/hive/test-openapi.json b/hive/test-openapi.json index e87f081..3011fd8 100644 --- a/hive/test-openapi.json +++ b/hive/test-openapi.json @@ -994,12 +994,10495 @@ } } }, - "components": { - "securitySchemes": { + "components": [ + { + "responses": { + "BadRequest": { + "description": "Bad request. The server cannot process the request due to a client error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "Unauthorized": { + "description": "Authorization information is missing or invalid.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "Forbidden": { + "description": "Not enough permissions to do this operation.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "NotFound": { + "description": "The specified resource was not found.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "MethodNotAllowed": { + "description": "This method is not supported for the requested resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "NotAcceptable": { + "description": "The requested resource content cannot match the Accept headers sent in the request.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "Conflict": { + "description": "The operation cannot be executed currently, due to a conflict with the state of the resource.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "UnprocessableEntity": { + "description": "The request was well-formed but was unable to be followed due to semantic errors.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "InternalServerError": { + "description": "Internal server error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "ServiceUnavailable": { + "description": "Service temporarily unavailable.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "UnexpectedError": { + "description": "Unexpected error.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + } + } + } + }, + "VnfDescriptor": { + "description": "VNF Descriptor (plaintext)", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "VnfPackage": { + "description": "VNF Package (compressed)", + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "NsDescriptor": { + "description": "NS Descriptor (plaintext)", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "NsPackage": { + "description": "NS Package (compressed)", + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "NetSliceTemplate": { + "description": "NetSlice Template (plaintext)", + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "NetSlicePackage": { + "description": "NetSlice Package (compressed)", + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "NslcmSubscriptionResponse": { + "description": "NslcmSubscriptionResponse", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "filter": { + "type": "object" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "filter": { + "type": "object" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object" + } + } + } + } + } + } + }, + "schemas": { + "ObjectId": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + } + } + }, + "KeyValuePairs": { + "type": "object", + "additionalProperties": true + }, + "NsDescriptor": { + "type": "string", + "format": "yaml|json" + }, + "NsPackage": { + "type": "string", + "format": "binary" + }, + "CreateNsdInfoRequest": { + "type": "object", + "additionalProperties": true + }, + "NsdInfoModifications": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + }, + "NsdInfo": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + }, + "ArrayOfNsdInfo": { + "type": "array", + "items": { + "description": "NS Descriptor Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the onboarded individual NS descriptor\nresource. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "This identifier, which is allocated by the NSD\ndesigner, identifies the NSD in a globally unique\nway. It is copied from the NSD content and shall be\npresent after the NSD content is on-boarded.\n", + "type": "string" + }, + "name": { + "description": "Name of the onboarded NSD. This information is\ncopied from the NSD content and shall be present\nafter the NSD content is on-boarded.\n", + "type": "string" + }, + "description": { + "description": "Description of the onboarded NSD.\nThis information is copied from the NSD content.\n", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + }, + "ProblemDetails": { + "type": "object", + "properties": { + "type": { + "type": "string", + "format": "uri" + }, + "title": { + "type": "string" + }, + "status": { + "type": "integer" + }, + "detail": { + "type": "string" + }, + "instance": { + "type": "string", + "format": "uri" + } + }, + "additionalProperties": true, + "required": [ + "status", + "detail" + ] + }, + "VnfDescriptor": { + "type": "string", + "format": "yaml|json" + }, + "VnfPackage": { + "type": "string", + "format": "binary" + }, + "CreateVnfPkgInfoRequest": { + "type": "object", + "additionalProperties": true + }, + "VnfPkgInfoModifications": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + }, + "VnfPkgInfo": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + }, + "ArrayOfVnfPkgInfo": { + "type": "array", + "items": { + "description": "VNF Package Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the VNF package. This identifier is allocated by the NFVO.\n", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + }, + "required": [ + "_id", + "id" + ] + } + }, + "NsInstance": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + }, + "InstantiateNsRequest": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + }, + "ScaleNsRequest": { + "type": "object", + "properties": { + "scaleType": { + "type": "string", + "enum": [ + "SCALE_VNF" + ] + }, + "timeout_ns_scale": { + "description": "timeout for the scale operation", + "type": "integer" + }, + "scaleVnfData": { + "type": "object", + "properties": { + "scaleVnfType": { + "type": "string", + "enum": [ + "SCALE_IN", + "SCALE_OUT" + ] + }, + "scaleByStepData": { + "type": "object", + "properties": { + "scaling-group-descriptor": { + "type": "string" + }, + "scaling-policy": { + "type": "string" + }, + "member-vnf-index": { + "type": "string" + } + }, + "required": [ + "scaling-group-descriptor", + "member-vnf-index" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleVnfType", + "scaleByStepData" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleType", + "scaleVnfData" + ], + "additionalProperties": false + }, + "TerminateNsRequest": { + "type": "object", + "properties": { + "timeout_ns_terminate": { + "description": "timeout for terminate operation", + "type": "integer" + }, + "autoremove": { + "description": "remove network service if termination end without error", + "type": "boolean" + }, + "skip_terminate_primitives": { + "description": "Do not execute network service termination primitives", + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ArrayOfNsInstance": { + "type": "array", + "items": { + "description": "NS Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NS Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsr.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NS instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NS instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NS instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + }, + "NSinstanceActionRequest": { + "type": "object", + "properties": { + "primitive": { + "type": "string", + "description": "name of the primitive in the 'config-descriptor'. If the target is\na kdu it can be also 'status', 'rollback' or 'upgrade'\n" + }, + "primitive_params": { + "description": "parameters of this primitive", + "type": "object", + "additionalProperties": true + }, + "member_vnf_index": { + "type": "string", + "description": "provide if the target action is for a vnf, vdu or kdu" + }, + "vdu_id": { + "type": "string", + "description": "provide if the target action is for a vdu" + }, + "kdu_name": { + "type": "string", + "description": "provide if the target action is for a kdu" + }, + "vdu_count_index": { + "type": "integer" + }, + "timeout_ns_action": { + "description": "timeout for the day 1/2 operation", + "type": "integer" + } + }, + "required": [ + "primitive", + "primitive_params" + ], + "additionalProperties": false + }, + "CreateNSinstanceContentResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nslcmop_id": { + "type": "string", + "format": "uuid" + } + } + }, + "NsLcmOpOcc": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "nsInstance": { + "type": "string", + "format": "path" + } + } + } + } + }, + "ArrayOfNsLcmOpOcc": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "nsInstance": { + "type": "string", + "format": "path" + } + } + } + } + } + }, + "VnfInstanceInfo": { + "description": "VNF Instance Information\nOnly generic fields (_id, id) are described\nFor a full specification of the VNF Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfr.html\n", + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + }, + "ArrayOfVnfInstanceInfo": { + "type": "array", + "items": { + "description": "VNF Instance Information\nOnly generic fields (_id, id) are described\nFor a full specification of the VNF Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfr.html\n", + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + } + } + } + }, + "NstInfo": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + }, + "ArrayOfNstInfo": { + "type": "array", + "items": { + "description": "NetSlice Template Information\nOnly generic fields (_id, id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "_id": { + "description": "NetSlice Template Identifier", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Human readable NetSlice Template Identifier", + "type": "string" + }, + "name": { + "description": "Human readable name of the NetSlice Template", + "type": "string" + } + } + } + }, + "CreateNstInfoRequest": { + "type": "object", + "additionalProperties": true + }, + "NetSliceTemplate": { + "type": "string", + "format": "yaml|json" + }, + "NetSlicePackage": { + "type": "string", + "format": "binary" + }, + "NstInfoModifications": { + "description": "NetSlice Template Information\nOnly generic fields (id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "id": { + "description": "NST Identifier", + "type": "string" + }, + "name": { + "description": "NST Name", + "type": "string" + } + } + }, + "NetSliceInstance": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + }, + "ArrayOfNetSliceInstance": { + "type": "array", + "items": { + "description": "NetSlice Instance Information\nOnly generic fields (_id, id, name, description) are described\nFor a full specification of the NetSlice Instance see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsi.html\n", + "type": "object", + "properties": { + "_id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "id": { + "description": "Identifier of the NetSlice instance.", + "type": "string", + "format": "uuid" + }, + "name": { + "description": "Human readable name of the NetSlice instance.", + "type": "string" + }, + "description": { + "description": "Human readable description of the NetSlice instance.", + "type": "string" + } + }, + "required": [ + "_id", + "id", + "name" + ] + } + }, + "InstantiateNsiRequest": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + }, + "TerminateNsiRequest": { + "type": "object", + "properties": { + "terminationTime": { + "description": "Timestamp indicating the end time of the NSI, i.e. the NSI will be terminated\nautomatically at this timestamp. Cardinality \"0\" indicates the NSI termination\ntakes place immediately.\n", + "type": "string", + "format": "date-time" + } + } + }, + "NsiActionRequest": { + "type": "object", + "properties": { + "primitive": { + "type": "string" + }, + "primitive_params": { + "type": "object", + "additionalProperties": true + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "primitive", + "primitive_params" + ] + }, + "CreateNsiContentResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "nsilcmop_id": { + "type": "string", + "format": "uuid" + } + } + }, + "NsiLcmOpOcc": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsiName": { + "type": "string" + }, + "nstId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nslcmops_ids": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "netsliceInstanceId": { + "type": "string", + "format": "path" + } + } + } + } + }, + "ArrayOfNsiLcmOpOcc": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "id": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "isAutomaticInvocation": { + "type": "boolean" + }, + "isCancelPending": { + "type": "boolean" + }, + "startTime": { + "type": "number", + "format": "float" + }, + "statusEnteredTime": { + "type": "number", + "format": "float" + }, + "operationParams": { + "type": "object", + "properties": { + "nsiName": { + "type": "string" + }, + "nstId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nslcmops_ids": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } + } + } + }, + "operationState": { + "type": "string" + }, + "detailed-status": { + "type": "string" + }, + "links": { + "type": "object", + "properties": { + "self": { + "type": "string", + "format": "path" + }, + "netsliceInstanceId": { + "type": "string", + "format": "path" + } + } + } + } + } + }, + "TokenInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + }, + "ArrayOfTokenInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string" + }, + "id": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "project_id": { + "type": "string", + "format": "uuid" + }, + "user_id": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "username": { + "type": "string" + }, + "issued_at": { + "type": "number", + "format": "float" + }, + "expires": { + "type": "number", + "format": "float" + }, + "remote_host": { + "type": "string", + "format": "ipv4" + }, + "remote_port": { + "type": "integer" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + } + } + } + } + } + } + }, + "CreateTokenRequest": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_id": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ] + }, + "UserInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string", + "format": "uuid" + }, + "role": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "role_name": { + "type": "string" + } + } + } + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ArrayOfUserInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string", + "format": "uuid" + }, + "role": { + "type": "string", + "format": "uuid" + }, + "project_name": { + "type": "string" + }, + "role_name": { + "type": "string" + } + } + } + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "ProjectRoleMappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "ProjectRoleMappingsOpt": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + }, + "CreateUserRequest": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + }, + "ShortNameList": { + "type": "array", + "items": { + "type": "string" + } + }, + "ArrayEditionSchema": { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + }, + "EditUserRequest": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + } + ] + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "add_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "remove_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + } + } + }, + "QuotasInfo": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + }, + "EditQuotasInfo": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + }, + "ProjectInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + } + }, + "ArrayOfProjectInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + } + } + }, + "CreateProjectRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "EditProjectRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "PermissionsInfo": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + }, + "EditPermissionsInfo": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + }, + "RoleInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + } + }, + "ArrayOfRoleInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + } + } + }, + "CreateRoleRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "EditRoleRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + } + }, + "additionalProperties": false + }, + "VimType": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "VimInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + }, + "ArrayOfVimInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + } + } + }, + "CreateVimRequest": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + }, + "EditVimRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "ObjectId_plus_OpId": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "op_id": { + "type": "string", + "format": "uuid" + } + } + }, + "OpId": { + "type": "object", + "properties": { + "op_id": { + "type": "string", + "format": "uuid" + } + } + }, + "WimType": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "WimInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + } + }, + "ArrayOfWimInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "CreateWimRequest": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "wim_url", + "wim_type" + ], + "additionalProperties": false + }, + "EditWimRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string" + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "SdnBasicProperties": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + }, + "SdnExtraProperties": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + "SdnInfo": { + "allOf": [ + { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ] + }, + "ArrayOfSdnInfo": { + "type": "array", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + } + } + }, + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ] + } + }, + "CreateSdnRequest": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "required": [ + "name", + "type", + "ip", + "port", + "dpid" + ], + "additionalProperties": false + }, + "EditSdnRequest": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "additionalProperties": false + }, + "NsPmJobReportInfo": { + "type": "object", + "properties": { + "entries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "objectInstanceId": { + "type": "string", + "format": "uuid" + }, + "performanceMetric": { + "type": "string" + }, + "performanceValue": { + "type": "object", + "properties": { + "performanceValue": { + "type": "object", + "properties": { + "performanceValue": { + "type": "number" + }, + "vnfMemberIndex": { + "type": "string" + }, + "vduName": { + "type": "string" + } + } + }, + "timestamp": { + "type": "number" + } + } + } + } + } + } + } + }, + "PduInterfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + }, + "PduInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + } + }, + "ArrayOfPduInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + } + } + }, + "CreatePduRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "type", + "interfaces" + ], + "additionalProperties": false + }, + "EditPduRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "K8sClusterNetList": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "K8sClusterInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "ArrayOfK8sClusterInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + "CreateK8sClusterRequest": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "credentials", + "vim_account", + "k8s_version", + "nets" + ], + "additionalProperties": false + }, + "EditK8sClusterRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "VcaInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + } + }, + "ArrayOfVcaInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "CreateVcaRequest": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "endpoints", + "user", + "secret", + "cacert", + "lxd-cloud", + "lxd-credentials", + "k8s-cloud", + "k8s-credentials" + ], + "additionalProperties": false + }, + "EditVcaRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + }, + "K8sRepoType": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "K8sRepoInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + } + }, + "ArrayOfK8sRepoInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + } + } + }, + "CreateK8sRepoRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name", + "type", + "url" + ], + "additionalProperties": false + }, + "NslcmSubscriptionResponse": { + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "filter": { + "type": "object" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "_links": { + "type": "object" + } + } + }, + "NslcmSubscriptionInfo": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "_admin": { + "type": "object" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "filter": { + "type": "object" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + } + }, + "ArrayOfNslcmSubscriptionInfo": { + "type": "array", + "items": { + "type": "object", + "properties": { + "_id": { + "type": "string", + "format": "uuid" + }, + "_admin": { + "type": "object" + }, + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "filter": { + "type": "object" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + } + } + }, + "NsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "nsdIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "vnfdIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "pnfdIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsInstanceIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsInstanceNames": { + "type": "array", + "items": { + "type": "string" + } + }, + "Nslcmsubschema": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "Authenticationschema": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + }, + "NslcmSubscriptionRequest": { + "type": "object", + "properties": { + "filter": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "CallbackUri" + ] + } + }, + "requestBodies": { + "CreateNsdInfoRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "NsdInfoModifications": { + "content": { + "application/json": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "NS Descriptor Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the NS Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nsd.html\n", + "type": "object", + "properties": { + "id": { + "description": "NSD Identifier", + "type": "string" + }, + "name": { + "description": "NSD Name", + "type": "string" + }, + "description": { + "description": "NSD Description", + "type": "string" + } + } + } + } + } + }, + "NsDescriptor": { + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "NsPackage": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "CreateVnfPkgInfoRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "VnfPkgInfoModifications": { + "content": { + "application/json": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "VNF Package Information\nOnly generic fields (id, name, description) are described\nFor a full specification of the VNF Descriptor see:\nhttp://osm-download.etsi.org/ftp/osm-doc/vnfd.html\n", + "type": "object", + "properties": { + "id": { + "description": "VNF Package Identifier", + "type": "string" + }, + "name": { + "description": "VNF Package Name", + "type": "string" + }, + "description": { + "description": "VNF Package description", + "type": "string" + } + } + } + } + } + }, + "VnfPackage": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "VnfDescriptor": { + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "InstantiateNsRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsName": { + "description": "Human-readable name of the NS instance to be created.\n", + "type": "string" + }, + "nsdId": { + "description": "Identifier of the NSD that defines the NS instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NS instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "placement-engine": { + "type": "string", + "description": "To compute automatically the target VIM for each VNF based on \nconstrains, e.g. latency. Currently only 'PLA' is supported\n" + }, + "placement-constraints": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string" + }, + "timeout_ns_deploy": { + "type": "integer" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + }, + "network-type": { + "type": "string" + }, + "sdn-ports": { + "description": "connect additional ports to the created underlay SDN connectivity.\nNormally for external connectivy.\n", + "type": "array", + "items": { + "type": "object", + "properties": { + "switch_id": { + "type": "string" + }, + "switch_port": { + "type": "string" + }, + "mac_address": { + "type": "string", + "format": "mac_address" + }, + "vlan": { + "type": "integer" + } + }, + "additionalProperties": true, + "required": [ + "switch_id", + "switch_port" + ] + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsName", + "nsdId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "ScaleNsRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "scaleType": { + "type": "string", + "enum": [ + "SCALE_VNF" + ] + }, + "timeout_ns_scale": { + "description": "timeout for the scale operation", + "type": "integer" + }, + "scaleVnfData": { + "type": "object", + "properties": { + "scaleVnfType": { + "type": "string", + "enum": [ + "SCALE_IN", + "SCALE_OUT" + ] + }, + "scaleByStepData": { + "type": "object", + "properties": { + "scaling-group-descriptor": { + "type": "string" + }, + "scaling-policy": { + "type": "string" + }, + "member-vnf-index": { + "type": "string" + } + }, + "required": [ + "scaling-group-descriptor", + "member-vnf-index" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleVnfType", + "scaleByStepData" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleType", + "scaleVnfData" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "scaleType": { + "type": "string", + "enum": [ + "SCALE_VNF" + ] + }, + "timeout_ns_scale": { + "description": "timeout for the scale operation", + "type": "integer" + }, + "scaleVnfData": { + "type": "object", + "properties": { + "scaleVnfType": { + "type": "string", + "enum": [ + "SCALE_IN", + "SCALE_OUT" + ] + }, + "scaleByStepData": { + "type": "object", + "properties": { + "scaling-group-descriptor": { + "type": "string" + }, + "scaling-policy": { + "type": "string" + }, + "member-vnf-index": { + "type": "string" + } + }, + "required": [ + "scaling-group-descriptor", + "member-vnf-index" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleVnfType", + "scaleByStepData" + ], + "additionalProperties": false + } + }, + "required": [ + "scaleType", + "scaleVnfData" + ], + "additionalProperties": false + } + } + } + }, + "TerminateNsRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "timeout_ns_terminate": { + "description": "timeout for terminate operation", + "type": "integer" + }, + "autoremove": { + "description": "remove network service if termination end without error", + "type": "boolean" + }, + "skip_terminate_primitives": { + "description": "Do not execute network service termination primitives", + "type": "boolean" + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "timeout_ns_terminate": { + "description": "timeout for terminate operation", + "type": "integer" + }, + "autoremove": { + "description": "remove network service if termination end without error", + "type": "boolean" + }, + "skip_terminate_primitives": { + "description": "Do not execute network service termination primitives", + "type": "boolean" + } + }, + "additionalProperties": false + } + } + } + }, + "CreateNstInfoRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + }, + "application/yaml": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + }, + "NetSliceTemplate": { + "content": { + "text/plain": { + "schema": { + "type": "string", + "format": "yaml|json" + } + } + } + }, + "NetSlicePackage": { + "content": { + "application/zip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "NstInfoModifications": { + "content": { + "application/json": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "id": { + "description": "NST Identifier", + "type": "string" + }, + "name": { + "description": "NST Name", + "type": "string" + } + } + } + }, + "application/yaml": { + "schema": { + "description": "NetSlice Template Information\nOnly generic fields (id, name) are described\nFor a full specification of the NetSlice Template see:\nhttp://osm-download.etsi.org/ftp/osm-doc/nst.html\n", + "type": "object", + "properties": { + "id": { + "description": "NST Identifier", + "type": "string" + }, + "name": { + "description": "NST Name", + "type": "string" + } + } + } + } + } + }, + "InstantiateNsiRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "nsiName": { + "description": "Human-readable name of the NetSlice instance to be created.\n", + "type": "string" + }, + "nstId": { + "description": "Identifier of the NST that defines the NetSlice instance to be created.\n", + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "description": "Identifier of the VIM Account where the NetSlice instance shall be created.\n", + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsiDescription": { + "type": "string", + "nullable": true + }, + "ssh_keys": { + "type": "string" + }, + "nsi_id": { + "type": "string", + "format": "uuid" + }, + "additionalParamsForNsi": { + "type": "object", + "additionalProperties": true + }, + "netslice-subnet": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "nsName": { + "type": "string" + }, + "nsdId": { + "type": "string", + "format": "uuid" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "lcmOperationType": { + "type": "string" + }, + "nsInstanceId": { + "type": "string", + "format": "uuid" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + }, + "nsDescription": { + "type": "string", + "nullable": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "additionalParamsForNs": { + "type": "object", + "additionalProperties": true + }, + "additionalParamsForVnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for all the KDU deployed in this VNF\n(if any). By default it is used the id of the project\n" + }, + "additionalParamsForVdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "vdu_id": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "vdu_id", + "additionalParams" + ], + "additionalProperties": false + } + }, + "additionalParamsForKdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "kdu_name": { + "type": "string" + }, + "k8s-namespace": { + "type": "string", + "description": "use this namespace for this KDU" + }, + "kdu_model": { + "type": "string" + }, + "additionalParams": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "kdu_name" + ], + "minProperties": 2, + "additionalProperties": false + } + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + } + }, + "ssh_keys": { + "type": "array", + "items": { + "type": "string" + } + }, + "nsr_id": { + "type": "string", + "format": "uuid" + }, + "vduImage": { + "type": "string" + }, + "vnf": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index": { + "type": "string" + }, + "vimAccountId": { + "type": "string", + "format": "uuid" + }, + "vdu": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "volume": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-volume-id": { + "type": "string" + } + }, + "required": [ + "name", + "vim-volume-id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "interface": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "floating-ip-required": { + "type": "boolean" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "minItems": 1 + }, + "internal-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + }, + "ip-profile": { + "type": "object", + "properties": { + "ip-version": { + "type": "string", + "enum": [ + "ipv4", + "ipv6" + ] + }, + "subnet-address": { + "type": "string", + "format": "ip_prefix", + "nullable": true + }, + "gateway-address": { + "type": "string", + "format": "ipv4", + "nullable": true + }, + "dns-server": { + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "address" + ], + "additionalProperties": false + }, + "minItems": 1, + "nullable": true + }, + "dhcp-params": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "count": { + "type": "integer", + "minimum": 1 + }, + "start-address": { + "type": "string", + "format": "ipv4" + } + }, + "additionalProperties": false, + "nullable": true + } + }, + "additionalProperties": false + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "internal-connection-point": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "id-ref" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "member-vnf-index" + ], + "minProperties": 2, + "additionalProperties": false + }, + "minItems": 1 + }, + "vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ns-net": { + "type": "object", + "additionalProperties": true + }, + "wimAccountId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "boolean" + } + ], + "nullable": true + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + }, + "provider-network": { + "type": "object", + "properties": { + "physical-network": { + "type": "string" + }, + "segmentation-id": { + "type": "string" + } + }, + "additionalProperties": false + }, + "vnfd-connection-point-ref": { + "type": "array", + "items": { + "type": "object", + "properties": { + "member-vnf-index-ref": { + "type": "string" + }, + "vnfd-connection-point-ref": { + "type": "string" + }, + "ip-address": { + "type": "string", + "format": "ipv4" + } + }, + "required": [ + "member-vnf-index-ref", + "vnfd-connection-point-ref" + ], + "minProperties": 3, + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + "minItems": 1 + }, + "netslice-vld": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "vim-network-name": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "vim-network-id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object" + } + ] + }, + "ip-profile": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "minItems": 1 + } + }, + "required": [ + "nsiName", + "nstId", + "vimAccountId" + ], + "additionalProperties": false + } + } + } + }, + "TerminateNsiRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "terminationTime": { + "description": "Timestamp indicating the end time of the NSI, i.e. the NSI will be terminated\nautomatically at this timestamp. Cardinality \"0\" indicates the NSI termination\ntakes place immediately.\n", + "type": "string", + "format": "date-time" + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "terminationTime": { + "description": "Timestamp indicating the end time of the NSI, i.e. the NSI will be terminated\nautomatically at this timestamp. Cardinality \"0\" indicates the NSI termination\ntakes place immediately.\n", + "type": "string", + "format": "date-time" + } + } + } + } + } + }, + "NsiActionRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "primitive": { + "type": "string" + }, + "primitive_params": { + "type": "object", + "additionalProperties": true + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "primitive", + "primitive_params" + ] + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "primitive": { + "type": "string" + }, + "primitive_params": { + "type": "object", + "additionalProperties": true + }, + "lcmOperationType": { + "type": "string" + }, + "netsliceInstanceId": { + "type": "string", + "format": "uuid" + } + }, + "required": [ + "primitive", + "primitive_params" + ] + } + } + } + }, + "CreateTokenRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_id": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ] + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "project_id": { + "type": "string" + } + }, + "required": [ + "username", + "password" + ] + } + } + } + }, + "CreateUserRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "type": "array", + "items": { + "type": "string" + } + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + } + }, + "required": [ + "username", + "password" + ], + "additionalProperties": false + } + } + } + }, + "EditUserRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + } + ] + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "add_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "remove_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + } + } + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "projects": { + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "object", + "additionalProperties": true, + "minProperties": 1, + "description": "Array edition keys must start with '$'\nand follow the syntax defined in: https://osm.etsi.org/wikipub/index.php/NBI_API_Description\n" + } + ] + }, + "project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "add_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project", + "role" + ], + "additionalProperties": false + }, + "remove_project_role_mappings": { + "type": "array", + "items": { + "type": "object", + "properties": { + "project": { + "type": "string" + }, + "role": { + "type": "string" + } + } + }, + "required": [ + "project" + ], + "additionalProperties": false + } + } + } + } + } + }, + "CreateProjectRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": false + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": false + } + }, + "additionalProperties": false + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + }, + "EditProjectRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "admin": { + "type": "boolean" + }, + "quotas": { + "type": "object", + "properties": { + "vnfds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "nsds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_templates": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "pduds": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "ns_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "slice_instances": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "wim_accounts": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "sdn_controllers": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8sclusters": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "vca": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "k8srepos": { + "type": "integer", + "minimum": 0, + "nullable": true + }, + "osmrepos": { + "type": "integer", + "minimum": 0, + "nullable": true + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + } + } + } + }, + "CreateRoleRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": false + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true or false\n" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + } + } + }, + "EditRoleRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "permissions": { + "type": "object", + "additionalProperties": { + "type": "boolean", + "nullable": true + }, + "description": "Permissions keys must follow the syntax 'main_topic[:subtopic[:id[:component|action|etc]]]'\nPermission values are either true, false, or null\n" + } + }, + "additionalProperties": false + } + } + } + }, + "CreateVimRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + }, + "resources": { + "type": "object" + } + }, + "required": [ + "name", + "vim_url", + "vim_type", + "vim_user", + "vim_password", + "vim_tenant_name" + ], + "additionalProperties": false + } + } + } + }, + "EditVimRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "vim": { + "type": "string" + }, + "datacenter": { + "type": "string" + }, + "vim_type": { + "type": "string", + "enum": [ + "openvim", + "openstack", + "vmware", + "opennebula", + "aws", + "azure", + "fos" + ] + }, + "vim_url": { + "type": "string", + "format": "uri" + }, + "vim_tenant_name": { + "type": "string" + }, + "vim_user": { + "type": "string" + }, + "vim_password": { + "type": "string" + }, + "vca": { + "type": "string", + "format": "uuid" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "CreateWimRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "wim_url", + "wim_type" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string", + "enum": [ + "onos", + "odl", + "tapi", + "dynpac", + "fake" + ] + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "wim_url", + "wim_type" + ], + "additionalProperties": false + } + } + } + }, + "EditWimRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string" + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "wim": { + "type": "string" + }, + "wim_type": { + "type": "string" + }, + "wim_url": { + "type": "string", + "format": "uri" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + }, + "config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "CreateSdnRequest": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "required": [ + "name", + "type", + "ip", + "port", + "dpid" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "required": [ + "name", + "type", + "ip", + "port", + "dpid" + ], + "additionalProperties": false + } + } + } + }, + "EditSdnRequest": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "dpid": { + "type": "string", + "format": "mac_address" + }, + "ip": { + "type": "string", + "format": "ipv4" + }, + "port": { + "type": "integer" + }, + "type": { + "type": "string", + "enum": [ + "floodlight", + "opendaylight", + "onos" + ] + }, + "version": { + "type": "string" + }, + "user": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + ], + "additionalProperties": false + } + } + } + }, + "CreatePduRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "type", + "interfaces" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "required": [ + "name", + "type", + "interfaces" + ], + "additionalProperties": false + } + } + } + }, + "EditPduRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string" + }, + "description": { + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "vims": { + "type": "array", + "items": { + "type": "string" + } + }, + "vim_accounts": { + "type": "array", + "items": { + "type": "string" + } + }, + "interfaces": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "mgmt": { + "type": "boolean" + }, + "type": { + "type": "string", + "enum": [ + "overlay", + "underlay" + ] + }, + "ip-address": { + "type": "string", + "format": "ipv4" + }, + "mac-address": { + "type": "string", + "format": "mac_address" + }, + "vim-network-name": { + "type": "string" + }, + "vim-network-id": { + "type": "string" + } + }, + "required": [ + "name", + "mgmt", + "ip-address" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + } + } + } + }, + "CreateK8sClusterRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "credentials", + "vim_account", + "k8s_version", + "nets" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "name", + "credentials", + "vim_account", + "k8s_version", + "nets" + ], + "additionalProperties": false + } + } + } + }, + "EditK8sClusterRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "credentials": { + "type": "object", + "additionalProperties": true + }, + "vim_account": { + "type": "string", + "format": "uuid" + }, + "k8s_version": { + "type": "string" + }, + "nets": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": true + } + }, + "namespace": { + "type": "string" + }, + "cni": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + } + } + } + }, + "CreateVcaRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "endpoints", + "user", + "secret", + "cacert", + "lxd-cloud", + "lxd-credentials", + "k8s-cloud", + "k8s-credentials" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "schema_version": { + "type": "string", + "format": "X.Y[.Z]" + }, + "schema_type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "required": [ + "name", + "endpoints", + "user", + "secret", + "cacert", + "lxd-cloud", + "lxd-credentials", + "k8s-cloud", + "k8s-credentials" + ], + "additionalProperties": false + } + } + } + }, + "EditVcaRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "endpoints": { + "type": "string" + }, + "user": { + "type": "string" + }, + "secret": { + "type": "string" + }, + "cacert": { + "type": "string" + }, + "lxd-cloud": { + "type": "string" + }, + "lxd-credentials": { + "type": "string" + }, + "k8s-cloud": { + "type": "string" + }, + "k8s-credentials": { + "type": "string" + }, + "model-config": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": false + } + } + } + }, + "CreateK8sRepoRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name", + "type", + "url" + ], + "additionalProperties": false + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "chart", + "bundle" + ] + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name", + "type", + "url" + ], + "additionalProperties": false + } + } + } + }, + "NslcmSubscriptionRequest": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "filter": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "CallbackUri" + ] + } + }, + "application/yaml": { + "schema": { + "type": "object", + "properties": { + "filter": { + "type": "object", + "properties": { + "nsInstanceSubscriptionFilter": { + "description": "used to identify the network service\n", + "type": "object", + "oneOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "notificationTypes": { + "description": "If NsLcmOperationOccurrenceNotification is selected then at least operationTypes or states is required. If NsLcmOperationOccurrenceNotification is selected then at least nsComponentTypes, lcmOpName and lcmOpOccStatus is required\n", + "type": "array", + "items": { + "type": "string", + "enum": [ + "NsIdentifierCreationNotification", + "NsIdentifierDeletionNotification", + "NsLcmOperationOccurrenceNotification", + "NsChangeNotification" + ] + } + }, + "operationTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "INSTANTIATE", + "SCALE", + "TERMINATE", + "UPDATE", + "HEAL" + ] + } + }, + "operationStates": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "PROCESSING", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "FAILED_TEMP", + "ROLLING_BACK", + "ROLLED_BACK" + ] + } + }, + "nsComponentTypes": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF", + "NS", + "PNF" + ] + } + }, + "lcmOpNameImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "VNF_INSTANTIATE", + "VNF_SCALE", + "VNF_SCALE_TO_LEVEL", + "VNF_CHANGE_FLAVOUR", + "VNF_TERMINATE", + "VNF_HEAL", + "VNF_OPERATE", + "VNF_CHANGE_EXT_CONN", + "VNF_MODIFY_INFO", + "NS_INSTANTIATE", + "NS_SCALE", + "NS_UPDATE", + "NS_TERMINATE", + "NS_HEAL" + ] + } + }, + "lcmOpOccStatusImpactingNsComponent": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "START", + "COMPLETED", + "PARTIALLY_COMPLETED", + "FAILED", + "ROLLED_BACK" + ] + } + } + } + }, + "CallbackUri": { + "type": "string", + "format": "uri" + }, + "authentication": { + "type": "object", + "properties": { + "authType": { + "type": "string", + "enum": [ + "basic" + ] + }, + "paramsBasic": { + "type": "object", + "properties": { + "userName": { + "type": "string" + }, + "password": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "CallbackUri" + ] + } + } + } + } + }, + "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer" } } } +] } -- GitLab From 0a67cbad7c8d74b0ef63702ae10c05a249b1e8a6 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 13:49:19 +0000 Subject: [PATCH 090/292] Update hive/test-openapi.json --- hive/test-openapi.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hive/test-openapi.json b/hive/test-openapi.json index 3011fd8..1b81845 100644 --- a/hive/test-openapi.json +++ b/hive/test-openapi.json @@ -994,8 +994,7 @@ } } }, - "components": [ - { + "components": { "responses": { "BadRequest": { "description": "Bad request. The server cannot process the request due to a client error.", @@ -11484,5 +11483,4 @@ } } } -] } -- GitLab From a8de67f211b072cf121be20bfc6959f38c609618 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 13:53:23 +0000 Subject: [PATCH 091/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 616ccc2..621d106 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -54,7 +54,7 @@ stages: include: - template: DAST.gitlab-ci.yml - - template: API-Fuzzing.gitlab-ci.yml + - template: API-Fuzzing.latest.gitlab-ci.yml workflow: rules: -- GitLab From c37efb9ff13ba70962594ba9f5d8cac06298be30 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 13:59:41 +0000 Subject: [PATCH 092/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 621d106..94be2db 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,7 +38,7 @@ variables: #FUZZAPI_OPENAPI: openapi.json - FUZZAPI_OPENAPI: hive/test-openapi.json + FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" FUZZAPI_OVERRIDES_FILE: token.json -- GitLab From 0e62bd6209b3c91ff361bba1b2f63f69e4224040 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 14:37:37 +0000 Subject: [PATCH 093/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 94be2db..28327c9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ variables: PIPELINE: "SECURITY" #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" - DAST_API_OVERRIDES_FILE: hive/token.json + #DAST_API_OVERRIDES_FILE: hive/token.json FUZZAPI_PROFILE: Quick-10 #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" @@ -43,7 +43,7 @@ variables: FUZZAPI_OVERRIDES_FILE: token.json #FUZZAPI_OVERRIDES_CMD: newToken.py - #FUZZAPI_OVERRIDES_INTERVAL: 30 + #FUZZAPI_OVERRIDES_INTERVAL: 3000 stages: - deploy -- GitLab From 96f6a60ebfd8edff3cc308ad36f7e02e1ab36ab6 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 14:39:43 +0000 Subject: [PATCH 094/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 28327c9..1c97a6a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,7 +38,7 @@ variables: #FUZZAPI_OPENAPI: openapi.json - FUZZAPI_OPENAPI: hive/openapi.json + FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" FUZZAPI_OVERRIDES_FILE: token.json -- GitLab From fe3427288cc59e8f41da56a87ffc2166ba73887c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 14:43:46 +0000 Subject: [PATCH 095/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1c97a6a..a6867c4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,7 +21,7 @@ variables: ENV: "staging" PIPELINE: "SECURITY" #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" - DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" + #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" #DAST_API_OVERRIDES_FILE: hive/token.json FUZZAPI_PROFILE: Quick-10 @@ -179,7 +179,7 @@ apifuzzer_fuzz: - echo "Preparing API Fuzzing" - ls -la - chmod +x newToken.py - - python3 newToken.py + - newToken.py - cat token.json - ls -la @@ -187,6 +187,8 @@ apifuzzer_fuzz: #- wget $OPENAPI_URL -O openapi.yaml #- yq r -j -P openapi.yaml > openapi.json #- cat openapi.json + after_script: + - echo $FUZZAPI_OVERRIDES_FILE -- GitLab From a508fa4e3a54d705f6da395a762d631292720e0f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 14:44:51 +0000 Subject: [PATCH 096/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a6867c4..1887ea6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -179,7 +179,7 @@ apifuzzer_fuzz: - echo "Preparing API Fuzzing" - ls -la - chmod +x newToken.py - - newToken.py + - ./newToken.py - cat token.json - ls -la -- GitLab From b8c846d9b8d2bc86a06d460e5ecda67edff74d0a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 14:50:17 +0000 Subject: [PATCH 097/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1887ea6..b4f2652 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,7 +39,7 @@ variables: #FUZZAPI_OPENAPI: openapi.json FUZZAPI_OPENAPI: hive/test-openapi.json - FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io" + FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" FUZZAPI_OVERRIDES_FILE: token.json #FUZZAPI_OVERRIDES_CMD: newToken.py -- GitLab From 1f63c695f70ef4cd5e3c63c4064e57e00a412590 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 15:28:05 +0000 Subject: [PATCH 098/292] Update hive/token.json, .gitlab-ci.yml files --- .gitlab-ci.yml | 2 +- hive/token.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b4f2652..307f376 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -41,7 +41,7 @@ variables: FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" - FUZZAPI_OVERRIDES_FILE: token.json + FUZZAPI_OVERRIDES_FILE: hive/token.json #FUZZAPI_OVERRIDES_CMD: newToken.py #FUZZAPI_OVERRIDES_INTERVAL: 3000 diff --git a/hive/token.json b/hive/token.json index d34135f..a03b990 100644 --- a/hive/token.json +++ b/hive/token.json @@ -1,5 +1,5 @@ { "headers" : { - "Authorization" : "Bearer gAAAAABh5yinxC9M0UjWHo4PSnO3jIWSjo9xo2o7vj7iUkxKEK3zBq8S-Kn4ExaXSpKU2axqtDmdKvwnGGRTX293MShX08lKHjJIwxThR6FomQHdWjlch5aNHpSetktB9XLRZFPWWf5g41N7g2RW_TOiaOMc39GwQeBUXJSnE_Bp7k-6E3RSy8-GIOPdG8QrimuiSPO3-Jiq" + "Authorization" : "Bearer gAAAAABh6CXuSX1F5-yMCDgj_j0VuNPhoPHNd_xaMyO5aMpSffA5s0Cje6qtVYGMmXkKOuaSTcGgfQ3nKZpuCWRJl1yK9u1UmKGF9f-O8zAjBtSBQuJdwiYCaI1vs9KBpsGOPIzm0xbmaAh4Z26dw0ZiOfcs-yn6HhDHUiKWxXk8vFXOibPp1bx23X7KtjQdAVFO2vBaJHVE" } } -- GitLab From fa92b5c8f8934ad82955f0319fab5ca6760fb7b1 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 16:25:53 +0000 Subject: [PATCH 099/292] Update hive/token.json, .gitlab-ci.yml files --- .gitlab-ci.yml | 5 ++--- hive/token.json | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 307f376..4bb7e37 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,7 +25,7 @@ variables: #DAST_API_OVERRIDES_FILE: hive/token.json FUZZAPI_PROFILE: Quick-10 - #FUZZAPI_OPENAPI: "https://osm.etsi.org/gitweb/?p=osm/SOL005.git;a=blob_plain;f=osm-openapi.yaml;hb=HEAD" + #DAST_API_OVERRIDES_FILE: hive/token.json #FUZZAPI_OVERRIDES_ENV: hive/token.json @@ -34,8 +34,7 @@ variables: #DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD #FUZZAPI_HTTP_USERNAME: admin #FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD - OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false - + #OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false #FUZZAPI_OPENAPI: openapi.json FUZZAPI_OPENAPI: hive/test-openapi.json diff --git a/hive/token.json b/hive/token.json index a03b990..7536a5b 100644 --- a/hive/token.json +++ b/hive/token.json @@ -1,5 +1,5 @@ { "headers" : { - "Authorization" : "Bearer gAAAAABh6CXuSX1F5-yMCDgj_j0VuNPhoPHNd_xaMyO5aMpSffA5s0Cje6qtVYGMmXkKOuaSTcGgfQ3nKZpuCWRJl1yK9u1UmKGF9f-O8zAjBtSBQuJdwiYCaI1vs9KBpsGOPIzm0xbmaAh4Z26dw0ZiOfcs-yn6HhDHUiKWxXk8vFXOibPp1bx23X7KtjQdAVFO2vBaJHVE" + "Authorization" : "Bearer gAAAAABh6Dq6-uYumFpdeAqsKS3VCsfYDqOfv4doq-1ZmWuVwy5cjDyaO6ches58kHQSiQe-OVQ_6gFMrkTMZwRIfXP99Mxuk7TluQmTq6qFz4PpU1ms6Ivuxy8yolqQ1RwwTlcczCHMl4ljPfH9Cnw6FXt_lzhnBipKKhqg2Rs--ghMZh3BcNrFSnxsaeMc7MwvV8r0KmfQ" } } -- GitLab From 310f788d4bb5792e25ee72c1f64a1a078cf1049f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 16:28:18 +0000 Subject: [PATCH 100/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4bb7e37..ec1493b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -53,7 +53,7 @@ stages: include: - template: DAST.gitlab-ci.yml - - template: API-Fuzzing.latest.gitlab-ci.yml + - template: API-Fuzzing.gitlab-ci.yml workflow: rules: -- GitLab From be5f7c574ae8f1e24b86de2c74c0f1bbcb8d114e Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 16:38:29 +0000 Subject: [PATCH 101/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ec1493b..b79ebf7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,7 +38,8 @@ variables: #FUZZAPI_OPENAPI: openapi.json FUZZAPI_OPENAPI: hive/test-openapi.json - FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" + #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" + FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: hive/token.json #FUZZAPI_OVERRIDES_CMD: newToken.py -- GitLab From afe8654b6d02a39a897206b53067888b1f48b3ae Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 16:40:17 +0000 Subject: [PATCH 102/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b79ebf7..f89b930 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -37,13 +37,13 @@ variables: #OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false #FUZZAPI_OPENAPI: openapi.json - FUZZAPI_OPENAPI: hive/test-openapi.json + FUZZAPI_OPENAPI: hive/openapi.json #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" - FUZZAPI_OVERRIDES_FILE: hive/token.json - #FUZZAPI_OVERRIDES_CMD: newToken.py - #FUZZAPI_OVERRIDES_INTERVAL: 3000 + FUZZAPI_OVERRIDES_FILE: token.json + FUZZAPI_OVERRIDES_CMD: newToken.py + FUZZAPI_OVERRIDES_INTERVAL: 3000 stages: - deploy -- GitLab From 2329557391d694accd3a4fa7d77107583927abdb Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 16:42:06 +0000 Subject: [PATCH 103/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f89b930..d1c9e3f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -54,7 +54,7 @@ stages: include: - template: DAST.gitlab-ci.yml - - template: API-Fuzzing.gitlab-ci.yml + - template: API-Fuzzing.latest.gitlab-ci.yml workflow: rules: -- GitLab From 6af9f6ec2340ad74a108936f2d19eef256b15bed Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 17:36:35 +0000 Subject: [PATCH 104/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d1c9e3f..4fe8746 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,16 +18,19 @@ variables: SSH_KEY: $SSH_KEY GITLAB_API: $GITLAB_API GITLAB_TOKEN: $GITLAB_TOKEN - ENV: "staging" + ENV: "New" PIPELINE: "SECURITY" - #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" + + + DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" - #DAST_API_OVERRIDES_FILE: hive/token.json + DAST_API_OVERRIDES_FILE: token.json + - FUZZAPI_PROFILE: Quick-10 - - #DAST_API_OVERRIDES_FILE: hive/token.json + + + #FUZZAPI_OVERRIDES_ENV: hive/token.json #FUZZAPI_OVERRIDES_FILE: hive/token.json #DAST_API_HTTP_USERNAME: admin @@ -37,10 +40,13 @@ variables: #OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false #FUZZAPI_OPENAPI: openapi.json - FUZZAPI_OPENAPI: hive/openapi.json + + + #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" + FUZZAPI_PROFILE: Quick-10 + FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" - FUZZAPI_OVERRIDES_FILE: token.json FUZZAPI_OVERRIDES_CMD: newToken.py FUZZAPI_OVERRIDES_INTERVAL: 3000 @@ -48,8 +54,8 @@ variables: stages: - deploy - test - - fuzz - dast + - fuzz - cleanup include: @@ -166,6 +172,13 @@ dast: stage: dast environment: name: $ENV + before_script: + - echo "Preparing DAST" + - ls -la + - chmod +x newToken.py + - ./newToken.py + - cat token.json + - ls -la apifuzzer_fuzz: timeout: -- GitLab From 62f8ad9608b05e727139abe284c7f255ed486b3a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 17:37:07 +0000 Subject: [PATCH 105/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4fe8746..8088508 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -191,7 +191,7 @@ apifuzzer_fuzz: before_script: - echo "Preparing API Fuzzing" - ls -la - - chmod +x newToken.py + - sudo chmod +x newToken.py - ./newToken.py - cat token.json - ls -la -- GitLab From de9674790f1959cb810975aa7ccad706c31046eb Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 17:45:15 +0000 Subject: [PATCH 106/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8088508..2a6c0e7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -174,11 +174,11 @@ dast: name: $ENV before_script: - echo "Preparing DAST" - - ls -la - - chmod +x newToken.py - - ./newToken.py - - cat token.json - - ls -la + #- ls -la + #- chmod +x newToken.py + #- ./newToken.py + #- cat token.json + #- ls -la apifuzzer_fuzz: timeout: -- GitLab From 41ea4b9fd5ec98b039618a8faac5fea5427e034f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 17:48:06 +0000 Subject: [PATCH 107/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2a6c0e7..5412943 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,7 +24,10 @@ variables: DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" - DAST_API_OVERRIDES_FILE: token.json + #DAST_API_OVERRIDES_FILE: token.json + DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" + + -- GitLab From 2fc5c11d591e5df27ab16d646df6f6bbd4369423 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 18:15:34 +0000 Subject: [PATCH 108/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5412943..1289733 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,7 +25,8 @@ variables: DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" #DAST_API_OVERRIDES_FILE: token.json - DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" + #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" + DAST_API_OVERRIDES_ENV: "gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" -- GitLab From d2b446cd89917de809ea1372b1b87555e9f050f7 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 18:24:57 +0000 Subject: [PATCH 109/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1289733..4ef2a9f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ variables: PIPELINE: "SECURITY" - DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm" + DAST_WEBSITE: "https://${OSM_HOSTNAME}" #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" -- GitLab From a3fe8398fb033b26cc026bd28e2a766cc89995b9 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 20:57:20 +0000 Subject: [PATCH 110/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4ef2a9f..b4c965b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -195,7 +195,7 @@ apifuzzer_fuzz: before_script: - echo "Preparing API Fuzzing" - ls -la - - sudo chmod +x newToken.py + - chmod +x newToken.py - ./newToken.py - cat token.json - ls -la -- GitLab From 10bf0350b08d5a2891147b7d65cfac02cd95d202 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 20:58:59 +0000 Subject: [PATCH 111/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b4c965b..18a6cde 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ variables: PIPELINE: "SECURITY" - DAST_WEBSITE: "https://${OSM_HOSTNAME}" + DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" -- GitLab From af4a9effdd8ec9519447af7170e335f2c9672ee5 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 21:00:47 +0000 Subject: [PATCH 112/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 18a6cde..d7037ad 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,7 +26,7 @@ variables: #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: "gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" + DAST_API_OVERRIDES_ENV: "gAAAAABh6HvvK2V3zzoVxZR7n8uOHwAvBwCoxckLXZiMOCPC7XrQNaS9Mq0i6qME5jxclPffSG1Mn34_VSixN4kWkZV04nTZ_zs9Q-iO01FJAcwH5AmD0C4xRIx-sIeTGVZ0hw2jY8fDlJXNW1r3yzZNZQuRoOjs0MUlkQiHKPHOIp2tbx0v_X8HFOUrhxRrP9Ahaoe7bmEQ" -- GitLab From 5f3f995272a767a9eb86bede0f28f6119872d2f4 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 21:14:08 +0000 Subject: [PATCH 113/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d7037ad..9c7ed32 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,8 +26,7 @@ variables: #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: "gAAAAABh6HvvK2V3zzoVxZR7n8uOHwAvBwCoxckLXZiMOCPC7XrQNaS9Mq0i6qME5jxclPffSG1Mn34_VSixN4kWkZV04nTZ_zs9Q-iO01FJAcwH5AmD0C4xRIx-sIeTGVZ0hw2jY8fDlJXNW1r3yzZNZQuRoOjs0MUlkQiHKPHOIp2tbx0v_X8HFOUrhxRrP9Ahaoe7bmEQ" - + DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6HvvK2V3zzoVxZR7n8uOHwAvBwCoxckLXZiMOCPC7XrQNaS9Mq0i6qME5jxclPffSG1Mn34_VSixN4kWkZV04nTZ_zs9Q-iO01FJAcwH5AmD0C4xRIx-sIeTGVZ0hw2jY8fDlJXNW1r3yzZNZQuRoOjs0MUlkQiHKPHOIp2tbx0v_X8HFOUrhxRrP9Ahaoe7bmEQ"}}" -- GitLab From 8178571ac4ff5df3b8daf59b22277d27767d2c87 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 21:16:38 +0000 Subject: [PATCH 114/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9c7ed32..04694eb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,7 +26,7 @@ variables: #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6HvvK2V3zzoVxZR7n8uOHwAvBwCoxckLXZiMOCPC7XrQNaS9Mq0i6qME5jxclPffSG1Mn34_VSixN4kWkZV04nTZ_zs9Q-iO01FJAcwH5AmD0C4xRIx-sIeTGVZ0hw2jY8fDlJXNW1r3yzZNZQuRoOjs0MUlkQiHKPHOIp2tbx0v_X8HFOUrhxRrP9Ahaoe7bmEQ"}}" + DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6HvvK2V3zzoVxZR7n8uOHwAvBwCoxckLXZiMOCPC7XrQNaS9Mq0i6qME5jxclPffSG1Mn34_VSixN4kWkZV04nTZ_zs9Q-iO01FJAcwH5AmD0C4xRIx-sIeTGVZ0hw2jY8fDlJXNW1r3yzZNZQuRoOjs0MUlkQiHKPHOIp2tbx0v_X8HFOUrhxRrP9Ahaoe7bmEQ"}}' -- GitLab From 001925a22b39e9e840e8ca245107a4c43baf37de Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 21:20:01 +0000 Subject: [PATCH 115/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 04694eb..e2449ce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -177,6 +177,7 @@ dast: name: $ENV before_script: - echo "Preparing DAST" + - echo $DAST_API_OVERRIDES_ENV #- ls -la #- chmod +x newToken.py #- ./newToken.py -- GitLab From 4febd84f1401f9d4129807ce2d6bcf7723ba2d9c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 21:23:09 +0000 Subject: [PATCH 116/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e2449ce..bb0e0ba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,8 +22,8 @@ variables: PIPELINE: "SECURITY" - DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" - #DAST_WEBSITE: "https://nbi.172.21.248.85.nip.io" + #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6HvvK2V3zzoVxZR7n8uOHwAvBwCoxckLXZiMOCPC7XrQNaS9Mq0i6qME5jxclPffSG1Mn34_VSixN4kWkZV04nTZ_zs9Q-iO01FJAcwH5AmD0C4xRIx-sIeTGVZ0hw2jY8fDlJXNW1r3yzZNZQuRoOjs0MUlkQiHKPHOIp2tbx0v_X8HFOUrhxRrP9Ahaoe7bmEQ"}}' -- GitLab From 852a1630b6af48a4bb54949311a58d49ec42fc0a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 21:54:45 +0000 Subject: [PATCH 117/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bb0e0ba..ce1a0e4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,7 +23,7 @@ variables: #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io" + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6HvvK2V3zzoVxZR7n8uOHwAvBwCoxckLXZiMOCPC7XrQNaS9Mq0i6qME5jxclPffSG1Mn34_VSixN4kWkZV04nTZ_zs9Q-iO01FJAcwH5AmD0C4xRIx-sIeTGVZ0hw2jY8fDlJXNW1r3yzZNZQuRoOjs0MUlkQiHKPHOIp2tbx0v_X8HFOUrhxRrP9Ahaoe7bmEQ"}}' -- GitLab From 8492d798a5c6f3340341a02481969eb031c67749 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 19 Jan 2022 22:22:15 +0000 Subject: [PATCH 118/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ce1a0e4..b6edf99 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -52,7 +52,7 @@ variables: FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json FUZZAPI_OVERRIDES_CMD: newToken.py - FUZZAPI_OVERRIDES_INTERVAL: 3000 + FUZZAPI_OVERRIDES_INTERVAL: 300 stages: - deploy -- GitLab From 1ccacd5be19da803cc760062dea1c5c10cf172ee Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 08:38:37 +0000 Subject: [PATCH 119/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b6edf99..ff4ece2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,8 +57,10 @@ variables: stages: - deploy - test - - dast + - fuzz + - dast + - cleanup include: @@ -194,6 +196,7 @@ apifuzzer_fuzz: name: $ENV before_script: - echo "Preparing API Fuzzing" + - whoami - ls -la - chmod +x newToken.py - ./newToken.py -- GitLab From 0dfddbad41db602aea9750ad21290f408eaaf44d Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 08:49:53 +0000 Subject: [PATCH 120/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ff4ece2..e5fac32 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -201,6 +201,7 @@ apifuzzer_fuzz: - chmod +x newToken.py - ./newToken.py - cat token.json + - chmod 766 - ls -la #- apk add yq @@ -209,6 +210,8 @@ apifuzzer_fuzz: #- cat openapi.json after_script: - echo $FUZZAPI_OVERRIDES_FILE + - whoami + - ls -la -- GitLab From 0225d934f846843d85363954d0f40149203c7151 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 09:11:12 +0000 Subject: [PATCH 121/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e5fac32..c9dae3b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,10 +57,8 @@ variables: stages: - deploy - test - - - fuzz - dast - + - fuzz - cleanup include: @@ -201,7 +199,7 @@ apifuzzer_fuzz: - chmod +x newToken.py - ./newToken.py - cat token.json - - chmod 766 + - chmod 766 token.json - ls -la #- apk add yq @@ -212,6 +210,7 @@ apifuzzer_fuzz: - echo $FUZZAPI_OVERRIDES_FILE - whoami - ls -la + - cat token.json -- GitLab From 1371f919512fbc9d6a49abdee7c88b8cbdb892c6 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 09:20:44 +0000 Subject: [PATCH 122/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c9dae3b..31ceab7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -178,6 +178,9 @@ dast: before_script: - echo "Preparing DAST" - echo $DAST_API_OVERRIDES_ENV + + - echo $PWD + - ls -la ../ #- ls -la #- chmod +x newToken.py #- ./newToken.py -- GitLab From d11cb53309c286d67b19cf9195a5f63eb56d40eb Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 09:30:05 +0000 Subject: [PATCH 123/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 31ceab7..d830085 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -180,7 +180,10 @@ dast: - echo $DAST_API_OVERRIDES_ENV - echo $PWD - - ls -la ../ + - 'ls -la ../' + - > + curl -k -H "Authorization: Bearer gAAAAABh6SoEtiAc7nm0u3ryxbkYr2ad2haBOtL86aP_2JjfYR4WhKMeH0au_0etG9GHOnyYN1kvd8lG1T8_NKjB0p46cTah6TsWieyVMzxz7cHKwAZtlhsSqQctT0PN3KR2h1EMdBN4jqV3y2MQwBr5B9ShdXlgu_Tfz5yRigVS9HweLDZkcKMN7LqBnFwWu1P0BMLGYBKy" https://nbi.172.21.248.230.nip.io:443/osm/ -v + #- ls -la #- chmod +x newToken.py #- ./newToken.py -- GitLab From ab0cb682770084eb2725c6c7236e07282f26067a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 09:33:32 +0000 Subject: [PATCH 124/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d830085..5d6bef9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,7 +26,7 @@ variables: DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6HvvK2V3zzoVxZR7n8uOHwAvBwCoxckLXZiMOCPC7XrQNaS9Mq0i6qME5jxclPffSG1Mn34_VSixN4kWkZV04nTZ_zs9Q-iO01FJAcwH5AmD0C4xRIx-sIeTGVZ0hw2jY8fDlJXNW1r3yzZNZQuRoOjs0MUlkQiHKPHOIp2tbx0v_X8HFOUrhxRrP9Ahaoe7bmEQ"}}' + DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6SoEtiAc7nm0u3ryxbkYr2ad2haBOtL86aP_2JjfYR4WhKMeH0au_0etG9GHOnyYN1kvd8lG1T8_NKjB0p46cTah6TsWieyVMzxz7cHKwAZtlhsSqQctT0PN3KR2h1EMdBN4jqV3y2MQwBr5B9ShdXlgu_Tfz5yRigVS9HweLDZkcKMN7LqBnFwWu1P0BMLGYBKy"}}' -- GitLab From bf1e93624c04d2365a900bb1b663bfdc5fe53a62 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 10:09:57 +0000 Subject: [PATCH 125/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5d6bef9..3116f8f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -62,7 +62,7 @@ stages: - cleanup include: - - template: DAST.gitlab-ci.yml + - template: DAST.latest.gitlab-ci.yml - template: API-Fuzzing.latest.gitlab-ci.yml workflow: -- GitLab From 7a7b7dfb8c7110103fa39759b9f5ea0b6345a9b8 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 10:28:04 +0000 Subject: [PATCH 126/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3116f8f..b06e0c1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -191,6 +191,7 @@ dast: #- ls -la apifuzzer_fuzz: + when: never timeout: 3 hours stage: fuzz -- GitLab From 7e55d07aa9ed642873a62a331dc063ea2de52861 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 10:29:05 +0000 Subject: [PATCH 127/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b06e0c1..36824f0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -191,7 +191,7 @@ dast: #- ls -la apifuzzer_fuzz: - when: never + when: manual timeout: 3 hours stage: fuzz -- GitLab From cfdbb1f89dcb1a2e25315d362901018712188e26 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 10:33:12 +0000 Subject: [PATCH 128/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 36824f0..c768e3f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,6 +20,7 @@ variables: GITLAB_TOKEN: $GITLAB_TOKEN ENV: "New" PIPELINE: "SECURITY" + API_FUZZING_DISABLED: 'True' #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" -- GitLab From fb1a76f32856d8880b41d27be146218a868bf216 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 10:33:29 +0000 Subject: [PATCH 129/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c768e3f..e15a67d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -192,7 +192,6 @@ dast: #- ls -la apifuzzer_fuzz: - when: manual timeout: 3 hours stage: fuzz -- GitLab From fe661a836c47991124b78ff1f9ad85adae14a731 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 16:43:36 +0000 Subject: [PATCH 130/292] Update newToken.py, .gitlab-ci.yml files --- .gitlab-ci.yml | 2 +- newToken.py | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e15a67d..8accde6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,7 +27,7 @@ variables: DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6SoEtiAc7nm0u3ryxbkYr2ad2haBOtL86aP_2JjfYR4WhKMeH0au_0etG9GHOnyYN1kvd8lG1T8_NKjB0p46cTah6TsWieyVMzxz7cHKwAZtlhsSqQctT0PN3KR2h1EMdBN4jqV3y2MQwBr5B9ShdXlgu_Tfz5yRigVS9HweLDZkcKMN7LqBnFwWu1P0BMLGYBKy"}}' + DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6Y_OSzsl32IkQC_SGCNjaDMCXeKwma7oJSYm_VcbXBt7pgDT1etb9cdikti0o-r5cmHftOwx7Qpq8eQqa79kUQCk6pJIzDJdo9gf4s0wtTGiyTnhehpDRPNDQQFMIUbN5LdKWpHamuUhHzKArls8wP1n6c_OKYN0UD0fNiBizVsXy8ofQ5vfaAEZEqTCV5JYgjiS"}}' diff --git a/newToken.py b/newToken.py index 7a99550..eb6c40c 100644 --- a/newToken.py +++ b/newToken.py @@ -2,13 +2,22 @@ import requests import os -r = requests.post("https://{}/osm/admin/v1/tokens".format(os.environ.get('OSM_HOSTNAME')), verify=False, headers={"Accept":"application/json"}, json={ +attemtps = 3 + +while (attemtps): + r = requests.post("https://{}/osm/admin/v1/tokens".format(os.environ.get('OSM_HOSTNAME')), verify=False, headers={"Accept":"application/json"}, json={ "username": "admin", "password": "admin", "project": "admin" }) -token = r.json()["id"] -obj = '{"headers": {"Authorization": "Bearer %s"}}' % (token) + + if (r.status_code == 200): + token = r.json()["id"] + obj = '{"headers": {"Authorization": "Bearer %s"}}' % (token) + else: + print("Failed to get Auth token") + attemtps -= 1 + f = open("token.json", "w") f.write(obj) f.close() -- GitLab From e398981128fe5a4dac22b129ec6819e120935e75 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 16:50:03 +0000 Subject: [PATCH 131/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8accde6..fa3d109 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,7 +27,7 @@ variables: DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6Y_OSzsl32IkQC_SGCNjaDMCXeKwma7oJSYm_VcbXBt7pgDT1etb9cdikti0o-r5cmHftOwx7Qpq8eQqa79kUQCk6pJIzDJdo9gf4s0wtTGiyTnhehpDRPNDQQFMIUbN5LdKWpHamuUhHzKArls8wP1n6c_OKYN0UD0fNiBizVsXy8ofQ5vfaAEZEqTCV5JYgjiS"}}' + DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf"}}' -- GitLab From e93a24fe7286b2b51bcb50575738b3edcb810b44 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 16:52:40 +0000 Subject: [PATCH 132/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fa3d109..a377fd5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -183,7 +183,7 @@ dast: - echo $PWD - 'ls -la ../' - > - curl -k -H "Authorization: Bearer gAAAAABh6SoEtiAc7nm0u3ryxbkYr2ad2haBOtL86aP_2JjfYR4WhKMeH0au_0etG9GHOnyYN1kvd8lG1T8_NKjB0p46cTah6TsWieyVMzxz7cHKwAZtlhsSqQctT0PN3KR2h1EMdBN4jqV3y2MQwBr5B9ShdXlgu_Tfz5yRigVS9HweLDZkcKMN7LqBnFwWu1P0BMLGYBKy" https://nbi.172.21.248.230.nip.io:443/osm/ -v + curl -k -H "Authorization: Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf" https://nbi.172.21.248.230.nip.io:443/osm/ -v #- ls -la #- chmod +x newToken.py -- GitLab From c4fd0d51b6c03c4f9b391c2ea735712c08dcb7a1 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 16:56:44 +0000 Subject: [PATCH 133/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a377fd5..19f83c1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,7 +24,8 @@ variables: #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" + #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/"" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf"}}' -- GitLab From e8fcf55766b44ed9223972d191d997da0fe3d93a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 16:56:52 +0000 Subject: [PATCH 134/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 19f83c1..6f0e8f4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,7 +25,7 @@ variables: #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/"" + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf"}}' -- GitLab From 1b54d7abd91be43f43730636173a7b49b974e064 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 17:03:40 +0000 Subject: [PATCH 135/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6f0e8f4..6473f85 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,7 @@ variables: DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" #DAST_API_OVERRIDES_FILE: token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf"}}' + DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf"}}" -- GitLab From 3818d30a544fbac629e40bad22039d9b1944c065 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 17:05:44 +0000 Subject: [PATCH 136/292] Update hive/token.json, .gitlab-ci.yml files --- .gitlab-ci.yml | 4 ++-- hive/token.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6473f85..005ba64 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,9 +26,9 @@ variables: #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - #DAST_API_OVERRIDES_FILE: token.json + DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf"}}" + #DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf"}}" diff --git a/hive/token.json b/hive/token.json index 7536a5b..6403188 100644 --- a/hive/token.json +++ b/hive/token.json @@ -1,5 +1,5 @@ { "headers" : { - "Authorization" : "Bearer gAAAAABh6Dq6-uYumFpdeAqsKS3VCsfYDqOfv4doq-1ZmWuVwy5cjDyaO6ches58kHQSiQe-OVQ_6gFMrkTMZwRIfXP99Mxuk7TluQmTq6qFz4PpU1ms6Ivuxy8yolqQ1RwwTlcczCHMl4ljPfH9Cnw6FXt_lzhnBipKKhqg2Rs--ghMZh3BcNrFSnxsaeMc7MwvV8r0KmfQ" + "Authorization" : "Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf" } } -- GitLab From 4ef712eae9529b619fe8eb9baefbf22e67d98c7b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 17:07:11 +0000 Subject: [PATCH 137/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 005ba64..b7f1fd2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -180,6 +180,8 @@ dast: before_script: - echo "Preparing DAST" - echo $DAST_API_OVERRIDES_ENV + - env + - echo DAST_API_OVERRIDES_FILE - echo $PWD - 'ls -la ../' -- GitLab From a8b3ece00e075e7077e52f1bc5162ccfb039a935 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 17:09:39 +0000 Subject: [PATCH 138/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b7f1fd2..1f67778 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -181,7 +181,7 @@ dast: - echo "Preparing DAST" - echo $DAST_API_OVERRIDES_ENV - env - - echo DAST_API_OVERRIDES_FILE + - echo $DAST_API_OVERRIDES_FILE - echo $PWD - 'ls -la ../' -- GitLab From 38ed81e46b52231f4107f5ae78687989a36f7ed5 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 17:51:58 +0000 Subject: [PATCH 139/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1f67778..8f5c7c2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,7 +20,7 @@ variables: GITLAB_TOKEN: $GITLAB_TOKEN ENV: "New" PIPELINE: "SECURITY" - API_FUZZING_DISABLED: 'True' + #API_FUZZING_DISABLED: 'True' #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" @@ -28,7 +28,8 @@ variables: DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - #DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf"}}" + #DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}" + FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}'' @@ -50,17 +51,17 @@ variables: #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" FUZZAPI_PROFILE: Quick-10 - FUZZAPI_OPENAPI: hive/openapi.json + FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" - FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: newToken.py - FUZZAPI_OVERRIDES_INTERVAL: 300 + #FUZZAPI_OVERRIDES_FILE: token.json + #FUZZAPI_OVERRIDES_CMD: newToken.py + #FUZZAPI_OVERRIDES_INTERVAL: 300 stages: - deploy - test - - dast - fuzz + - dast - cleanup include: -- GitLab From bc78fedd796ca2c2884e48c126998a7c5c9ab472 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 17:52:37 +0000 Subject: [PATCH 140/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8f5c7c2..9b655be 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ variables: DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" #DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}" - FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}'' + FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}' -- GitLab From b5507096701500f867e12b6208a6b17631e47700 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 19:19:47 +0000 Subject: [PATCH 141/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9b655be..bccd543 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ variables: DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" #DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}" - FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}' + #FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}' @@ -51,11 +51,11 @@ variables: #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" FUZZAPI_PROFILE: Quick-10 - FUZZAPI_OPENAPI: hive/test-openapi.json + FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" - #FUZZAPI_OVERRIDES_FILE: token.json - #FUZZAPI_OVERRIDES_CMD: newToken.py - #FUZZAPI_OVERRIDES_INTERVAL: 300 + FUZZAPI_OVERRIDES_FILE: token.json + FUZZAPI_OVERRIDES_CMD: python3 newToken.py + FUZZAPI_OVERRIDES_INTERVAL: 300 stages: - deploy -- GitLab From d296c1a9f6ace859801960e0d43348bb03a55cb6 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 19:22:03 +0000 Subject: [PATCH 142/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bccd543..970d83a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -54,7 +54,7 @@ variables: FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: python3 newToken.py + FUZZAPI_OVERRIDES_CMD: "python3 newToken.py" FUZZAPI_OVERRIDES_INTERVAL: 300 stages: -- GitLab From b9f2efa7769f8595828a6cafb57182cbcb278ab1 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 20:41:40 +0000 Subject: [PATCH 143/292] Update .gitlab-ci.yml, newToken.py files --- .gitlab-ci.yml | 12 ++++++------ newToken.py | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 970d83a..aebfe94 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -51,11 +51,11 @@ variables: #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" FUZZAPI_PROFILE: Quick-10 - FUZZAPI_OPENAPI: hive/openapi.json + FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: "python3 newToken.py" - FUZZAPI_OVERRIDES_INTERVAL: 300 + FUZZAPI_OVERRIDES_CMD: "newToken.py" + FUZZAPI_OVERRIDES_INTERVAL: 5 stages: - deploy @@ -208,9 +208,9 @@ apifuzzer_fuzz: - whoami - ls -la - chmod +x newToken.py - - ./newToken.py - - cat token.json - - chmod 766 token.json + #- ./newToken.py + #- cat token.json + #- chmod 766 token.json - ls -la #- apk add yq diff --git a/newToken.py b/newToken.py index eb6c40c..5f8fcc2 100644 --- a/newToken.py +++ b/newToken.py @@ -14,6 +14,7 @@ while (attemtps): if (r.status_code == 200): token = r.json()["id"] obj = '{"headers": {"Authorization": "Bearer %s"}}' % (token) + break else: print("Failed to get Auth token") attemtps -= 1 -- GitLab From 3c616c5813d13b1d1d3d971ab8a7d2f159f37492 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 20:57:21 +0000 Subject: [PATCH 144/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aebfe94..023571c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -21,6 +21,7 @@ variables: ENV: "New" PIPELINE: "SECURITY" #API_FUZZING_DISABLED: 'True' + FUZZAPI_VERBOSE: 1 #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" -- GitLab From 38d2d2934787b9aaa737e22fe4a0f78f90204187 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 20:59:37 +0000 Subject: [PATCH 145/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 023571c..f16420a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -209,9 +209,9 @@ apifuzzer_fuzz: - whoami - ls -la - chmod +x newToken.py - #- ./newToken.py - #- cat token.json - #- chmod 766 token.json + - ./newToken.py + - cat token.json + - chmod 766 token.json - ls -la #- apk add yq -- GitLab From a9e73f2c66913dc92c930fc8948bd09e0de75e05 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 21:03:08 +0000 Subject: [PATCH 146/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f16420a..6a6a1cf 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -51,7 +51,8 @@ variables: #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" - FUZZAPI_PROFILE: Quick-10 + #FUZZAPI_PROFILE: Quick-10 + FUZZAPI_PROFILE: Long-100 FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json -- GitLab From 5adf3f73f94ee1f564d1a63d95bcf969066d4cfc Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 21:08:35 +0000 Subject: [PATCH 147/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6a6a1cf..c9a8420 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -222,6 +222,7 @@ apifuzzer_fuzz: after_script: - echo $FUZZAPI_OVERRIDES_FILE - whoami + - ./newToken.py - ls -la - cat token.json -- GitLab From a5e0cc03a964a143f76eb13147526c501dca969a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 21:13:02 +0000 Subject: [PATCH 148/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c9a8420..01fb693 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,7 +56,7 @@ variables: FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: "newToken.py" + FUZZAPI_OVERRIDES_CMD: "./newToken.py" FUZZAPI_OVERRIDES_INTERVAL: 5 stages: -- GitLab From 61251f8f7fb2246f7f6793b3a3ab689ffd190860 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 21:13:19 +0000 Subject: [PATCH 149/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 01fb693..7b4bde9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -222,7 +222,7 @@ apifuzzer_fuzz: after_script: - echo $FUZZAPI_OVERRIDES_FILE - whoami - - ./newToken.py + #- ./newToken.py - ls -la - cat token.json -- GitLab From e445d75f9ae0dd1d4c7f7694b333f056445878d1 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 20 Jan 2022 21:19:51 +0000 Subject: [PATCH 150/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7b4bde9..d7f37b5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -213,7 +213,7 @@ apifuzzer_fuzz: - ./newToken.py - cat token.json - chmod 766 token.json - - ls -la + - ls -la --full-time #- apk add yq #- wget $OPENAPI_URL -O openapi.yaml @@ -223,7 +223,7 @@ apifuzzer_fuzz: - echo $FUZZAPI_OVERRIDES_FILE - whoami #- ./newToken.py - - ls -la + - ls -la --full-time - cat token.json -- GitLab From 5c7155ed3634593feef602341eef258fb0b76a70 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 09:12:55 +0000 Subject: [PATCH 151/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d7f37b5..a501dbd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,8 +56,8 @@ variables: FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: "./newToken.py" - FUZZAPI_OVERRIDES_INTERVAL: 5 + FUZZAPI_OVERRIDES_CMD: "newToken.py" + FUZZAPI_OVERRIDES_INTERVAL: 1 stages: - deploy -- GitLab From 6a70f9d93ec7c928c0d1e806742a86bf7a6a6645 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 09:13:29 +0000 Subject: [PATCH 152/292] Update newToken.py --- newToken.py | 1 + 1 file changed, 1 insertion(+) diff --git a/newToken.py b/newToken.py index 5f8fcc2..b9fe4e6 100644 --- a/newToken.py +++ b/newToken.py @@ -3,6 +3,7 @@ import requests import os attemtps = 3 +print("Generating Token...") while (attemtps): r = requests.post("https://{}/osm/admin/v1/tokens".format(os.environ.get('OSM_HOSTNAME')), verify=False, headers={"Accept":"application/json"}, json={ -- GitLab From 794aab81993d1bb7620908c675d415f287525f04 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 09:16:08 +0000 Subject: [PATCH 153/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a501dbd..ac738ff 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,7 +56,7 @@ variables: FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: "newToken.py" + FUZZAPI_OVERRIDES_CMD: " python3 newToken.py" FUZZAPI_OVERRIDES_INTERVAL: 1 stages: -- GitLab From 7636d96e6dd5e493eb1cdd90751bf0857fa1d185 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 09:32:41 +0000 Subject: [PATCH 154/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ac738ff..511abbc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,7 +56,7 @@ variables: FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: " python3 newToken.py" + FUZZAPI_OVERRIDES_CMD: "python newToken.py" FUZZAPI_OVERRIDES_INTERVAL: 1 stages: -- GitLab From b040f2b2ed90cb49c23b18f0b7cb110102834e35 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 09:33:45 +0000 Subject: [PATCH 155/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 511abbc..e2e6f85 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,7 +56,7 @@ variables: FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: "python newToken.py" + FUZZAPI_OVERRIDES_CMD: newToken.py FUZZAPI_OVERRIDES_INTERVAL: 1 stages: -- GitLab From 257b3135111c205db633e06c4121f84ae808af1c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 09:41:37 +0000 Subject: [PATCH 156/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e2e6f85..d799973 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,7 @@ variables: FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json FUZZAPI_OVERRIDES_CMD: newToken.py - FUZZAPI_OVERRIDES_INTERVAL: 1 + FUZZAPI_OVERRIDES_INTERVAL: 10 stages: - deploy -- GitLab From 297af16c55003fb7a516114f087bd5c6213b06e1 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 14:08:21 +0000 Subject: [PATCH 157/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d799973..f95b611 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,6 +24,7 @@ variables: FUZZAPI_VERBOSE: 1 + #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" @@ -69,6 +70,7 @@ stages: include: - template: DAST.latest.gitlab-ci.yml - template: API-Fuzzing.latest.gitlab-ci.yml + - template: Security/SAST.gitlab-ci.yml workflow: rules: -- GitLab From fe82b0210f8f100e9060ac7a8c75e4baee2a636e Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 14:41:19 +0000 Subject: [PATCH 158/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f95b611..4f407d6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -79,6 +79,15 @@ workflow: - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH + +pytest: + stage: test + script: + - pytest --junitxml=report.xml + artifacts: + when: always + reports: + junit: report.xml deploy: -- GitLab From 1f15b84c02b57d4971d766e551f10a38fcf11291 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 18:28:35 +0000 Subject: [PATCH 159/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4f407d6..85668d4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -71,6 +71,7 @@ include: - template: DAST.latest.gitlab-ci.yml - template: API-Fuzzing.latest.gitlab-ci.yml - template: Security/SAST.gitlab-ci.yml + - template: Security/Container-Scanning.gitlab-ci.yml workflow: rules: @@ -80,16 +81,11 @@ workflow: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH -pytest: - stage: test - script: - - pytest --junitxml=report.xml - artifacts: - when: always - reports: - junit: report.xml - +container_scanning: + variables: + CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA + deploy: stage: deploy tags: -- GitLab From b2829d7fc5b688c609238843070df4de6ea0970f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 18:30:55 +0000 Subject: [PATCH 160/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 85668d4..b0e548b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -84,6 +84,7 @@ workflow: container_scanning: variables: + CS_MAJOR_VERSION: 4 CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA deploy: -- GitLab From 5b53c39946dbb638a61b9704856c8c1229152a76 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 18:33:13 +0000 Subject: [PATCH 161/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b0e548b..c6c480e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -82,7 +82,7 @@ workflow: - if: $CI_COMMIT_BRANCH -container_scanning: +container_scanning_new: variables: CS_MAJOR_VERSION: 4 CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA -- GitLab From 1eacec2a629f8bb4408b6a9be83fa534fa6d51d3 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 18:39:20 +0000 Subject: [PATCH 162/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c6c480e..c3e6ee7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -85,7 +85,10 @@ workflow: container_scanning_new: variables: CS_MAJOR_VERSION: 4 - CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA + #CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA + IMAGE_TAG: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA + SECURE_LOG_LEVEL: "debug" + TRIVY_DEBUG: true deploy: stage: deploy -- GitLab From 4884a0683986b3a093da926651632ad48877b38d Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 18:40:27 +0000 Subject: [PATCH 163/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c3e6ee7..3ba852e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -88,7 +88,7 @@ container_scanning_new: #CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA IMAGE_TAG: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA SECURE_LOG_LEVEL: "debug" - TRIVY_DEBUG: true + TRIVY_DEBUG: "true" deploy: stage: deploy -- GitLab From bdd73e1e0906ed1ca079390b99057600c0fe1d81 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 18:43:27 +0000 Subject: [PATCH 164/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3ba852e..4eed99d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -89,6 +89,7 @@ container_scanning_new: IMAGE_TAG: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA SECURE_LOG_LEVEL: "debug" TRIVY_DEBUG: "true" + GIT_STRATEGY: fetch deploy: stage: deploy -- GitLab From 037b8a9e5d4323d3b19d80773b327c630dc58ec3 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 18:44:03 +0000 Subject: [PATCH 165/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4eed99d..7ce8db3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -86,7 +86,7 @@ container_scanning_new: variables: CS_MAJOR_VERSION: 4 #CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA - IMAGE_TAG: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA + #IMAGE_TAG: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA SECURE_LOG_LEVEL: "debug" TRIVY_DEBUG: "true" GIT_STRATEGY: fetch -- GitLab From 6396759e10f507c4a937ae3a62fabd1e38fc4d82 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 18:51:42 +0000 Subject: [PATCH 166/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7ce8db3..72b037a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -72,6 +72,7 @@ include: - template: API-Fuzzing.latest.gitlab-ci.yml - template: Security/SAST.gitlab-ci.yml - template: Security/Container-Scanning.gitlab-ci.yml + - template: Security/Dependency-Scanning.gitlab-ci.yml workflow: rules: @@ -82,6 +83,7 @@ workflow: - if: $CI_COMMIT_BRANCH + container_scanning_new: variables: CS_MAJOR_VERSION: 4 -- GitLab From db4782b3daddbda13d69c78f3209910d890c12fe Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 19:01:05 +0000 Subject: [PATCH 167/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 72b037a..f3ce0ee 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -65,6 +65,7 @@ stages: - test - fuzz - dast + - conformance - cleanup include: @@ -130,8 +131,8 @@ deploy: -testing: - stage: test +TST10: + stage: conformance environment: name: $ENV tags: -- GitLab From 5eb3a8082425373a59a8ff4aef1cf0f16b2ceca5 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 19:53:33 +0000 Subject: [PATCH 168/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f3ce0ee..3722e92 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -94,6 +94,11 @@ container_scanning_new: TRIVY_DEBUG: "true" GIT_STRATEGY: fetch +dependency_scanning: + stage: test + variables: + CI_DEBUG_TRACE: "true" + deploy: stage: deploy tags: -- GitLab From 8cf1259365caedcc076ab44548af3a7e895d46af Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 20:00:52 +0000 Subject: [PATCH 169/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3722e92..8185ef5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,6 +59,7 @@ variables: FUZZAPI_OVERRIDES_FILE: token.json FUZZAPI_OVERRIDES_CMD: newToken.py FUZZAPI_OVERRIDES_INTERVAL: 10 + IGNORE_DEPRECATION_ERROR: "true" stages: - deploy -- GitLab From 8e6503e8ee7c8028b0e4ba6980a959144dde5235 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 20:04:42 +0000 Subject: [PATCH 170/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8185ef5..5028d77 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -90,7 +90,8 @@ container_scanning_new: variables: CS_MAJOR_VERSION: 4 #CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA - #IMAGE_TAG: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA + #IMAGE_TAG: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA + IMAGE_TAG: "osm.etsi.org:5050/devops/cicd/opensourcemano/osmclient" SECURE_LOG_LEVEL: "debug" TRIVY_DEBUG: "true" GIT_STRATEGY: fetch -- GitLab From ed00de7481fac79e8ef210a11c8d6597e7fb5851 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 20:11:45 +0000 Subject: [PATCH 171/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5028d77..2aa7379 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -94,7 +94,7 @@ container_scanning_new: IMAGE_TAG: "osm.etsi.org:5050/devops/cicd/opensourcemano/osmclient" SECURE_LOG_LEVEL: "debug" TRIVY_DEBUG: "true" - GIT_STRATEGY: fetch + #GIT_STRATEGY: fetch dependency_scanning: stage: test -- GitLab From 19e99fe761b1a574f5f8385d0a1f1da3e2890f9f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 20:13:25 +0000 Subject: [PATCH 172/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2aa7379..bae82c0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -84,6 +84,9 @@ workflow: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH +container_scanning: + variables: + CS_MAJOR_VERSION: 4 container_scanning_new: -- GitLab From f6c4f3573a23c7347119a17a140e627b60c015f3 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 20:31:12 +0000 Subject: [PATCH 173/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bae82c0..1559033 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -61,6 +61,9 @@ variables: FUZZAPI_OVERRIDES_INTERVAL: 10 IGNORE_DEPRECATION_ERROR: "true" +services: + - $CI_REGISTRY/devops/docker:dind-nx1.0 + stages: - deploy - test -- GitLab From b70fe9b7108662c508b8dcb3031594adcf781732 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 20:38:35 +0000 Subject: [PATCH 174/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1559033..b83d034 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -61,9 +61,6 @@ variables: FUZZAPI_OVERRIDES_INTERVAL: 10 IGNORE_DEPRECATION_ERROR: "true" -services: - - $CI_REGISTRY/devops/docker:dind-nx1.0 - stages: - deploy - test @@ -93,6 +90,9 @@ container_scanning: container_scanning_new: + services: + - $CI_REGISTRY/devops/docker:dind-nx1.0 + variables: CS_MAJOR_VERSION: 4 #CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA -- GitLab From 02b97405dc3a28d67b3c47f8b6311374277555c8 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 21 Jan 2022 21:29:55 +0000 Subject: [PATCH 175/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b83d034..d884004 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,10 +27,12 @@ variables: #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - DAST_API_OVERRIDES_FILE: hive/token.json + #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_WEBSITE: "https://ui.172.21.248.230.nip.io:443/osm/" + #DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - #DAST_API_OVERRIDES_ENV: "{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}" + DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6yWKMfwq6RoKiLUCDKrCyUmcVCi3hqlDUWEw_ABwQrkklbfWrBn-yosL4kDR4MgMIjdPLjyFJsaTbkfBEuaGlqdjBgVQ4NMdxv4fr0NbaHke-9pXXuiY-me4re8WH9o4e1XI15sJdxlRg7Za5A9snQsK7pe9jKeku8SQydRI8Tby1B0iayaQiC_jr8BHg1psGN6u"}}' + #FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}' @@ -63,9 +65,9 @@ variables: stages: - deploy + - dast - test - fuzz - - dast - conformance - cleanup @@ -217,7 +219,7 @@ dast: - echo $PWD - 'ls -la ../' - > - curl -k -H "Authorization: Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf" https://nbi.172.21.248.230.nip.io:443/osm/ -v + curl -k -H "Authorization: Bearer gAAAAABh6yWKMfwq6RoKiLUCDKrCyUmcVCi3hqlDUWEw_ABwQrkklbfWrBn-yosL4kDR4MgMIjdPLjyFJsaTbkfBEuaGlqdjBgVQ4NMdxv4fr0NbaHke-9pXXuiY-me4re8WH9o4e1XI15sJdxlRg7Za5A9snQsK7pe9jKeku8SQydRI8Tby1B0iayaQiC_jr8BHg1psGN6u" https://ui.172.21.248.230.nip.io:443/osm/ -v #- ls -la #- chmod +x newToken.py -- GitLab From f2437581688a016f4dcb3000f0b8d52a98d0912c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 24 Jan 2022 10:14:19 +0000 Subject: [PATCH 176/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d884004..57695c2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -77,6 +77,7 @@ include: - template: Security/SAST.gitlab-ci.yml - template: Security/Container-Scanning.gitlab-ci.yml - template: Security/Dependency-Scanning.gitlab-ci.yml + - template: Coverage-Fuzzing.gitlab-ci.yml workflow: rules: -- GitLab From 60aa389c24dba0291ebc21b1661563497aeec93b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 24 Jan 2022 10:24:01 +0000 Subject: [PATCH 177/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 57695c2..407a441 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,7 +31,7 @@ variables: DAST_WEBSITE: "https://ui.172.21.248.230.nip.io:443/osm/" #DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6yWKMfwq6RoKiLUCDKrCyUmcVCi3hqlDUWEw_ABwQrkklbfWrBn-yosL4kDR4MgMIjdPLjyFJsaTbkfBEuaGlqdjBgVQ4NMdxv4fr0NbaHke-9pXXuiY-me4re8WH9o4e1XI15sJdxlRg7Za5A9snQsK7pe9jKeku8SQydRI8Tby1B0iayaQiC_jr8BHg1psGN6u"}}' + DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n4JpGCrezIW5oZte7_8u2gapc97qb6LqRcsgHIKdt0QG6LAe_-A7Nedf-w-IX_T_n8"}}' #FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}' @@ -72,12 +72,10 @@ stages: - cleanup include: - - template: DAST.latest.gitlab-ci.yml + - template: DAST.gitlab-ci.yml - template: API-Fuzzing.latest.gitlab-ci.yml - template: Security/SAST.gitlab-ci.yml - - template: Security/Container-Scanning.gitlab-ci.yml - template: Security/Dependency-Scanning.gitlab-ci.yml - - template: Coverage-Fuzzing.gitlab-ci.yml workflow: rules: @@ -86,24 +84,7 @@ workflow: - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH - -container_scanning: - variables: - CS_MAJOR_VERSION: 4 - -container_scanning_new: - services: - - $CI_REGISTRY/devops/docker:dind-nx1.0 - - variables: - CS_MAJOR_VERSION: 4 - #CS_DEFAULT_BRANCH_IMAGE: $CI_REGISTRY_IMAGE/$CI_DEFAULT_BRANCH:$CI_COMMIT_SHA - #IMAGE_TAG: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_SLUG:$CI_COMMIT_SHA - IMAGE_TAG: "osm.etsi.org:5050/devops/cicd/opensourcemano/osmclient" - SECURE_LOG_LEVEL: "debug" - TRIVY_DEBUG: "true" - #GIT_STRATEGY: fetch dependency_scanning: stage: test @@ -220,7 +201,7 @@ dast: - echo $PWD - 'ls -la ../' - > - curl -k -H "Authorization: Bearer gAAAAABh6yWKMfwq6RoKiLUCDKrCyUmcVCi3hqlDUWEw_ABwQrkklbfWrBn-yosL4kDR4MgMIjdPLjyFJsaTbkfBEuaGlqdjBgVQ4NMdxv4fr0NbaHke-9pXXuiY-me4re8WH9o4e1XI15sJdxlRg7Za5A9snQsK7pe9jKeku8SQydRI8Tby1B0iayaQiC_jr8BHg1psGN6u" https://ui.172.21.248.230.nip.io:443/osm/ -v + curl -k -H "Authorization: Bearer gAAAAABh7n4JpGCrezIW5oZte7_8u2gapc97qb6LqRcsgHIKdt0QG6LAe_-A7Nedf-w-IX_T_n8" https://ui.172.21.248.230.nip.io:443/osm/ -v #- ls -la #- chmod +x newToken.py -- GitLab From 9a32e26710490451d09f3ecc2cb297c383c47e86 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 24 Jan 2022 10:26:23 +0000 Subject: [PATCH 178/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 407a441..481dbe0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,7 +31,7 @@ variables: DAST_WEBSITE: "https://ui.172.21.248.230.nip.io:443/osm/" #DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n4JpGCrezIW5oZte7_8u2gapc97qb6LqRcsgHIKdt0QG6LAe_-A7Nedf-w-IX_T_n8"}}' + DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG"}}' #FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}' @@ -201,7 +201,7 @@ dast: - echo $PWD - 'ls -la ../' - > - curl -k -H "Authorization: Bearer gAAAAABh7n4JpGCrezIW5oZte7_8u2gapc97qb6LqRcsgHIKdt0QG6LAe_-A7Nedf-w-IX_T_n8" https://ui.172.21.248.230.nip.io:443/osm/ -v + curl -k -H "Authorization: Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" https://ui.172.21.248.230.nip.io:443/osm/ -v #- ls -la #- chmod +x newToken.py -- GitLab From 0ed7c8f5194ea41ea8e721c4523f142a555028cd Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 24 Jan 2022 10:57:55 +0000 Subject: [PATCH 179/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 481dbe0..629b013 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,7 +31,11 @@ variables: DAST_WEBSITE: "https://ui.172.21.248.230.nip.io:443/osm/" #DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG"}}' + #DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG"}}' + DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" + + + #FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}' -- GitLab From 6f984e0841d8ee4e74e9636e4e1149aa7a9469a6 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 24 Jan 2022 11:09:18 +0000 Subject: [PATCH 180/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 629b013..0d4e5e2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -32,7 +32,8 @@ variables: #DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" #DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG"}}' - DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" + #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" + DAST_REQUEST_HEADERS: "Authorization:Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" -- GitLab From ca89933800293d000ed45dc2bf600d6543be82db Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 24 Jan 2022 11:23:49 +0000 Subject: [PATCH 181/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0d4e5e2..9498e07 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -33,7 +33,8 @@ variables: #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" #DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG"}}' #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" - DAST_REQUEST_HEADERS: "Authorization:Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" + #DAST_REQUEST_HEADERS: "Authorization:Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" + DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS -- GitLab From c4643dee010e1118c1e594e469100410066b5c8a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 09:36:52 +0000 Subject: [PATCH 182/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9498e07..8f8dfbc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,6 +56,8 @@ variables: #OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false #FUZZAPI_OPENAPI: openapi.json + DAST_DEBUG: "true" + -- GitLab From 98da2fe432da277e9b68b458ed83a8b66c208673 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 09:47:55 +0000 Subject: [PATCH 183/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8f8dfbc..e71d106 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -209,7 +209,7 @@ dast: - echo $PWD - 'ls -la ../' - > - curl -k -H "Authorization: Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" https://ui.172.21.248.230.nip.io:443/osm/ -v + curl -k -H "Authorization: Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f" https://ui.172.21.248.230.nip.io:443/osm/ -v #- ls -la #- chmod +x newToken.py -- GitLab From d2502620e65c4d3bd58ef01f6be64936ec4cb759 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 09:53:01 +0000 Subject: [PATCH 184/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e71d106..872ad69 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,7 @@ variables: #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - DAST_WEBSITE: "https://ui.172.21.248.230.nip.io:443/osm/" + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" #DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" #DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG"}}' -- GitLab From 908794c3131bd23ddc48f87bf7099329302080e2 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 09:56:34 +0000 Subject: [PATCH 185/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 872ad69..b01bfca 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -34,7 +34,7 @@ variables: #DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG"}}' #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" #DAST_REQUEST_HEADERS: "Authorization:Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" - DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS @@ -198,6 +198,8 @@ TST10: dast: stage: dast + variables: + DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS environment: name: $ENV before_script: @@ -205,6 +207,7 @@ dast: - echo $DAST_API_OVERRIDES_ENV - env - echo $DAST_API_OVERRIDES_FILE + - echo $DAST_REQUEST_HEADERS - echo $PWD - 'ls -la ../' -- GitLab From b4ccb50810176408300553e370afaf200131e5ed Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 10:00:14 +0000 Subject: [PATCH 186/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b01bfca..337ceb7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,7 +31,7 @@ variables: DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" #DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - #DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG"}}' + #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" #DAST_REQUEST_HEADERS: "Authorization:Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS @@ -199,7 +199,8 @@ TST10: dast: stage: dast variables: - DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f"}}' environment: name: $ENV before_script: -- GitLab From 1245a8cf0d3ccb8269cb1e0ca3caf7df53bed8d9 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 10:07:12 +0000 Subject: [PATCH 187/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 337ceb7..7824705 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -200,17 +200,19 @@ dast: stage: dast variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + DAST_API_OPENAPI: hive/openapi.json DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f"}}' environment: name: $ENV before_script: - echo "Preparing DAST" - echo $DAST_API_OVERRIDES_ENV - - env + #- env - echo $DAST_API_OVERRIDES_FILE - echo $DAST_REQUEST_HEADERS - echo $PWD + - ls -la - 'ls -la ../' - > curl -k -H "Authorization: Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f" https://ui.172.21.248.230.nip.io:443/osm/ -v -- GitLab From 2a9e5622b2d4055cdfa985a60db58deee586a821 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 10:14:05 +0000 Subject: [PATCH 188/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7824705..4fc34b8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,7 @@ variables: #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + #DAST_API_OVERRIDES_FILE: hive/token.json #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" -- GitLab From f34ada7e692419acce6785933bff29aa0ac5b9b3 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 10:14:33 +0000 Subject: [PATCH 189/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4fc34b8..1c57df5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -200,7 +200,8 @@ dast: stage: dast variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - DAST_API_OPENAPI: hive/openapi.json + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + #DAST_API_OPENAPI: hive/openapi.json DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f"}}' environment: name: $ENV -- GitLab From 5ee38506df959b5c4748943e6335178ab912477c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 10:28:47 +0000 Subject: [PATCH 190/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1c57df5..f220075 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,7 +56,7 @@ variables: #OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false #FUZZAPI_OPENAPI: openapi.json - DAST_DEBUG: "true" + @@ -201,12 +201,16 @@ dast: variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_DEBUG: "true" #DAST_API_OPENAPI: hive/openapi.json - DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f"}}' + DAST_API_OVERRIDES_FILE: hive/token.json + #DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f"}}' environment: name: $ENV before_script: - echo "Preparing DAST" + - ./newToken.py + - cat token.json - echo $DAST_API_OVERRIDES_ENV #- env - echo $DAST_API_OVERRIDES_FILE @@ -224,6 +228,9 @@ dast: #- cat token.json #- ls -la + + + apifuzzer_fuzz: timeout: 3 hours -- GitLab From 009928dafee97c6b2fd88fee42586a6b8f73226b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 10:41:02 +0000 Subject: [PATCH 191/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f220075..6df785f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -201,6 +201,8 @@ dast: variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_USERNAME: "admin" + DAST_PASSWORD: $TEST_API_PASSWORD DAST_DEBUG: "true" #DAST_API_OPENAPI: hive/openapi.json DAST_API_OVERRIDES_FILE: hive/token.json -- GitLab From 18923ec4ab16a6f6126902fe62e3a5a08b9da768 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 10:46:13 +0000 Subject: [PATCH 192/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6df785f..f0ee9e0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -201,6 +201,7 @@ dast: variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_AUTH_URL: "https://@nbi.172.21.248.85.nip.io/osm/" DAST_USERNAME: "admin" DAST_PASSWORD: $TEST_API_PASSWORD DAST_DEBUG: "true" -- GitLab From c451c04a109c4b3629cf756809f2b08e0e811c88 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 10:51:35 +0000 Subject: [PATCH 193/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f0ee9e0..320d288 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -212,6 +212,7 @@ dast: name: $ENV before_script: - echo "Preparing DAST" + - chmod +x newToken.py - ./newToken.py - cat token.json - echo $DAST_API_OVERRIDES_ENV -- GitLab From 6191f89e4f62ec708314d53719ce5cbb8033b54a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 11:54:23 +0000 Subject: [PATCH 194/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 320d288..9a34588 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -200,12 +200,13 @@ dast: stage: dast variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - DAST_AUTH_URL: "https://@nbi.172.21.248.85.nip.io/osm/" - DAST_USERNAME: "admin" - DAST_PASSWORD: $TEST_API_PASSWORD + #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443/osm/" + #DAST_AUTH_URL: "https://@nbi.172.21.248.85.nip.io/osm/" + #DAST_USERNAME: "admin" + #DAST_PASSWORD: $TEST_API_PASSWORD DAST_DEBUG: "true" - #DAST_API_OPENAPI: hive/openapi.json + DAST_API_OPENAPI: hive/openapi.json DAST_API_OVERRIDES_FILE: hive/token.json #DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f"}}' environment: -- GitLab From 77428a9a05b333134fc3dcede14608b29b378f70 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 11:55:09 +0000 Subject: [PATCH 195/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9a34588..e8c2864 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -84,6 +84,7 @@ include: - template: API-Fuzzing.latest.gitlab-ci.yml - template: Security/SAST.gitlab-ci.yml - template: Security/Dependency-Scanning.gitlab-ci.yml + - template: DAST-API.gitlab-ci.yml workflow: rules: -- GitLab From ba5681c032342e89923508c5e2f05fe429fee6f5 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 11:58:05 +0000 Subject: [PATCH 196/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e8c2864..e8844ac 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -194,15 +194,35 @@ TST10: - source hive/openstack-etsi.rc - python3 logs.py +dast_api: + stage: dast + variables: + DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_API_OPENAPI: hive/openapi.json + DAST_API_OVERRIDES_FILE: hive/token.json + DAST_API_DEBUG: "true" + environment: + name: $ENV + before_script: + - echo "Preparing DAST" + - chmod +x newToken.py + - ./newToken.py + - cat token.json + - echo $DAST_API_OVERRIDES_ENV + #- env + - echo $DAST_API_OVERRIDES_FILE + - echo $DAST_REQUEST_HEADERS + - echo $PWD + - ls -la dast: stage: dast variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + #DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443/osm/" #DAST_AUTH_URL: "https://@nbi.172.21.248.85.nip.io/osm/" #DAST_USERNAME: "admin" #DAST_PASSWORD: $TEST_API_PASSWORD -- GitLab From 3ee081972516f6187a17c1dc461e68800930314c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:04:50 +0000 Subject: [PATCH 197/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e8844ac..bddec6a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -221,15 +221,14 @@ dast: stage: dast variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - #DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443/osm/" - #DAST_AUTH_URL: "https://@nbi.172.21.248.85.nip.io/osm/" - #DAST_USERNAME: "admin" - #DAST_PASSWORD: $TEST_API_PASSWORD + #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + #DAST_AUTH_URL: "https://@nbi.172.21.248.85.nip.io/osm/" https://ui.172.21.248.85.nip.io/login + DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" + DAST_AUTH_URL: "https://ui.172.21.248.85.nip.io/login" + DAST_USERNAME: "admin" + DAST_PASSWORD: $TEST_API_PASSWORD DAST_DEBUG: "true" - DAST_API_OPENAPI: hive/openapi.json - DAST_API_OVERRIDES_FILE: hive/token.json - #DAST_API_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f"}}' + environment: name: $ENV before_script: -- GitLab From 202b1a03e6b9ee58c1d5163a988478ad6aa1b673 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:06:14 +0000 Subject: [PATCH 198/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bddec6a..aff85da 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -233,6 +233,7 @@ dast: name: $ENV before_script: - echo "Preparing DAST" + - ls -la - chmod +x newToken.py - ./newToken.py - cat token.json -- GitLab From c886a38175e446fc06da28f63705477975ed5183 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:08:51 +0000 Subject: [PATCH 199/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aff85da..997d04a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -234,7 +234,7 @@ dast: before_script: - echo "Preparing DAST" - ls -la - - chmod +x newToken.py + - sudo chmod +x newToken.py - ./newToken.py - cat token.json - echo $DAST_API_OVERRIDES_ENV -- GitLab From 47d253eb12cb7bfb6dadf03911f5e7a0a5fe7a25 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:11:12 +0000 Subject: [PATCH 200/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 997d04a..dcef8f0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -234,13 +234,13 @@ dast: before_script: - echo "Preparing DAST" - ls -la - - sudo chmod +x newToken.py - - ./newToken.py - - cat token.json - - echo $DAST_API_OVERRIDES_ENV + #- sudo chmod +x newToken.py + #- ./newToken.py + #- cat token.json + #- echo $DAST_API_OVERRIDES_ENV #- env - - echo $DAST_API_OVERRIDES_FILE - - echo $DAST_REQUEST_HEADERS + #- echo $DAST_API_OVERRIDES_FILE + #- echo $DAST_REQUEST_HEADERS - echo $PWD - ls -la -- GitLab From 870bf097685e6c4ce602f50400a05f30b1ef925f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:13:48 +0000 Subject: [PATCH 201/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dcef8f0..ee7da69 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -226,7 +226,7 @@ dast: DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" DAST_AUTH_URL: "https://ui.172.21.248.85.nip.io/login" DAST_USERNAME: "admin" - DAST_PASSWORD: $TEST_API_PASSWORD + DAST_PASSWORD: "admin" DAST_DEBUG: "true" environment: -- GitLab From 655c25d8b0b06bb1aaaab3618e4fc7a9769413d2 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:17:49 +0000 Subject: [PATCH 202/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee7da69..07e8bfe 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -222,37 +222,22 @@ dast: variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - #DAST_AUTH_URL: "https://@nbi.172.21.248.85.nip.io/osm/" https://ui.172.21.248.85.nip.io/login + #DAST_AUTH_URL: "https://@nbi.172.21.248.85.nip.io/osm/" DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" DAST_AUTH_URL: "https://ui.172.21.248.85.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_DEBUG: "true" + DAST_FULL_SCAN_ENABLED: "true" # do a full scan + DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider environment: name: $ENV before_script: - echo "Preparing DAST" - ls -la - #- sudo chmod +x newToken.py - #- ./newToken.py - #- cat token.json - #- echo $DAST_API_OVERRIDES_ENV - #- env - #- echo $DAST_API_OVERRIDES_FILE - #- echo $DAST_REQUEST_HEADERS - - echo $PWD - - ls -la - - 'ls -la ../' - - > - curl -k -H "Authorization: Bearer gAAAAABh78WFGwHKh5WQkU8MJuGAjBMJOF-MCUixiKTH7dBdbfnn8VKPmL-8LvRJHT1vVHcoZ845Gs6iUxsuxjOT_3ohde1hZHjdIrnFMmyxLPt3mj9G1SLht2lurVbt0h-QuA_FzZSb6DGw-psD9sR7T95ZxRugAuoS2OKchluRD9DLjltkmCI5I5HU9vVoiDv5iktSln0f" https://ui.172.21.248.230.nip.io:443/osm/ -v - #- ls -la - #- chmod +x newToken.py - #- ./newToken.py - #- cat token.json - #- ls -la -- GitLab From 79044d20b322055b09c76be8f3f8c9a04e4af076 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:29:36 +0000 Subject: [PATCH 203/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 07e8bfe..73b2623 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -222,14 +222,14 @@ dast: variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - #DAST_AUTH_URL: "https://@nbi.172.21.248.85.nip.io/osm/" + #DAST_AUTH_URL: "https://@nbi.172.21.248.230.nip.io/osm/" DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" - DAST_AUTH_URL: "https://ui.172.21.248.85.nip.io/login" + DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_DEBUG: "true" - DAST_FULL_SCAN_ENABLED: "true" # do a full scan - DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + #DAST_FULL_SCAN_ENABLED: "true" # do a full scan + #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider environment: name: $ENV -- GitLab From d1c1c5ae4881a721b954891338c8423c6bb50132 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:32:11 +0000 Subject: [PATCH 204/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 73b2623..27bb3e8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -228,8 +228,8 @@ dast: DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_DEBUG: "true" - #DAST_FULL_SCAN_ENABLED: "true" # do a full scan - #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + DAST_FULL_SCAN_ENABLED: "true" # do a full scan + DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider environment: name: $ENV -- GitLab From 38ea2322d2a1763a5558acc926515d1cff561291 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:42:24 +0000 Subject: [PATCH 205/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 27bb3e8..db9467f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -221,10 +221,10 @@ dast: stage: dast variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - #DAST_AUTH_URL: "https://@nbi.172.21.248.230.nip.io/osm/" - DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" - DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" + #DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" + #DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_DEBUG: "true" -- GitLab From 9b300c4bf291e900eef72395e5503aacee6c2705 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:47:51 +0000 Subject: [PATCH 206/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db9467f..4d93aa8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -221,7 +221,7 @@ dast: stage: dast variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" #DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" -- GitLab From 7382472876bcc906304ff94830fe55daca44df68 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 12:48:02 +0000 Subject: [PATCH 207/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4d93aa8..bc70b91 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -220,7 +220,7 @@ dast_api: dast: stage: dast variables: - #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" -- GitLab From f06611c0a98c30ea19d8829b4e8101e9ac57f87b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 25 Jan 2022 13:47:08 +0000 Subject: [PATCH 208/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bc70b91..2d87b53 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -196,8 +196,10 @@ TST10: dast_api: stage: dast + timeout: + 3 hours variables: - DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443/osm/" + DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" DAST_API_OPENAPI: hive/openapi.json DAST_API_OVERRIDES_FILE: hive/token.json DAST_API_DEBUG: "true" @@ -221,13 +223,13 @@ dast: stage: dast variables: DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" - DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" - #DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" - #DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" + #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" + #DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" + DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" + DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - DAST_DEBUG: "true" + #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider -- GitLab From bb90d338782e0cf53ff9ae8d8446383bd0bf623c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 27 Jan 2022 13:10:41 +0000 Subject: [PATCH 209/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2d87b53..e0e7ed9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -203,6 +203,7 @@ dast_api: DAST_API_OPENAPI: hive/openapi.json DAST_API_OVERRIDES_FILE: hive/token.json DAST_API_DEBUG: "true" + DAST_API_PROFILE: Quick environment: name: $ENV before_script: -- GitLab From 49f35266415ab40ad83481c4c7c17aba9ad00aa8 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 27 Jan 2022 14:14:56 +0000 Subject: [PATCH 210/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e0e7ed9..7726372 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -220,6 +220,30 @@ dast_api: - ls -la + +nbi_dast: + extends: dast + stage: dast + variables: + #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io" + DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/login" + DAST_USERNAME: "admin" + DAST_PASSWORD: "admin" + #DAST_DEBUG: "true" + #DAST_FULL_SCAN_ENABLED: "true" # do a full scan + #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + + environment: + name: $ENV + before_script: + - echo "Preparing NBI DAST" + - ls -la + + + + + dast: stage: dast variables: @@ -245,6 +269,8 @@ dast: + + apifuzzer_fuzz: timeout: 3 hours -- GitLab From 8379c05b9b5a5cc6d947f4d7938ee7557f949cb8 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 27 Jan 2022 14:20:16 +0000 Subject: [PATCH 211/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7726372..a9e2570 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -250,8 +250,8 @@ dast: DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" - DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" - DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" + DAST_WEBSITE: "https://ui.172.21.248.230.nip.io/osm" + DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login/osm" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" #DAST_DEBUG: "true" -- GitLab From e8ce389033d08ada5089ac1c1b81df4179aeca44 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 27 Jan 2022 14:22:08 +0000 Subject: [PATCH 212/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a9e2570..af2e0e6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -226,8 +226,8 @@ nbi_dast: stage: dast variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io" - DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/login" + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" + DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/login/osm" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" #DAST_DEBUG: "true" @@ -250,8 +250,8 @@ dast: DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" - DAST_WEBSITE: "https://ui.172.21.248.230.nip.io/osm" - DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login/osm" + DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" + DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" #DAST_DEBUG: "true" -- GitLab From ed1c7ffa1f2306e174b17df55f6a3bd617c2e141 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 27 Jan 2022 14:38:39 +0000 Subject: [PATCH 213/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index af2e0e6..fdefbd3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -230,6 +230,7 @@ nbi_dast: DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/login/osm" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" + DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.85.nip.io/osm/admin/v1/tokens" #DAST_DEBUG: "true" #DAST_FULL_SCAN_ENABLED: "true" # do a full scan #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider @@ -254,6 +255,7 @@ dast: DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.85.nip.io/packages/ns" #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider -- GitLab From 067d007db87ceeb855d29765609c7bdf13fa59c6 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 27 Jan 2022 18:18:37 +0000 Subject: [PATCH 214/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fdefbd3..61b574b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -230,7 +230,7 @@ nbi_dast: DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/login/osm" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.85.nip.io/osm/admin/v1/tokens" + DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" #DAST_DEBUG: "true" #DAST_FULL_SCAN_ENABLED: "true" # do a full scan #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider @@ -255,7 +255,7 @@ dast: DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.85.nip.io/packages/ns" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider -- GitLab From 4a9d6193bc7e801d87441f8a2ef2a7587db24dbd Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 27 Jan 2022 18:41:34 +0000 Subject: [PATCH 215/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 61b574b..fd2ef2c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -257,8 +257,8 @@ dast: DAST_PASSWORD: "admin" DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_DEBUG: "true" - DAST_FULL_SCAN_ENABLED: "true" # do a full scan - DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + #DAST_FULL_SCAN_ENABLED: "true" # do a full scan + #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider environment: name: $ENV -- GitLab From bb399f19792bbe57af5ed01f7a6110c06431ce73 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Thu, 27 Jan 2022 22:14:04 +0000 Subject: [PATCH 216/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fd2ef2c..7034567 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -197,7 +197,7 @@ TST10: dast_api: stage: dast timeout: - 3 hours + 10 hours variables: DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" DAST_API_OPENAPI: hive/openapi.json -- GitLab From 6fddedccedb0795515745dfc280973555124a37f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 30 Jan 2022 23:56:48 +0000 Subject: [PATCH 217/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7034567..db28f18 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -197,7 +197,7 @@ TST10: dast_api: stage: dast timeout: - 10 hours + 24 hours variables: DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" DAST_API_OPENAPI: hive/openapi.json -- GitLab From abe898c52853064c50607f17ee09d1254f740b56 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 31 Jan 2022 10:47:44 +0000 Subject: [PATCH 218/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db28f18..471220d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -201,7 +201,7 @@ dast_api: variables: DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" DAST_API_OPENAPI: hive/openapi.json - DAST_API_OVERRIDES_FILE: hive/token.json + DAST_API_OVERRIDES_FILE: token.json DAST_API_DEBUG: "true" DAST_API_PROFILE: Quick environment: -- GitLab From 8448e9fa1154db860361ba46779dbedb77b1f184 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 31 Jan 2022 10:49:29 +0000 Subject: [PATCH 219/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 471220d..eb1ca6f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -200,7 +200,7 @@ dast_api: 24 hours variables: DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" - DAST_API_OPENAPI: hive/openapi.json + DAST_API_OPENAPI: hive/test-openapi.json DAST_API_OVERRIDES_FILE: token.json DAST_API_DEBUG: "true" DAST_API_PROFILE: Quick -- GitLab From 984fa80fc28150f6aef2e8c56b7c2df3d3f93b8f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 1 Feb 2022 20:13:34 +0000 Subject: [PATCH 220/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eb1ca6f..db60ca4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -137,7 +137,7 @@ deploy: -TST10: +TST010: stage: conformance environment: name: $ENV @@ -180,7 +180,7 @@ TST10: - sudo systemctl daemon-reload - sudo systemctl restart docker.service - - echo "TST10" + - echo "TST010" - | docker run --env OSM_HOSTNAME=$OSM_HOSTNAME \ -- GitLab From 3fe076320da8431ad67498ea5263e8245e00d6bd Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Tue, 1 Feb 2022 23:13:51 +0000 Subject: [PATCH 221/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db60ca4..a32d223 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -200,7 +200,7 @@ dast_api: 24 hours variables: DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" - DAST_API_OPENAPI: hive/test-openapi.json + DAST_API_OPENAPI: hive/openapi.json DAST_API_OVERRIDES_FILE: token.json DAST_API_DEBUG: "true" DAST_API_PROFILE: Quick -- GitLab From f9aaae3f7308993ecf7c0ededf95445fef9a8c70 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 18:18:03 +0000 Subject: [PATCH 222/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a32d223..5c4db47 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -228,6 +228,7 @@ nbi_dast: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/login/osm" + DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" -- GitLab From 729ea8adf8313fa6d8e4f4058956a0fda1a122e9 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 18:24:12 +0000 Subject: [PATCH 223/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5c4db47..988604d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -227,7 +227,7 @@ nbi_dast: variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" - DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/login/osm" + DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" -- GitLab From d16ffc8c5f6fd1d940dc8d4c88eb318dc01e2fe4 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 18:32:58 +0000 Subject: [PATCH 224/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 988604d..b0dd780 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -227,6 +227,7 @@ nbi_dast: variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" + DAST_FIRST_SUBMIT_FIELD: css:input[type='submit'] DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_USERNAME: "admin" -- GitLab From 2e482d0d14f03daed087a4dd0b647620a1d84a35 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 19:27:21 +0000 Subject: [PATCH 225/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b0dd780..bd821f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -232,6 +232,8 @@ nbi_dast: DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" + DAST_USERNAME_FIELD: "f_user" + DAST_PASSWORD_FIELD: "f_pass" DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" #DAST_DEBUG: "true" #DAST_FULL_SCAN_ENABLED: "true" # do a full scan -- GitLab From e6b8b9e27720cec9d5964c5d7d4e30538d2cc844 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 19:29:52 +0000 Subject: [PATCH 226/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bd821f7..387e219 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -232,8 +232,8 @@ nbi_dast: DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - DAST_USERNAME_FIELD: "f_user" - DAST_PASSWORD_FIELD: "f_pass" + DAST_USERNAME_FIELD: "id:f_user" + DAST_PASSWORD_FIELD: "id:f_pass" DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" #DAST_DEBUG: "true" #DAST_FULL_SCAN_ENABLED: "true" # do a full scan -- GitLab From f68a4646ecd488401eeaca8daab4ddd345dcf873 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 19:33:31 +0000 Subject: [PATCH 227/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 387e219..c64fed7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -232,8 +232,10 @@ nbi_dast: DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - DAST_USERNAME_FIELD: "id:f_user" - DAST_PASSWORD_FIELD: "id:f_pass" + #DAST_USERNAME_FIELD: "id:f_user" + #DAST_PASSWORD_FIELD: "id:f_pass" + DAST_USERNAME_FIELD: css:input[id='f_user'] + DAST_PASSWORD_FIELD: css:input[id='f_pass'] DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" #DAST_DEBUG: "true" #DAST_FULL_SCAN_ENABLED: "true" # do a full scan -- GitLab From e867fdc80c1dcf48007a7b131dcb04eb0d71f26a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 19:38:27 +0000 Subject: [PATCH 228/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c64fed7..d6c6488 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -232,10 +232,10 @@ nbi_dast: DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - #DAST_USERNAME_FIELD: "id:f_user" - #DAST_PASSWORD_FIELD: "id:f_pass" - DAST_USERNAME_FIELD: css:input[id='f_user'] - DAST_PASSWORD_FIELD: css:input[id='f_pass'] + DAST_USERNAME_FIELD: "id:f_user" + DAST_PASSWORD_FIELD: "id:f_pass" + #DAST_USERNAME_FIELD: css:input[id='f_user'] + #DAST_PASSWORD_FIELD: css:input[id='f_pass'] DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" #DAST_DEBUG: "true" #DAST_FULL_SCAN_ENABLED: "true" # do a full scan -- GitLab From 729e9fc12a360ff5f54be7b4c6c47ca13e0c170b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 19:42:10 +0000 Subject: [PATCH 229/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d6c6488..581f6ce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -232,8 +232,8 @@ nbi_dast: DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - DAST_USERNAME_FIELD: "id:f_user" - DAST_PASSWORD_FIELD: "id:f_pass" + DAST_USERNAME_FIELD: "username" + DAST_PASSWORD_FIELD: "password" #DAST_USERNAME_FIELD: css:input[id='f_user'] #DAST_PASSWORD_FIELD: css:input[id='f_pass'] DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" -- GitLab From 2280cc4d6a4f9e3e0f567ba7724bc36914a4d959 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 19:56:36 +0000 Subject: [PATCH 230/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 581f6ce..75424ae 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -230,6 +230,7 @@ nbi_dast: DAST_FIRST_SUBMIT_FIELD: css:input[type='submit'] DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" + DAST_AUTH_REPORT: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_USERNAME_FIELD: "username" -- GitLab From cf90559b0fc4c59b363eb4a42e6bb73573d52d28 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Wed, 2 Feb 2022 20:08:46 +0000 Subject: [PATCH 231/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 75424ae..e38eec1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -224,6 +224,8 @@ dast_api: nbi_dast: extends: dast stage: dast + artifacts: + when: always variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" -- GitLab From 281876cff0ec661d53cdd12d63cf7199bd9f4077 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 13:27:40 +0000 Subject: [PATCH 232/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 134 ++++++++++++++++++++----------------------------- 1 file changed, 55 insertions(+), 79 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e38eec1..bba102d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,21 +25,7 @@ variables: - #DAST_WEBSITE: "https://${OSM_HOSTNAME}/osm/" - #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" - #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io:443/osm/" - - #DAST_API_OVERRIDES_FILE: hive/token.json - #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh6E6sateY2XcUhvuzhyJCGivksJb2929oRzb01xKVONHmUL6OH2-E_NVdmbsJR4g1p6tAay8BSdFltLv5Zp1xKxvyaMSc2_UM1arrMq261rW-wk-wBF_36ZzG6dxVfr3TCdlypnOp7XokDqTCTujSmzIO3XkDTAnE8TPCZxOsoyqnNUhKlgjWTHwqp00BKWia_se8" - - #DAST_REQUEST_HEADERS: "Authorization: Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" - #DAST_REQUEST_HEADERS: "Authorization:Bearer gAAAAABh7n6pDxeNKHDoo8k_Qi5CPB-GeA6UwjmttGc3CWTdFofP5fgH7YlYhquXyHLRd0_Osr6TtYvg4cB1pd_v2JHxpy3qyl0e-72oqS7HGa-38W4B2lW-xw_F6riR1KT6LgC95x5sjUGImOcnWvwrRPuhe2T3ydz3V4tZO0JSU0eEvGlbTDfdwRt3hX2fTnSeQWSygSBG" - #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - - - - #FUZZAPI_OVERRIDES_ENV: '{"headers":{"Authorization":"Bearer gAAAAABh6aDLVnX-i51wy-bwhkE82nOWcwmdiPNMvnV8qhb3Ko7654lxo-TiYG1H0zo1cT3sFd7jtwdGIvsie8mbi4yQdmKibD7eSFv1rn8DA7cMuCVa3klgHJu8_zMu0UBsryNAc10HuwDSa7XJhB2WCwQ63HOK7ZubfrjACrJPbme6Pmsy584u1pSyZuvwBzCapGVTjwcW"}}' @@ -47,17 +33,6 @@ variables: - #FUZZAPI_OVERRIDES_ENV: hive/token.json - #FUZZAPI_OVERRIDES_FILE: hive/token.json - #DAST_API_HTTP_USERNAME: admin - #DAST_API_HTTP_PASSWORD: $TEST_API_PASSWORD - #FUZZAPI_HTTP_USERNAME: admin - #FUZZAPI_HTTP_PASSWORD: $TEST_API_PASSWORD - #OPENAPI_URL: https://osm.etsi.org/gitlab/osm/sol005/-/raw/master/osm-openapi.yaml?inline=false - #FUZZAPI_OPENAPI: openapi.json - - - @@ -94,6 +69,60 @@ workflow: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH + + +nbi_dast: + extends: dast + stage: dast + artifacts: + when: always + variables: + #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" + DAST_FIRST_SUBMIT_FIELD: css:input[type='submit'] + DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" + DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" + DAST_AUTH_REPORT: "true" + DAST_USERNAME: "admin" + DAST_PASSWORD: "admin" + DAST_USERNAME_FIELD: "username" + DAST_PASSWORD_FIELD: "password" + #DAST_USERNAME_FIELD: css:input[id='f_user'] + #DAST_PASSWORD_FIELD: css:input[id='f_pass'] + DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" + #DAST_DEBUG: "true" + #DAST_FULL_SCAN_ENABLED: "true" # do a full scan + #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + + environment: + name: $ENV + before_script: + - echo "Preparing NBI DAST" + - ls -la + + +dast: + stage: dast + variables: + DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" + #DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" + DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" + DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" + DAST_USERNAME: "admin" + DAST_PASSWORD: "admin" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" + #DAST_DEBUG: "true" + #DAST_FULL_SCAN_ENABLED: "true" # do a full scan + #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + + environment: + name: $ENV + before_script: + - echo "Preparing DAST" + - ls -la + + dependency_scanning: stage: test @@ -221,60 +250,6 @@ dast_api: -nbi_dast: - extends: dast - stage: dast - artifacts: - when: always - variables: - #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" - DAST_FIRST_SUBMIT_FIELD: css:input[type='submit'] - DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" - DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - DAST_AUTH_REPORT: "true" - DAST_USERNAME: "admin" - DAST_PASSWORD: "admin" - DAST_USERNAME_FIELD: "username" - DAST_PASSWORD_FIELD: "password" - #DAST_USERNAME_FIELD: css:input[id='f_user'] - #DAST_PASSWORD_FIELD: css:input[id='f_pass'] - DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" - #DAST_DEBUG: "true" - #DAST_FULL_SCAN_ENABLED: "true" # do a full scan - #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider - - environment: - name: $ENV - before_script: - - echo "Preparing NBI DAST" - - ls -la - - - - - -dast: - stage: dast - variables: - DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" - #DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" - DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" - DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" - DAST_USERNAME: "admin" - DAST_PASSWORD: "admin" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - #DAST_DEBUG: "true" - #DAST_FULL_SCAN_ENABLED: "true" # do a full scan - #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider - - environment: - name: $ENV - before_script: - - echo "Preparing DAST" - - ls -la - @@ -304,6 +279,7 @@ apifuzzer_fuzz: #- wget $OPENAPI_URL -O openapi.yaml #- yq r -j -P openapi.yaml > openapi.json #- cat openapi.json + after_script: - echo $FUZZAPI_OVERRIDES_FILE - whoami -- GitLab From 7faea2b5581273a7db03f0387e6e0bc7fd66170d Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 13:48:38 +0000 Subject: [PATCH 233/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bba102d..78a2fff 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -113,7 +113,7 @@ dast: DAST_PASSWORD: "admin" DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_DEBUG: "true" - #DAST_FULL_SCAN_ENABLED: "true" # do a full scan + DAST_FULL_SCAN_ENABLED: "true" # do a full scan #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider environment: -- GitLab From 3a793799c0d409c4dd42bfb194c31001be63da78 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 13:51:54 +0000 Subject: [PATCH 234/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 78a2fff..3586d7f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -114,7 +114,7 @@ dast: DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan - #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider environment: name: $ENV -- GitLab From 645bced57cf34bd2dc9902d713b1124d5dabbfdc Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 14:02:48 +0000 Subject: [PATCH 235/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3586d7f..78a2fff 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -114,7 +114,7 @@ dast: DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan - DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider environment: name: $ENV -- GitLab From 444d56a2342965b905f08b6bb485bbfdd96d6a8a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 14:10:31 +0000 Subject: [PATCH 236/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 78a2fff..3586d7f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -114,7 +114,7 @@ dast: DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan - #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider environment: name: $ENV -- GitLab From b571ef636ba2e492e134651d06dc2d436b33d2ec Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 14:32:38 +0000 Subject: [PATCH 237/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3586d7f..69b8d6c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -111,7 +111,7 @@ dast: DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" + #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider -- GitLab From 0f04ce192dd794048cdf5a7bface035a48793385 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 15:11:20 +0000 Subject: [PATCH 238/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 69b8d6c..fe4209f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -115,6 +115,7 @@ dast: #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" environment: name: $ENV -- GitLab From a2982c85af90b28c4955acc16fb63e5226adb1a5 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 15:28:02 +0000 Subject: [PATCH 239/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fe4209f..0d7a473 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -111,11 +111,14 @@ dast: DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" + DAST_DEBUG: "true" #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" + DAST_USERNAME_FIELD: xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input + DAST_PASSWORD_FIELD: xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input environment: name: $ENV -- GitLab From 4c1adced680b765d529ddb80063d2d6153fa710d Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 15:31:00 +0000 Subject: [PATCH 240/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0d7a473..71b6b53 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -117,8 +117,8 @@ dast: DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - DAST_USERNAME_FIELD: xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input - DAST_PASSWORD_FIELD: xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input + DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" + DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" environment: name: $ENV -- GitLab From 41c0b624f7d83026e0c6e9c97269917a397cd568 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 15:43:48 +0000 Subject: [PATCH 241/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 71b6b53..d2263f9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -79,7 +79,7 @@ nbi_dast: variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" - DAST_FIRST_SUBMIT_FIELD: css:input[type='submit'] + DAST_SUBMIT_FIELD: css:input[type='submit'] DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_AUTH_REPORT: "true" @@ -119,6 +119,7 @@ dast: DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" + DAST_SUBMIT_FIELD: css:button[class='submit-btn'] environment: name: $ENV -- GitLab From 852a9406fca82cf6211813a52c3142d721c69d88 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 15:51:43 +0000 Subject: [PATCH 242/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d2263f9..d99c9a0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -79,7 +79,7 @@ nbi_dast: variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" - DAST_SUBMIT_FIELD: css:input[type='submit'] + #DAST_SUBMIT_FIELD: css:input[type='submit'] DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_AUTH_REPORT: "true" -- GitLab From d4a69076c74a4c645ce98b7ac62b5c5ba72a04a7 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 16:03:05 +0000 Subject: [PATCH 243/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d99c9a0..3de25af 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -87,9 +87,10 @@ nbi_dast: DAST_PASSWORD: "admin" DAST_USERNAME_FIELD: "username" DAST_PASSWORD_FIELD: "password" + #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" #DAST_USERNAME_FIELD: css:input[id='f_user'] #DAST_PASSWORD_FIELD: css:input[id='f_pass'] - DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" + #DAST_DEBUG: "true" #DAST_FULL_SCAN_ENABLED: "true" # do a full scan #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider -- GitLab From 2cdcbd4ee4190444bdad9d77a8b0ebd44934c81f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 16:37:57 +0000 Subject: [PATCH 244/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3de25af..35fb161 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -88,6 +88,7 @@ nbi_dast: DAST_USERNAME_FIELD: "username" DAST_PASSWORD_FIELD: "password" #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" + DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.85.nip.io/osm/pdu/v1/pdu_descriptors" #DAST_USERNAME_FIELD: css:input[id='f_user'] #DAST_PASSWORD_FIELD: css:input[id='f_pass'] -- GitLab From a1df07bed0a1713dc0fb199dbfbd12301115b840 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 16:44:25 +0000 Subject: [PATCH 245/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 35fb161..3eae814 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -88,7 +88,7 @@ nbi_dast: DAST_USERNAME_FIELD: "username" DAST_PASSWORD_FIELD: "password" #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" - DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.85.nip.io/osm/pdu/v1/pdu_descriptors" + DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/pdu/v1/pdu_descriptors" #DAST_USERNAME_FIELD: css:input[id='f_user'] #DAST_PASSWORD_FIELD: css:input[id='f_pass'] -- GitLab From fe3da76590eee75ecaaef364d081d169cff0be63 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 16:46:25 +0000 Subject: [PATCH 246/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3eae814..18e6f76 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -106,7 +106,7 @@ nbi_dast: dast: stage: dast variables: - DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" #DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" -- GitLab From c61193fa1ed336b02963117ef12075337a9d1e22 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 16:47:02 +0000 Subject: [PATCH 247/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 18e6f76..b07544d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -103,7 +103,8 @@ nbi_dast: - ls -la -dast: +ui_dast: + extends: dast stage: dast variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS -- GitLab From f0ea051107c940b08b5d33e2944f8a5ff31be1a8 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 16:58:21 +0000 Subject: [PATCH 248/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b07544d..5b376e2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -120,8 +120,8 @@ ui_dast: DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" - DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" + #DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" + #DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" DAST_SUBMIT_FIELD: css:button[class='submit-btn'] environment: -- GitLab From 7c6720e2e0a25b08685a7928afd2091aaa90bd20 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 17:06:16 +0000 Subject: [PATCH 249/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5b376e2..e4320f3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -115,7 +115,7 @@ ui_dast: DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_DEBUG: "true" - #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider -- GitLab From 94f1f2657568d1b7c2c62206921ee812d7ae0c74 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 17:09:47 +0000 Subject: [PATCH 250/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e4320f3..db374ce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -122,7 +122,7 @@ ui_dast: DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" #DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" #DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" - DAST_SUBMIT_FIELD: css:button[class='submit-btn'] + #DAST_SUBMIT_FIELD: css:button[class='submit-btn'] environment: name: $ENV -- GitLab From 107b543f9b47f1d192a526318507dd1bbc807a4a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 17:23:48 +0000 Subject: [PATCH 251/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index db374ce..f7aa268 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,19 +23,6 @@ variables: #API_FUZZING_DISABLED: 'True' FUZZAPI_VERBOSE: 1 - - - - - - - - - - - - - #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" #FUZZAPI_PROFILE: Quick-10 FUZZAPI_PROFILE: Long-100 @@ -107,22 +94,16 @@ ui_dast: extends: dast stage: dast variables: - #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm/" - #DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_DEBUG: "true" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - #DAST_DEBUG: "true" + #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - #DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" - #DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" - #DAST_SUBMIT_FIELD: css:button[class='submit-btn'] + DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" environment: name: $ENV @@ -233,6 +214,7 @@ TST010: dast_api: stage: dast + when: manual timeout: 24 hours variables: -- GitLab From 93e29cc84ab42156cad819540ec833f60a44c8af Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 17:27:10 +0000 Subject: [PATCH 252/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f7aa268..f8923fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -212,9 +212,8 @@ TST010: - source hive/openstack-etsi.rc - python3 logs.py -dast_api: +.dast_api: stage: dast - when: manual timeout: 24 hours variables: -- GitLab From 096d6d16b5b9c369d9e77c402045b818b216bd9c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 17:40:48 +0000 Subject: [PATCH 253/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f8923fb..9cd09d4 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -102,8 +102,13 @@ ui_dast: #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" + #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" + DAST_AUTH_REPORT: "true" + artifacts: + paths: [gl-dast-debug-auth-report.html] + when: always environment: name: $ENV -- GitLab From facb9a5eee52d38a69ea2b818d664eb52faa6ab3 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 17:46:01 +0000 Subject: [PATCH 254/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9cd09d4..2b10b6c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -62,6 +62,7 @@ nbi_dast: extends: dast stage: dast artifacts: + paths: [gl-dast-debug-auth-report.html] when: always variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS -- GitLab From 78d5b4d53714238bf37e9b2c73d65bb65491285b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 17:57:09 +0000 Subject: [PATCH 255/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2b10b6c..c7ce396 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -108,7 +108,7 @@ ui_dast: DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_AUTH_REPORT: "true" artifacts: - paths: [gl-dast-debug-auth-report.html] + paths: gl-dast-debug-auth-report.html when: always environment: @@ -116,6 +116,8 @@ ui_dast: before_script: - echo "Preparing DAST" - ls -la + after_script: + - ls -la -- GitLab From cf7f009d324e0e59d219f3a1e3ae3b9afdcab1e5 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Fri, 4 Feb 2022 17:58:15 +0000 Subject: [PATCH 256/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c7ce396..90bada5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -108,7 +108,7 @@ ui_dast: DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_AUTH_REPORT: "true" artifacts: - paths: gl-dast-debug-auth-report.html + paths: [gl-dast-debug-auth-report.html] when: always environment: -- GitLab From 1d593f4f0d55b17062213076d4f2691e5d430c82 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 11:11:41 +0000 Subject: [PATCH 257/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 90bada5..da2b17b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -100,12 +100,12 @@ ui_dast: DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_DEBUG: "true" - #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" - DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" + #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_AUTH_REPORT: "true" artifacts: paths: [gl-dast-debug-auth-report.html] -- GitLab From c3ed6786edf1897670fb1de74ed07143e04aa46d Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 11:17:17 +0000 Subject: [PATCH 258/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index da2b17b..6da4658 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -100,7 +100,8 @@ ui_dast: DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_DEBUG: "true" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" + #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" -- GitLab From ab276fc676a6251b08f34097ea943573f5d6d7e0 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 12:19:34 +0000 Subject: [PATCH 259/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6da4658..b4195eb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -108,6 +108,7 @@ ui_dast: #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_AUTH_REPORT: "true" + DAST_BROWSER_SCAN: "true" artifacts: paths: [gl-dast-debug-auth-report.html] when: always -- GitLab From 2378789f15950bdd2e625ca1a24f0c5d01b953ce Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 12:21:28 +0000 Subject: [PATCH 260/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b4195eb..b5baf14 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -103,7 +103,7 @@ ui_dast: #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/" DAST_FULL_SCAN_ENABLED: "true" # do a full scan - DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" -- GitLab From 95686c75e9d64a9c94929707649cb86ad9aac81b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 12:24:23 +0000 Subject: [PATCH 261/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b5baf14..62198fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -98,17 +98,17 @@ ui_dast: DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" DAST_USERNAME: "admin" - DAST_PASSWORD: "admin" + DAST_PASSWORD: "test" DAST_DEBUG: "true" #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/" DAST_FULL_SCAN_ENABLED: "true" # do a full scan - #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_AUTH_REPORT: "true" - DAST_BROWSER_SCAN: "true" + #DAST_BROWSER_SCAN: "true" artifacts: paths: [gl-dast-debug-auth-report.html] when: always -- GitLab From 554b8989dd2eaf5a717635d7590d8dbea3f6b7a3 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 12:39:58 +0000 Subject: [PATCH 262/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 62198fb..03c4ec9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -101,7 +101,7 @@ ui_dast: DAST_PASSWORD: "test" DAST_DEBUG: "true" #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.285.nip.io/packages/" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" -- GitLab From 524c5e97e9b8f25b9678ccdc584bd09409f5053c Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 12:40:09 +0000 Subject: [PATCH 263/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 03c4ec9..3184ea1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -101,7 +101,7 @@ ui_dast: DAST_PASSWORD: "test" DAST_DEBUG: "true" #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.285.nip.io/packages/" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.85.nip.io/packages/" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" -- GitLab From 791656233d80f7ce968485c8d56bbaf02ded7484 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 12:41:12 +0000 Subject: [PATCH 264/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3184ea1..62198fb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -101,7 +101,7 @@ ui_dast: DAST_PASSWORD: "test" DAST_DEBUG: "true" #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.85.nip.io/packages/" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" -- GitLab From dd9f1cf16ccf78ba52fe19e8ae9bc58a9c093b40 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 12:48:02 +0000 Subject: [PATCH 265/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 62198fb..cb996c7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -101,9 +101,9 @@ ui_dast: DAST_PASSWORD: "test" DAST_DEBUG: "true" #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.85.nip.io/packages/" DAST_FULL_SCAN_ENABLED: "true" # do a full scan - DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" -- GitLab From be588322690669388a0b0924dd95083ef980a971 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 12:52:12 +0000 Subject: [PATCH 266/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index cb996c7..02f5f72 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -101,17 +101,17 @@ ui_dast: DAST_PASSWORD: "test" DAST_DEBUG: "true" #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.85.nip.io/packages/" - DAST_FULL_SCAN_ENABLED: "true" # do a full scan + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.85.nip.io/packages/ns" + #DAST_FULL_SCAN_ENABLED: "true" # do a full scan #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_AUTH_REPORT: "true" #DAST_BROWSER_SCAN: "true" - artifacts: - paths: [gl-dast-debug-auth-report.html] - when: always + #artifacts: + #paths: [gl-dast-debug-auth-report.html] + #when: always environment: name: $ENV -- GitLab From 733bdf460e7340c7518b8ff3e5ef823fec5aa626 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 13:00:51 +0000 Subject: [PATCH 267/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 02f5f72..73cb52e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -73,8 +73,10 @@ nbi_dast: DAST_AUTH_REPORT: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - DAST_USERNAME_FIELD: "username" - DAST_PASSWORD_FIELD: "password" + #DAST_USERNAME_FIELD: "username" + #DAST_PASSWORD_FIELD: "password" + DAST_USERNAME_FIELD: "f_user" + DAST_PASSWORD_FIELD: "f_pass" #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/pdu/v1/pdu_descriptors" #DAST_USERNAME_FIELD: css:input[id='f_user'] -- GitLab From feabd5e289aab0ca5822c88b1d29adf6636b1f60 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 13:15:57 +0000 Subject: [PATCH 268/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 73cb52e..fd0ee3b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -78,7 +78,7 @@ nbi_dast: DAST_USERNAME_FIELD: "f_user" DAST_PASSWORD_FIELD: "f_pass" #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" - DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/pdu/v1/pdu_descriptors" + #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/pdu/v1/pdu_descriptors" #DAST_USERNAME_FIELD: css:input[id='f_user'] #DAST_PASSWORD_FIELD: css:input[id='f_pass'] @@ -109,6 +109,8 @@ ui_dast: #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" + DAST_USERNAME_FIELD: "/html/body/app-root/app-login/div[1]/div/form/div[1]/input" + DAST_PASSWORD_FIELD: "/html/body/app-root/app-login/div[1]/div/form/div[2]/input" DAST_AUTH_REPORT: "true" #DAST_BROWSER_SCAN: "true" #artifacts: -- GitLab From d971a46d592e5011d7f003c54da7ffae3b28963f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 13:19:11 +0000 Subject: [PATCH 269/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fd0ee3b..8d1e6bd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -109,8 +109,8 @@ ui_dast: #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - DAST_USERNAME_FIELD: "/html/body/app-root/app-login/div[1]/div/form/div[1]/input" - DAST_PASSWORD_FIELD: "/html/body/app-root/app-login/div[1]/div/form/div[2]/input" + DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" + DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" DAST_AUTH_REPORT: "true" #DAST_BROWSER_SCAN: "true" #artifacts: -- GitLab From 4e89824ebd6de82ac2ce0c911a46fb38ab0afdea Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 13:19:58 +0000 Subject: [PATCH 270/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8d1e6bd..16c8285 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -82,9 +82,9 @@ nbi_dast: #DAST_USERNAME_FIELD: css:input[id='f_user'] #DAST_PASSWORD_FIELD: css:input[id='f_pass'] - #DAST_DEBUG: "true" - #DAST_FULL_SCAN_ENABLED: "true" # do a full scan - #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + DAST_DEBUG: "true" + DAST_FULL_SCAN_ENABLED: "true" # do a full scan + DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider environment: name: $ENV -- GitLab From 589ff57f807cb4acb85927318cc13873fa3bb467 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Sun, 6 Feb 2022 13:31:32 +0000 Subject: [PATCH 271/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 16c8285..5c22204 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -80,7 +80,7 @@ nbi_dast: #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/pdu/v1/pdu_descriptors" #DAST_USERNAME_FIELD: css:input[id='f_user'] - #DAST_PASSWORD_FIELD: css:input[id='f_pass'] + DAST_SUBMIT_FIELD: css:input[type="submit"] DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan -- GitLab From 9a99f895eec1df256abe33cabec598658b888048 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 12:59:26 +0000 Subject: [PATCH 272/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5c22204..b1edcab 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -80,7 +80,7 @@ nbi_dast: #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/pdu/v1/pdu_descriptors" #DAST_USERNAME_FIELD: css:input[id='f_user'] - DAST_SUBMIT_FIELD: css:input[type="submit"] + #DAST_SUBMIT_FIELD: css:input[type="submit"] DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan -- GitLab From 3ab48e5ad5265d056ec1a2b038b5a12fd0ddb658 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 13:07:49 +0000 Subject: [PATCH 273/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b1edcab..ee06e3c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,7 +25,7 @@ variables: #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" #FUZZAPI_PROFILE: Quick-10 - FUZZAPI_PROFILE: Long-100 + FUZZAPI_PROFILE: Quick-100 FUZZAPI_OPENAPI: hive/test-openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json @@ -58,7 +58,7 @@ workflow: -nbi_dast: +dast_nbi: extends: dast stage: dast artifacts: @@ -66,9 +66,11 @@ nbi_dast: when: always variables: #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS - DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" + #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" + DAST_WEBSITE: https://${OSM_HOSTNAME}/osm/" #DAST_SUBMIT_FIELD: css:input[type='submit'] - DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" + DAST_AUTH_URL: "https://${OSM_HOSTNAME}/osm/" + #DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" DAST_AUTH_REPORT: "true" DAST_USERNAME: "admin" @@ -77,6 +79,7 @@ nbi_dast: #DAST_PASSWORD_FIELD: "password" DAST_USERNAME_FIELD: "f_user" DAST_PASSWORD_FIELD: "f_pass" + DAST_AUTH_VERIFICATION_URL: "https://${OSM_HOSTNAME}/osm/admin/v1/tokens" #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/pdu/v1/pdu_descriptors" #DAST_USERNAME_FIELD: css:input[id='f_user'] @@ -93,7 +96,7 @@ nbi_dast: - ls -la -ui_dast: +dast_ui: extends: dast stage: dast variables: -- GitLab From a7bd45b6dc2e3cce6d3f99bce5ead6b995ff1e84 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 13:09:28 +0000 Subject: [PATCH 274/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ee06e3c..f07ee59 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -229,8 +229,9 @@ TST010: - source hive/openstack-etsi.rc - python3 logs.py -.dast_api: +dast_api: stage: dast + when: manual timeout: 24 hours variables: -- GitLab From 112ca7a72e5e722477985848da6c5576d485a707 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 13:14:42 +0000 Subject: [PATCH 275/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f07ee59..e72bf7c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -231,7 +231,8 @@ TST010: dast_api: stage: dast - when: manual + rules: + - when: manual timeout: 24 hours variables: -- GitLab From 4bfac07ffb0f0f6dfa58cd9145807bf354a29409 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 13:38:41 +0000 Subject: [PATCH 276/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 54 +++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e72bf7c..4d41236 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,18 +20,7 @@ variables: GITLAB_TOKEN: $GITLAB_TOKEN ENV: "New" PIPELINE: "SECURITY" - #API_FUZZING_DISABLED: 'True' - FUZZAPI_VERBOSE: 1 - - #FUZZAPI_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" - #FUZZAPI_PROFILE: Quick-10 - FUZZAPI_PROFILE: Quick-100 - FUZZAPI_OPENAPI: hive/test-openapi.json - FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" - FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: newToken.py - FUZZAPI_OVERRIDES_INTERVAL: 10 - IGNORE_DEPRECATION_ERROR: "true" + stages: - deploy @@ -44,8 +33,8 @@ stages: include: - template: DAST.gitlab-ci.yml - template: API-Fuzzing.latest.gitlab-ci.yml - - template: Security/SAST.gitlab-ci.yml - - template: Security/Dependency-Scanning.gitlab-ci.yml + #- template: Security/SAST.gitlab-ci.yml + #- template: Security/Dependency-Scanning.gitlab-ci.yml - template: DAST-API.gitlab-ci.yml workflow: @@ -61,6 +50,8 @@ workflow: dast_nbi: extends: dast stage: dast + rules: + - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" artifacts: paths: [gl-dast-debug-auth-report.html] when: always @@ -75,16 +66,9 @@ dast_nbi: DAST_AUTH_REPORT: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" - #DAST_USERNAME_FIELD: "username" - #DAST_PASSWORD_FIELD: "password" DAST_USERNAME_FIELD: "f_user" DAST_PASSWORD_FIELD: "f_pass" DAST_AUTH_VERIFICATION_URL: "https://${OSM_HOSTNAME}/osm/admin/v1/tokens" - #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/admin/v1/tokens" - #DAST_AUTH_VERIFICATION_URL: "https://nbi.172.21.248.230.nip.io/osm/pdu/v1/pdu_descriptors" - #DAST_USERNAME_FIELD: css:input[id='f_user'] - #DAST_SUBMIT_FIELD: css:input[type="submit"] - DAST_DEBUG: "true" DAST_FULL_SCAN_ENABLED: "true" # do a full scan DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider @@ -99,6 +83,8 @@ dast_nbi: dast_ui: extends: dast stage: dast + rules: + - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" variables: DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" @@ -129,11 +115,7 @@ dast_ui: - ls -la - -dependency_scanning: - stage: test - variables: - CI_DEBUG_TRACE: "true" + deploy: stage: deploy @@ -180,7 +162,7 @@ TST010: - openstack resource_group: $ENV rules: - - if: $PIPELINE == "TEST" || $PIPELINE == "FULL" + - if: $PIPELINE == "CONFORMANCE" || $PIPELINE == "TEST" || $PIPELINE == "FULL" artifacts: when: always paths: @@ -229,9 +211,12 @@ TST010: - source hive/openstack-etsi.rc - python3 logs.py + + dast_api: stage: dast rules: + - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "FULL" - when: manual timeout: 24 hours @@ -269,6 +254,18 @@ apifuzzer_fuzz: timeout: 3 hours stage: fuzz + rules: + if: $PIPELINE == "FUZZ" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" + variables: + #API_FUZZING_DISABLED: 'True' + FUZZAPI_VERBOSE: 1 + FUZZAPI_PROFILE: Quick-10 + FUZZAPI_OPENAPI: hive/test-openapi.json + FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" + FUZZAPI_OVERRIDES_FILE: token.json + FUZZAPI_OVERRIDES_CMD: newToken.py + FUZZAPI_OVERRIDES_INTERVAL: 3000 + IGNORE_DEPRECATION_ERROR: "true" artifacts: when: always environment: @@ -283,6 +280,9 @@ apifuzzer_fuzz: - chmod 766 token.json - ls -la --full-time + + ### Uncomment when OPENAPI is fixed ### + # Fetching OPENAPI and converting YAML to JSON #- apk add yq #- wget $OPENAPI_URL -O openapi.yaml #- yq r -j -P openapi.yaml > openapi.json -- GitLab From 72df244927066827572903b4a5490a0c40acdf34 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 13:39:57 +0000 Subject: [PATCH 277/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4d41236..05c16d3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -255,17 +255,17 @@ apifuzzer_fuzz: 3 hours stage: fuzz rules: - if: $PIPELINE == "FUZZ" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" + - if: $PIPELINE == "FUZZ" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" variables: - #API_FUZZING_DISABLED: 'True' - FUZZAPI_VERBOSE: 1 - FUZZAPI_PROFILE: Quick-10 - FUZZAPI_OPENAPI: hive/test-openapi.json - FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" - FUZZAPI_OVERRIDES_FILE: token.json - FUZZAPI_OVERRIDES_CMD: newToken.py - FUZZAPI_OVERRIDES_INTERVAL: 3000 - IGNORE_DEPRECATION_ERROR: "true" + #API_FUZZING_DISABLED: 'True' + FUZZAPI_VERBOSE: 1 + FUZZAPI_PROFILE: Quick-10 + FUZZAPI_OPENAPI: hive/test-openapi.json + FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" + FUZZAPI_OVERRIDES_FILE: token.json + FUZZAPI_OVERRIDES_CMD: newToken.py + FUZZAPI_OVERRIDES_INTERVAL: 3000 + IGNORE_DEPRECATION_ERROR: "true" artifacts: when: always environment: -- GitLab From 198ebe6e5c5b5c6acf21e5659598c4a4eaf6322a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 13:49:36 +0000 Subject: [PATCH 278/292] Update utils.py, .gitlab-ci.yml files --- .gitlab-ci.yml | 2 +- utils.py | 13 ------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 05c16d3..5fdb0f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -18,7 +18,7 @@ variables: SSH_KEY: $SSH_KEY GITLAB_API: $GITLAB_API GITLAB_TOKEN: $GITLAB_TOKEN - ENV: "New" + ENV: "staging" PIPELINE: "SECURITY" diff --git a/utils.py b/utils.py index 17911fc..2462199 100644 --- a/utils.py +++ b/utils.py @@ -51,18 +51,5 @@ def gitlabRequest(method, endpoint, payload): print("{} : {}/{}".format(method, url, endpoint)) res = requests.request("{}".format(method), "{}/{}{}".format(url, endpoint, filter), headers=header, data=payload) return res - -def getAuthToken(self): - r = requests.post("https://{}:{}/osm/admin/v1/tokens".format(self.osm_hostname, self.port), verify=False, headers={"Accept":"application/json"}, json={ - "username": "admin", - "password": "admin", - "project": "admin" - }) - token = r.json()["id"] - obj = '{"headers": {"Authorization": "Bearer %s"}}' % (token) - f = open("token.json", "w") - f.write(obj) - f.close() - -- GitLab From 028772cd54b5a5d5599460f7bf7f7ba35f4a76f7 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 14:04:41 +0000 Subject: [PATCH 279/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5fdb0f7..42d04de 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,7 +56,7 @@ dast_nbi: paths: [gl-dast-debug-auth-report.html] when: always variables: - #DAST_REQUEST_HEADERS: $DAST_REQUEST_HEADERS + DAST_REQUEST_HEADERS: 'Authorization: Bearer gAAAAABiASa9G_stn8i2IdZYyVD-zsK-yinAIPqmBPTj17-tLxHQl3aw77MkXKe0Tn9inVHEjn3QaQumMMEAE94OtNVhGGh3d0bzklN355FB45OGq7zzcFdQPuz45Y8QVCRcWNr5ZSZe6f-F8Hu9CT-gNhRwL7CQSNJi9GLT7kuXMfex83cwlNhke6Rln1xL9Vz4v0VGFwk' #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" DAST_WEBSITE: https://${OSM_HOSTNAME}/osm/" #DAST_SUBMIT_FIELD: css:input[type='submit'] @@ -92,14 +92,14 @@ dast_ui: DAST_PASSWORD: "test" DAST_DEBUG: "true" #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.85.nip.io/packages/ns" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" #DAST_FULL_SCAN_ENABLED: "true" # do a full scan #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" - DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" + #DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" + #DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" DAST_AUTH_REPORT: "true" #DAST_BROWSER_SCAN: "true" #artifacts: -- GitLab From 4b0601b4c337a304aa7e0f34e77a30515a858c09 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 14:09:53 +0000 Subject: [PATCH 280/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 42d04de..d2a095d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -43,7 +43,7 @@ workflow: when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_COMMIT_BRANCH + - if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE != "merge_request_event" -- GitLab From 7c44f42e30ad1d1a6bc6eb62a3bb9c1baf339f45 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 14:10:34 +0000 Subject: [PATCH 281/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d2a095d..5f881f6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,7 +57,6 @@ dast_nbi: when: always variables: DAST_REQUEST_HEADERS: 'Authorization: Bearer gAAAAABiASa9G_stn8i2IdZYyVD-zsK-yinAIPqmBPTj17-tLxHQl3aw77MkXKe0Tn9inVHEjn3QaQumMMEAE94OtNVhGGh3d0bzklN355FB45OGq7zzcFdQPuz45Y8QVCRcWNr5ZSZe6f-F8Hu9CT-gNhRwL7CQSNJi9GLT7kuXMfex83cwlNhke6Rln1xL9Vz4v0VGFwk' - #DAST_WEBSITE: "https://nbi.172.21.248.230.nip.io/osm" DAST_WEBSITE: https://${OSM_HOSTNAME}/osm/" #DAST_SUBMIT_FIELD: css:input[type='submit'] DAST_AUTH_URL: "https://${OSM_HOSTNAME}/osm/" -- GitLab From 8e83ec1c5ad4ef1775198646825a4a6a031d982b Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 14:11:15 +0000 Subject: [PATCH 282/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f881f6..e724617 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -44,6 +44,7 @@ workflow: - if: $CI_PIPELINE_SOURCE == "merge_request_event" - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE != "merge_request_event" + - when: never -- GitLab From cbcee5f832e527eabf7f17bdeb4597a84b6d0f8a Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 14:43:46 +0000 Subject: [PATCH 283/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e724617..ab910f3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,10 +42,10 @@ workflow: - if: $CI_COMMIT_MESSAGE =~ /-draft$/ when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" - - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - - if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE != "merge_request_event" - - when: never - + #- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "merge_request_event" + when: never + dast_nbi: -- GitLab From 504f06e65ef26c608eb87de56e295dc93d3e8b56 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 14:44:53 +0000 Subject: [PATCH 284/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ab910f3..c1b865e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -47,7 +47,6 @@ workflow: when: never - dast_nbi: extends: dast stage: dast -- GitLab From 7594fb6eb0d5ca4a20bbaf400dd6c68f0faee330 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 14:45:30 +0000 Subject: [PATCH 285/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c1b865e..762f63c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -42,7 +42,7 @@ workflow: - if: $CI_COMMIT_MESSAGE =~ /-draft$/ when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" - #- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "merge_request_event" when: never -- GitLab From cfad1cea5e90a012a9a92bb9739197656971e066 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 14:47:59 +0000 Subject: [PATCH 286/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 762f63c..ef8d7b5 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,7 +56,7 @@ dast_nbi: paths: [gl-dast-debug-auth-report.html] when: always variables: - DAST_REQUEST_HEADERS: 'Authorization: Bearer gAAAAABiASa9G_stn8i2IdZYyVD-zsK-yinAIPqmBPTj17-tLxHQl3aw77MkXKe0Tn9inVHEjn3QaQumMMEAE94OtNVhGGh3d0bzklN355FB45OGq7zzcFdQPuz45Y8QVCRcWNr5ZSZe6f-F8Hu9CT-gNhRwL7CQSNJi9GLT7kuXMfex83cwlNhke6Rln1xL9Vz4v0VGFwk' + DAST_REQUEST_HEADERS: 'Authorization: Bearer gAAAAABiATEDghY1BXwZDbVEc4jFsxY80wxlLs5P2JuVypHMtUPqXUj0Jv29-JbzNcVafxA0mfvnKsXf8dtC6o-Qid-oXOC5TPEu8xaCNl3LQnzCvEGxf92GoPYG18wt5u3DVhQP19To26EL0An-0q9ANX59avkDvWP7N2VE-kjWEWr__l0eiw0PT92iX3Ihq-JnvufJSnMr' DAST_WEBSITE: https://${OSM_HOSTNAME}/osm/" #DAST_SUBMIT_FIELD: css:input[type='submit'] DAST_AUTH_URL: "https://${OSM_HOSTNAME}/osm/" -- GitLab From 15669f031cc6fd0dc6c9fc7e34190b11cd663841 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 14:58:14 +0000 Subject: [PATCH 287/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ef8d7b5..8f7967c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -52,11 +52,8 @@ dast_nbi: stage: dast rules: - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" - artifacts: - paths: [gl-dast-debug-auth-report.html] - when: always variables: - DAST_REQUEST_HEADERS: 'Authorization: Bearer gAAAAABiATEDghY1BXwZDbVEc4jFsxY80wxlLs5P2JuVypHMtUPqXUj0Jv29-JbzNcVafxA0mfvnKsXf8dtC6o-Qid-oXOC5TPEu8xaCNl3LQnzCvEGxf92GoPYG18wt5u3DVhQP19To26EL0An-0q9ANX59avkDvWP7N2VE-kjWEWr__l0eiw0PT92iX3Ihq-JnvufJSnMr' + #DAST_REQUEST_HEADERS: 'Authorization: Bearer gAAAAABiATEDghY1BXwZDbVEc4jFsxY80wxlLs5P2JuVypHMtUPqXUj0Jv29-JbzNcVafxA0mfvnKsXf8dtC6o-Qid-oXOC5TPEu8xaCNl3LQnzCvEGxf92GoPYG18wt5u3DVhQP19To26EL0An-0q9ANX59avkDvWP7N2VE-kjWEWr__l0eiw0PT92iX3Ihq-JnvufJSnMr' DAST_WEBSITE: https://${OSM_HOSTNAME}/osm/" #DAST_SUBMIT_FIELD: css:input[type='submit'] DAST_AUTH_URL: "https://${OSM_HOSTNAME}/osm/" -- GitLab From 9d42a57dd59c89de560628ed40fb5fa2c23211dc Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 17:40:42 +0000 Subject: [PATCH 288/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8f7967c..a01cd1e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -24,17 +24,14 @@ variables: stages: - deploy + - conformance - dast - - test - fuzz - - conformance - cleanup include: - template: DAST.gitlab-ci.yml - template: API-Fuzzing.latest.gitlab-ci.yml - #- template: Security/SAST.gitlab-ci.yml - #- template: Security/Dependency-Scanning.gitlab-ci.yml - template: DAST-API.gitlab-ci.yml workflow: @@ -55,11 +52,7 @@ dast_nbi: variables: #DAST_REQUEST_HEADERS: 'Authorization: Bearer gAAAAABiATEDghY1BXwZDbVEc4jFsxY80wxlLs5P2JuVypHMtUPqXUj0Jv29-JbzNcVafxA0mfvnKsXf8dtC6o-Qid-oXOC5TPEu8xaCNl3LQnzCvEGxf92GoPYG18wt5u3DVhQP19To26EL0An-0q9ANX59avkDvWP7N2VE-kjWEWr__l0eiw0PT92iX3Ihq-JnvufJSnMr' DAST_WEBSITE: https://${OSM_HOSTNAME}/osm/" - #DAST_SUBMIT_FIELD: css:input[type='submit'] DAST_AUTH_URL: "https://${OSM_HOSTNAME}/osm/" - #DAST_AUTH_URL: "https://nbi.172.21.248.230.nip.io/osm/" - DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - DAST_AUTH_REPORT: "true" DAST_USERNAME: "admin" DAST_PASSWORD: "admin" DAST_USERNAME_FIELD: "f_user" -- GitLab From 61157545594b7c3f5e868af4d2c1e4cf80dceac8 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 17:42:22 +0000 Subject: [PATCH 289/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a01cd1e..713a125 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -206,7 +206,7 @@ dast_api: stage: dast rules: - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "FULL" - - when: manual + when: manual timeout: 24 hours variables: -- GitLab From 60d72dc8a438f082d0523ac2bd63e1eef82425fd Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 18:01:34 +0000 Subject: [PATCH 290/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 125 +++++++++++++++++-------------------------------- 1 file changed, 43 insertions(+), 82 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 713a125..37c1d6f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -19,7 +19,7 @@ variables: GITLAB_API: $GITLAB_API GITLAB_TOKEN: $GITLAB_TOKEN ENV: "staging" - PIPELINE: "SECURITY" + PIPELINE: "TEST" stages: @@ -43,68 +43,6 @@ workflow: - if: $CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "merge_request_event" when: never - -dast_nbi: - extends: dast - stage: dast - rules: - - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" - variables: - #DAST_REQUEST_HEADERS: 'Authorization: Bearer gAAAAABiATEDghY1BXwZDbVEc4jFsxY80wxlLs5P2JuVypHMtUPqXUj0Jv29-JbzNcVafxA0mfvnKsXf8dtC6o-Qid-oXOC5TPEu8xaCNl3LQnzCvEGxf92GoPYG18wt5u3DVhQP19To26EL0An-0q9ANX59avkDvWP7N2VE-kjWEWr__l0eiw0PT92iX3Ihq-JnvufJSnMr' - DAST_WEBSITE: https://${OSM_HOSTNAME}/osm/" - DAST_AUTH_URL: "https://${OSM_HOSTNAME}/osm/" - DAST_USERNAME: "admin" - DAST_PASSWORD: "admin" - DAST_USERNAME_FIELD: "f_user" - DAST_PASSWORD_FIELD: "f_pass" - DAST_AUTH_VERIFICATION_URL: "https://${OSM_HOSTNAME}/osm/admin/v1/tokens" - DAST_DEBUG: "true" - DAST_FULL_SCAN_ENABLED: "true" # do a full scan - DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider - - environment: - name: $ENV - before_script: - - echo "Preparing NBI DAST" - - ls -la - - -dast_ui: - extends: dast - stage: dast - rules: - - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" - variables: - DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" - DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" - DAST_USERNAME: "admin" - DAST_PASSWORD: "test" - DAST_DEBUG: "true" - #DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" - #DAST_FULL_SCAN_ENABLED: "true" # do a full scan - #DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider - #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - #DAST_AUTH_VERIFICATION_SELECTOR: "css:.card" - #DAST_AUTH_VERIFICATION_LOGIN_FORM: "true" - #DAST_USERNAME_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[1]/input" - #DAST_PASSWORD_FIELD: "xpath:/html/body/app-root/app-login/div[1]/div/form/div[2]/input" - DAST_AUTH_REPORT: "true" - #DAST_BROWSER_SCAN: "true" - #artifacts: - #paths: [gl-dast-debug-auth-report.html] - #when: always - - environment: - name: $ENV - before_script: - - echo "Preparing DAST" - - ls -la - after_script: - - ls -la - - - deploy: stage: deploy @@ -210,7 +148,7 @@ dast_api: timeout: 24 hours variables: - DAST_API_TARGET_URL: "https://nbi.172.21.248.230.nip.io:443" + DAST_API_TARGET_URL: "https://${OSM_HOSTNAME}" DAST_API_OPENAPI: hive/openapi.json DAST_API_OVERRIDES_FILE: token.json DAST_API_DEBUG: "true" @@ -222,18 +160,48 @@ dast_api: - chmod +x newToken.py - ./newToken.py - cat token.json - - echo $DAST_API_OVERRIDES_ENV - #- env - - echo $DAST_API_OVERRIDES_FILE - - echo $DAST_REQUEST_HEADERS - - - echo $PWD - - ls -la - +dast_nbi: + extends: dast + stage: dast + rules: + - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" + variables: + DAST_WEBSITE: https://${OSM_HOSTNAME}/osm/" + DAST_AUTH_URL: "https://${OSM_HOSTNAME}/osm/" + DAST_USERNAME: "admin" + DAST_PASSWORD: "admin" + DAST_USERNAME_FIELD: "f_user" + DAST_PASSWORD_FIELD: "f_pass" + DAST_AUTH_VERIFICATION_URL: "https://${OSM_HOSTNAME}/osm/admin/v1/tokens" + DAST_DEBUG: "true" + DAST_FULL_SCAN_ENABLED: "true" # do a full scan + DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + environment: + name: $ENV + before_script: + - echo "Preparing NBI DAST..." +dast_ui: + extends: dast + stage: dast + rules: + - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" + variables: + DAST_WEBSITE: "https://ui.172.21.248.230.nip.io" + DAST_AUTH_URL: "https://ui.172.21.248.230.nip.io/login" + DAST_USERNAME: "admin" + DAST_PASSWORD: "test" + DAST_DEBUG: "true" + DAST_AUTH_VERIFICATION_URL: "https://ui.172.21.248.230.nip.io/packages/ns" + DAST_FULL_SCAN_ENABLED: "true" # do a full scan + DAST_ZAP_USE_AJAX_SPIDER: "true" # use the ajax spider + environment: + name: $ENV + before_script: + - echo "Preparing UI DAST..." @@ -246,10 +214,9 @@ apifuzzer_fuzz: rules: - if: $PIPELINE == "FUZZ" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" variables: - #API_FUZZING_DISABLED: 'True' - FUZZAPI_VERBOSE: 1 + FUZZAPI_VERBOSE: "true" FUZZAPI_PROFILE: Quick-10 - FUZZAPI_OPENAPI: hive/test-openapi.json + FUZZAPI_OPENAPI: hive/openapi.json FUZZAPI_TARGET_URL: "https://${OSM_HOSTNAME}" FUZZAPI_OVERRIDES_FILE: token.json FUZZAPI_OVERRIDES_CMD: newToken.py @@ -260,7 +227,7 @@ apifuzzer_fuzz: environment: name: $ENV before_script: - - echo "Preparing API Fuzzing" + - echo "Preparing API Fuzzing..." - whoami - ls -la - chmod +x newToken.py @@ -277,12 +244,6 @@ apifuzzer_fuzz: #- yq r -j -P openapi.yaml > openapi.json #- cat openapi.json - after_script: - - echo $FUZZAPI_OVERRIDES_FILE - - whoami - #- ./newToken.py - - ls -la --full-time - - cat token.json -- GitLab From 26cae5f8ea893d8291d3d47984b778c0d3771016 Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 18:05:46 +0000 Subject: [PATCH 291/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 37c1d6f..d8920f7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -143,7 +143,7 @@ TST010: dast_api: stage: dast rules: - - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "FULL" + - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" when: manual timeout: 24 hours -- GitLab From 6698395cdf068b4310bd50855c08a763a7c07f1f Mon Sep 17 00:00:00 2001 From: veleza <166-veleza@users.noreply.osm.etsi.org> Date: Mon, 7 Feb 2022 18:07:31 +0000 Subject: [PATCH 292/292] Update .gitlab-ci.yml --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d8920f7..c0e817b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -88,6 +88,7 @@ TST010: tags: - openstack resource_group: $ENV + allow_failure: true rules: - if: $PIPELINE == "CONFORMANCE" || $PIPELINE == "TEST" || $PIPELINE == "FULL" artifacts: -- GitLab