diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e4066f844076f35e21c7d8950d152783355d03f1..c0e817babd93db60ee84714a5ba9808b04022c7f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,19 +20,30 @@ variables: GITLAB_TOKEN: $GITLAB_TOKEN ENV: "staging" PIPELINE: "TEST" + stages: - deploy - - test + - conformance + - dast + - fuzz - cleanup +include: + - template: DAST.gitlab-ci.yml + - template: API-Fuzzing.latest.gitlab-ci.yml + - template: DAST-API.gitlab-ci.yml + workflow: rules: - - if: $CI_MERGE_REQUEST_ID + - if: $CI_COMMIT_MESSAGE =~ /-draft$/ when: never - - if: $CI_COMMIT_BRANCH - - + - 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 + + deploy: stage: deploy tags: @@ -70,15 +81,16 @@ deploy: -testing: - stage: test +TST010: + stage: conformance environment: name: $ENV tags: - openstack resource_group: $ENV + allow_failure: true rules: - - if: $PIPELINE == "TEST" || $PIPELINE == "FULL" + - if: $PIPELINE == "CONFORMANCE" || $PIPELINE == "TEST" || $PIPELINE == "FULL" artifacts: when: always paths: @@ -113,7 +125,7 @@ testing: - sudo systemctl daemon-reload - sudo systemctl restart docker.service - - echo "TST10" + - echo "TST010" - | docker run --env OSM_HOSTNAME=$OSM_HOSTNAME \ @@ -126,6 +138,114 @@ testing: - set -a - source hive/openstack-etsi.rc - python3 logs.py + + + +dast_api: + stage: dast + rules: + - if: $PIPELINE == "DAST" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" + when: manual + timeout: + 24 hours + variables: + DAST_API_TARGET_URL: "https://${OSM_HOSTNAME}" + DAST_API_OPENAPI: hive/openapi.json + DAST_API_OVERRIDES_FILE: token.json + DAST_API_DEBUG: "true" + DAST_API_PROFILE: Quick + environment: + name: $ENV + before_script: + - echo "Preparing DAST" + - chmod +x newToken.py + - ./newToken.py + - cat token.json + + +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..." + + + + + +apifuzzer_fuzz: + timeout: + 3 hours + stage: fuzz + rules: + - if: $PIPELINE == "FUZZ" || $PIPELINE == "SECURITY" || $PIPELINE == "TEST" || $PIPELINE == "FULL" + variables: + FUZZAPI_VERBOSE: "true" + 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 + IGNORE_DEPRECATION_ERROR: "true" + artifacts: + when: always + environment: + name: $ENV + before_script: + - echo "Preparing API Fuzzing..." + - whoami + - ls -la + - chmod +x newToken.py + - ./newToken.py + - cat token.json + - 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 + #- cat openapi.json + + cleanup: diff --git a/hive/openapi.json b/hive/openapi.json new file mode 100644 index 0000000000000000000000000000000000000000..4c790ccde0ac2be4d41965152614688ed40a152d --- /dev/null +++ b/hive/openapi.json @@ -0,0 +1,83697 @@ +{ + "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": "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" + } + } + } +} diff --git a/hive/test-openapi.json b/hive/test-openapi.json new file mode 100644 index 0000000000000000000000000000000000000000..1b81845773c5e10f395d3fa38df02ea7988f83a3 --- /dev/null +++ b/hive/test-openapi.json @@ -0,0 +1,11486 @@ +{ + "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" + ] + } + } + } + } + } + } + } + }, + "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" + } + } + } +} diff --git a/hive/token.json b/hive/token.json new file mode 100644 index 0000000000000000000000000000000000000000..64031880ddae2c4d21bad09abb336c3aeb9dfdcb --- /dev/null +++ b/hive/token.json @@ -0,0 +1,5 @@ +{ + "headers" : { + "Authorization" : "Bearer gAAAAABh6ZKLKDbJL8SLqVrWEkckmfmuFg3ooJRoLQS7DOhzfPEdDvWwoa-klLpleDn5vC-3Za2IsP_L7g3mUOemqPLDDMMJsbrQOAYeceHTTs1RjD57je4gExK8ljz0rZVmuyi2B_ZyGtCKoCfgbfZMTc-PqR4uvB0se4DcER-3gTujvW6uTDHGM31qQuGA3kCgTwKsYyEf" + } +} diff --git a/newToken.py b/newToken.py new file mode 100644 index 0000000000000000000000000000000000000000..b9fe4e6d61486b51e7639c137b98368c162d11a8 --- /dev/null +++ b/newToken.py @@ -0,0 +1,25 @@ +#!/usr/bin/python3 +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={ + "username": "admin", + "password": "admin", + "project": "admin" + }) + + 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 + +f = open("token.json", "w") +f.write(obj) +f.close() diff --git a/utils.py b/utils.py index c881c4052918beaf7f4e566d86a1aecd94453cd8..2462199e32c6f5ad52114a9231a1892e16b1785f 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): @@ -50,6 +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 -