From e79a2d232fef50f6896a09fb9976052bee966fd5 Mon Sep 17 00:00:00 2001 From: egernug Date: Mon, 24 Jan 2022 13:46:32 +0000 Subject: [PMSH] Finalise API Finalised API for release J Issue-ID: DCAEGEN2-3061 Signed-off-by: egernug Change-Id: I54c13d4d1a1b5576b963f94b690b70d913aef4b8 --- docs/sections/apis/pmsh_swagger.json | 2269 ++++++---------------------------- docs/sections/apis/pmsh_swagger.yml | 1610 +++++------------------- 2 files changed, 669 insertions(+), 3210 deletions(-) diff --git a/docs/sections/apis/pmsh_swagger.json b/docs/sections/apis/pmsh_swagger.json index 2a6624e6..62957283 100644 --- a/docs/sections/apis/pmsh_swagger.json +++ b/docs/sections/apis/pmsh_swagger.json @@ -5,84 +5,23 @@ "version": "2.0.0", "description": "PM subscription handler enables control of performance management jobs on network functions in ONAP" }, - "produces": [ + "consumes": [ "application/json" ], - "basePath": "/pmsh", - "tags": [ - { - "name": "Existing API", - "description": "Existing API before Public API work" - } + "produces": [ + "application/json" ], + "basePath": "/", "schemes": [ - "https" + "https", + "http" ], "paths": { - "/v1/subscriptions": { - "get": { - "tags": [ - "Existing API" - ], - "description": "Get all defined subscription and their related Network Functions from ONAP.", - "operationId": "mod.api.controller.get_all_sub_to_nf_relations", - "responses": { - "200": { - "description": "OK; Array of subscription are returned as an object", - "schema": { - "type": "array", - "items": { - "type": "object", - "properties": { - "subscription_name": { - "type": "string", - "description": "Name of the Subscription" - }, - "subscription_status": { - "type": "string", - "description": "Status of the Subscription" - }, - "network_functions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "nf_name": { - "type": "string", - "description": "Name of the Network Function" - }, - "nf_sub_status": { - "type": "string", - "description": "Status of the Subscription on the Network Function" - }, - "orchestration_status": { - "type": "string", - "description": "Orchestration status of the Network Function" - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - } - }, "/healthcheck": { "get": { "operationId": "mod.api.controller.status", "tags": [ - "Existing API" + "HealthCheck" ], "description": "This is the health check endpoint. If this returns a 200, the server is alive.", "responses": { @@ -103,7 +42,7 @@ } }, "503": { - "description": "the pmsh service is unavailable" + "description": "The PMSH service is unavailable" } } } @@ -111,2009 +50,545 @@ "/subscription": { "post": { "tags": [ - "Subscriptions" + "Subscription" ], "description": "Create a PM Subscription", - "operationId": "mod.api.controller.create_subscription", - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], + "operationId": "mod.api.controller.post_subscription", "parameters": [ { "in": "body", "name": "body", - "description": "Subscription object to be created", "required": true, "schema": { - "type": "object", - "properties": { - "subscription": { - "type": "object", - "properties": { - "subscriptionName": { - "type": "string" - }, - "administrativeState": { - "allOf": [ - { - "type": "string" - }, - { - "enum": [ - "UNLOCKED", - "LOCKED", - "FILTERING" - ] - } - ] - }, - "fileBasedGP": { - "type": "integer" - }, - "fileLocation": { - "type": "string" - }, - "nfFilter": { - "type": "object", - "properties": { - "nfNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelInvariantIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelVersionIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelNames": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - }, - "measurementGroups": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "measurementGroup": { - "type": "object", - "properties": { - "measurementTypes": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "measurementType": { - "type": "string" - } - }, - "required": [ - "measurementType" - ] - } - }, - "managedObjectDNsBasic": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "DN": { - "type": "string" - } - }, - "required": [ - "DN" - ] - } - } - }, - "required": [ - "measurementTypes", - "managedObjectDNsBasic" - ] - } - }, - "required": [ - "measurementGroup" - ] - } - } - }, - "required": [ - "subscriptionName", - "administrativeState", - "fileBasedGP", - "fileLocation", - "nfFilter", - "measurementGroups" - ] - } - } + "$ref": "#/definitions/subscription" } } ], "responses": { "201": { - "description": "successfully created PM Subscription" + "description": "Successfully created PM Subscription" }, - "405": { + "400": { "description": "Invalid input" + }, + "409": { + "description": "Duplicate data" } } - } - }, - "/subscription/{subscriptionName}": { + }, "get": { + "description": "Get all the subscriptions from PMSH.", + "operationId": "mod.api.controller.get_subscriptions", "tags": [ - "Subscriptions" - ], - "description": "Show the subscription", - "operationId": "mod.api.controller.get_subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } + "Subscription" ], "responses": { "200": { - "description": "Requested Subscription returned", + "description": "OK; Array of subscriptions are returned else empty if not found", "schema": { - "type": "object", - "properties": { - "subscription": { - "type": "object", - "properties": { - "subscriptionName": { - "type": "string" - }, - "administrativeState": { - "allOf": [ - { - "type": "string" - }, - { - "enum": [ - "UNLOCKED", - "LOCKED", - "FILTERING" - ] - } - ] - }, - "fileBasedGP": { - "type": "integer" - }, - "fileLocation": { - "type": "string" - }, - "nfFilter": { - "type": "object", - "properties": { - "nfNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelInvariantIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelVersionIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelNames": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "additionalProperties": false - }, - "measurementGroups": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "measurementGroup": { - "type": "object", - "properties": { - "measurementTypes": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "measurementType": { - "type": "string" - } - } - } - }, - "managedObjectDNsBasic": { - "type": "array", - "minItems": 1, - "items": { - "type": "object", - "properties": { - "DN": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } + "type": "array", + "items": { + "$ref": "#/definitions/subscription" } } }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" + "500": { + "description": "Exception occurred while querying database" } } - }, - "put": { + } + }, + "/subscription/{subscription_name}": { + "get": { + "description": "Get the Subscription from PMSH specified by Name", + "operationId": "mod.api.controller.get_subscription_by_name", "tags": [ - "Subscriptions" - ], - "description": "This is an update for Subscription object", - "consumes": [ - "application/json" + "Subscription" ], "parameters": [ { + "name": "subscription_name", "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "body", - "name": "Subscription", - "description": "The subscription object to update", - "schema": { - "type": "object", - "properties": { - "subscription": { - "type": "object", - "properties": { - "subscriptionName": { - "type": "string" - }, - "administrativeState": { - "type": "string", - "enum": [ - "UNLOCKED", - "LOCKED", - "FILTERING" - ] - }, - "fileBasedGP": { - "type": "integer" - }, - "fileLocation": { - "type": "string" - }, - "nfFilter": { - "type": "object", - "properties": { - "nfNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelInvariantIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelVersionIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelNames": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "measurementGroups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "measurementGroup": { - "type": "object", - "properties": { - "measurementTypes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "measurementType": { - "type": "string" - } - } - } - }, - "managedObjectDNsBasic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "DN": { - "type": "string" - } - } - } - } - } - } - } - } - } - }, - "required": [ - "subscriptionName" - ] - } - }, - "required": [ - "subscription" - ] - } + "required": true, + "description": "Name of the subscription", + "type": "string" } ], "responses": { - "201": { - "description": "Subscription object updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" + "200": { + "description": "OK; Requested Subscription was returned", + "schema": { + "$ref": "#/definitions/subscription" + } }, "404": { - "description": "Subscription object not found" + "description": "Subscription with specified name not found" + }, + "500": { + "description": "Exception occurred while querying database" } } }, "delete": { + "description": "Deletes the Subscription from PMSH specified by Name", + "operationId": "mod.api.controller.delete_subscription_by_name", "tags": [ - "Subscriptions" + "Subscription" ], - "description": "This is a delete for Subscription object", "parameters": [ { + "name": "subscription_name", "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true + "required": true, + "description": "The name of the subscription to delete", + "type": "string" } ], "responses": { "204": { - "description": "Subscription object deleted" + "description": "Successfully deleted the subscription and returns NO Content" }, - "401": { - "description": "Unauthorized" + "404": { + "description": "Subscription with the specified name not found" }, - "403": { - "description": "Forbidden" + "409": { + "description": "Subscription could not be deleted as it contains measurement groups with state UNLOCKED OR state change to LOCKED was under process" }, - "404": { - "description": "Subscription object not found" + "500": { + "description": "Exception occurred on the server" } } } }, - "/subscription/{subscriptionName}/adminState": { - "get": { - "tags": [ - "adminState" - ], - "description": "Show admin state of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested admin state returned", - "schema": { - "type": "object", - "properties": { - "adminState": { - "type": "string", - "enum": [ - "UNLOCKED", - "LOCKED", - "FILTERING" - ] - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - }, + "/subscription/{subscription_name}/nfFilter": { "put": { + "description": "Update nfFilter for", "tags": [ - "adminState" - ], - "description": "This is an update for a specific subscription's admin state", - "consumes": [ - "application/json" + "Subscription" ], "parameters": [ { + "name": "subscription_name", "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true + "required": true, + "description": "Name of the subscription", + "type": "string" }, { + "name": "body", "in": "body", - "name": "adminState", - "description": "The adminState of the subscription object to update", + "required": true, "schema": { - "type": "object", - "required": [ - "adminState" - ], - "properties": { - "adminState": { - "type": "string", - "enum": [ - "UNLOCKED", - "LOCKED", - "FILTERING" - ] - } - } + "$ref": "#/definitions/nfFilter" } } ], "responses": { "201": { - "description": "adminState is updated" + "description": "Successfully updated filter" }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" + "400": { + "description": "Invalid input" }, - "404": { - "description": "Subscription object not found" + "409": { + "description": "Duplicate data" } } } }, - "/subscription/{subscriptionName}/fileBasedGP": { + "/subscription/{subscription_name}/measurementGroups/{measurement_group_name}": { "get": { + "description": "Get the measurement group and associated network functions from PMSH by using sub name and meas group name", + "operationId": "mod.api.controller.get_meas_group_with_nfs", "tags": [ - "fileBasedGP" + "measurement group" ], - "description": "Show the fileBasedGP of a subscription", "parameters": [ { + "name": "subscription_name", + "in": "path", + "required": true, + "description": "Name of the subscription", + "type": "string" + }, + { + "name": "measurement_group_name", "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true + "required": true, + "description": "Name of the measurement group name", + "type": "string" } ], "responses": { "200": { - "description": "Requested fileBasedGP returned", + "description": "OK; Received requested measurement group with associated NF's", "schema": { - "type": "object", - "properties": { - "fileBasedGP": { - "type": "integer" - } - } + "$ref": "#/definitions/measGroupWithNFs" } }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, "404": { - "description": "there are no subscription defined" + "description": "Measurement group with specified name not found" + }, + "500": { + "description": "Exception occurred while querying database" } } }, - "put": { + "post": { + "description": "Create a measurement group", "tags": [ - "fileBasedGP" - ], - "description": "This is an update for a specific subscription's fileBasedGP", - "consumes": [ - "application/json" + "measurement group" ], "parameters": [ { + "name": "subscription_name", + "in": "path", + "required": true, + "description": "Name of the subscription", + "type": "string" + }, + { + "name": "measurement_group_name", "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true + "required": true, + "description": "Name of the measurement group name", + "type": "string" }, { + "name": "body", "in": "body", - "name": "fileBasedGP", - "description": "The fileBasedGP field of the subscription object to update", + "required": true, "schema": { - "type": "object", - "required": [ - "fileBasedGP" - ], - "properties": { - "fileBasedGP": { - "type": "integer" - } - } + "$ref": "#/definitions/measurementGroup" } } ], "responses": { "201": { - "description": "fileBasedGP is updated" + "description": "Successfully created measurement group" }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" + "400": { + "description": "Invalid input" }, - "404": { - "description": "Subscription object not found" + "409": { + "description": "Duplicate data" } } }, "delete": { + "description": "Delete a measurement group", "tags": [ - "fileBasedGP" + "measurement group" ], - "description": "This is a delete for fileBasedGP field on a subscription object", "parameters": [ { + "name": "subscription_name", "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "fileBasedGP field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" + "required": true, + "description": "Name of the subscription", + "type": "string" }, - "404": { - "description": "Subscription object not found" - } - } - } - }, - "/subscription/{subscriptionName}/fileLocation": { - "get": { - "tags": [ - "fileLocation" - ], - "description": "Show the fileLocation of a subscription", - "parameters": [ { + "name": "measurement_group_name", "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true + "required": true, + "description": "Name of the measurement group name", + "type": "string" } ], "responses": { - "200": { - "description": "Requested fileLocation returned", - "schema": { - "type": "object", - "properties": { - "fileLocation": { - "type": "string" - } - } - } + "204": { + "description": "Successfully deleted the measurement group and returns NO Content" }, - "401": { - "description": "Unauthorized" + "404": { + "description": "Measurement group with the specified name not found" }, - "403": { - "description": "Forbidden" + "409": { + "description": "Measurement not deleted because state UNLOCKED OR state change to LOCKED was under process" }, - "404": { - "description": "there are no subscription defined" + "500": { + "description": "Exception occurred on the server" } } - }, + } + }, + "/subscription/{subscription_name}/measurementGroups/{measurement_group_name}/{administrativeState}": { "put": { + "description": "Update administrative state for a measurement group", "tags": [ - "fileLocation" - ], - "description": "This is an update for a specific subscription's fileLocation", - "consumes": [ - "application/json" + "measurement group" ], "parameters": [ { + "name": "subscription_name", "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true + "required": true, + "description": "Name of the subscription", + "type": "string" }, { - "in": "body", - "name": "fileLocation", - "description": "The fileLocation field of the subscription object to update", - "schema": { - "type": "object", - "required": [ - "fileLocation" - ], - "properties": { - "fileBasedGP": { - "type": "string" - } - } - } - } - ], - "responses": { - "201": { - "description": "fileLocation is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" + "name": "measurement_group_name", + "in": "path", + "required": true, + "description": "Name of the measurement group name", + "type": "string" }, - "404": { - "description": "Subscription object not found" - } - } - }, - "delete": { - "tags": [ - "fileLocation" - ], - "description": "This is a delete for fileLocation field on a subscription object", - "parameters": [ { + "name": "administrativeState", "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true + "required": true, + "description": "New administrative state of measurement group", + "type": "string" } ], "responses": { - "204": { - "description": "fileLocation field is deleted" - }, - "401": { - "description": "Unauthorized" + "201": { + "description": "Successfully updated administrative state" }, - "403": { - "description": "Forbidden" + "400": { + "description": "Invalid input" }, - "404": { - "description": "Subscription object not found" + "409": { + "description": "Duplicate data" } } } - }, - "/subscription/{subscriptionName}/nfFilter": { - "get": { - "tags": [ - "nfFilter" - ], - "description": "Show the nfFilter of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested nfFilter returned", - "schema": { - "type": "object", - "properties": { - "nfFilter": { - "type": "object", - "properties": { - "nfNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelInvariantIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelVersionIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelNames": { - "type": "array", - "items": { - "type": "string" - } - } - } - } + } + }, + "definitions": { + "subscription": { + "type": "object", + "properties": { + "subscription": { + "type": "object", + "properties": { + "subscriptionName": { + "type": "string" + }, + "operationalPolicyName": { + "type": "string" + }, + "controlLoopName": { + "type": "string" + }, + "nfFilter": { + "$ref": "#/definitions/nfFilter" + }, + "measurementGroups": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/measurementGroup" } } }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" + "required": [ + "subscriptionName", + "operationalPolicyName", + "nfFilter", + "measurementGroups" + ] + } + }, + "required": [ + "subscription" + ] + }, + "nfFilter": { + "type": "object", + "description": "At least one valid filter value within nfFilter is required", + "additionalProperties": false, + "properties": { + "nfNames": { + "type": "array", + "items": { + "type": "string" + } + }, + "modelInvariantIDs": { + "type": "array", + "items": { + "type": "string" + } + }, + "modelVersionIDs": { + "type": "array", + "items": { + "type": "string" + } + }, + "modelNames": { + "type": "array", + "items": { + "type": "string" } } }, - "put": { - "tags": [ - "nfFilter" - ], - "description": "This is an update for a specific subscription's nfFilter", - "consumes": [ - "application/json" - ], - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "body", - "name": "nfFilter", - "description": "The nfFilter field of the subscription object to update", - "schema": { - "type": "object", - "properties": { - "nfFilter": { - "type": "object", - "properties": { - "nfNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelInvariantIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelVersionIDs": { - "type": "array", - "items": { - "type": "string" - } - }, - "modelNames": { - "type": "array", - "items": { - "type": "string" - } - } - } - } + "required": [ + "nfNames", + "modelInvariantIDs", + "modelVersionIDs", + "modelNames" + ] + }, + "measurementGroup": { + "type": "object", + "properties": { + "measurementGroup": { + "type": "object", + "properties": { + "measurementGroupName": { + "type": "string" + }, + "fileBasedGP": { + "type": "integer" + }, + "fileLocation": { + "type": "string" + }, + "administrativeState": { + "type": "string", + "enum": [ + "LOCKED", + "UNLOCKED" + ] + }, + "measurementTypes": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/measurementType" + } + }, + "managedObjectDNsBasic": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/managedObjectDNs" } } - } - ], - "responses": { - "201": { - "description": "fileLocation is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } - } - }, - "delete": { - "tags": [ - "nfFilter" - ], - "description": "This is a delete for nfFilter field on a subscription object", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "nfFilter field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } - } - } - }, - "/subscription/{subscriptionName}/nfFilter/nfNames": { - "get": { - "tags": [ - "nfFilter" - ], - "description": "Show the nfNames of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested nfNames returned", - "schema": { - "type": "object", - "properties": { - "nfNames": { - "items": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - }, - "put": { - "tags": [ - "nfFilter" - ], - "description": "This is an update for a specific subscription's nfNames", - "consumes": [ - "application/json" - ], - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true }, - { - "in": "body", - "name": "nfNames", - "description": "The nfNames field of nfFilter of the subscription object to update", - "schema": { - "type": "object", + "allOf": [ + { "required": [ - "nfNames" - ], - "properties": { - "nfNames": { - "type": "array", - "items": { - "type": "string" - } - } - } + "measurementGroupName", + "fileBasedGP", + "fileLocation", + "administrativeState", + "measurementTypes", + "managedObjectDNsBasic" + ] } - } - ], - "responses": { - "201": { - "description": "nfNames is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } + ] } }, - "delete": { - "tags": [ - "nfFilter" - ], - "description": "This is a delete for nfNames field on a subscription object", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "nfNames field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } - } - } + "required": [ + "measurementGroup" + ] }, - "/subscription/{subscriptionName}/nfFilter/nfinvariantModelIds": { - "get": { - "tags": [ - "nfFilter" - ], - "description": "Show the nfinvariantModelIds of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested nfinvariantModelIds returned", - "schema": { - "type": "object", - "properties": { - "nfinvariantModelIds": { - "items": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - }, - "put": { - "tags": [ - "nfFilter" - ], - "description": "This is an update for a specific subscription's nfinvariantModelIds", - "consumes": [ - "application/json" - ], - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "body", - "name": "nfinvariantModelIds", - "description": "The nfinvariantModelIds field of nfFilter of the subscription object to update", - "schema": { - "type": "object", - "required": [ - "nfNames" - ], - "properties": { - "nfinvariantModelIds": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "201": { - "description": "nfNames is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } + "measurementType": { + "type": "object", + "properties": { + "measurementType": { + "type": "string" } }, - "delete": { - "tags": [ - "nfFilter" - ], - "description": "This is a delete for nfinvariantModelIds field on a subscription object", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "nfinvariantModelIds field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } - } - } + "required": [ + "measurementType" + ] }, - "/subscription/{subscriptionName}/nfFilter/modelVersionIds": { - "get": { - "tags": [ - "nfFilter" - ], - "description": "Show the modelVersionIds of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested modelVersionIds returned", - "schema": { - "type": "object", - "properties": { - "modelVersionIds": { - "items": { - "type": "string" - } - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - }, - "put": { - "tags": [ - "nfFilter" - ], - "description": "This is an update for a specific subscription's modelVersionIds", - "consumes": [ - "application/json" - ], - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "body", - "name": "modelVersionIds", - "description": "The modelVersionIds field of nfFilter of the subscription object to update", - "schema": { - "type": "object", - "required": [ - "modelVersionIds" - ], - "properties": { - "modelVersionIds": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "201": { - "description": "modelVersionIds is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } + "managedObjectDNs": { + "type": "object", + "properties": { + "DN": { + "type": "string" } }, - "delete": { - "tags": [ - "nfFilter" - ], - "description": "This is a delete for modelVersionIds field on a subscription object", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "modelVersionIds field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } - } - } + "required": [ + "DN" + ] }, - "/subscription/{subscriptionName}/nfFilter/modelNames": { - "get": { - "tags": [ - "nfFilter" - ], - "description": "Show the modelNames of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested modelNames returned", - "schema": { - "type": "object", - "properties": { - "modelNames": { - "items": { - "type": "string" - } - } + "measGroupWithNFs": { + "type": "object", + "properties": { + "subscriptionName": { + "type": "string" + }, + "measurementGroupName": { + "type": "string" + }, + "administrativeState": { + "type": "string", + "enum": [ + "LOCKED", + "UNLOCKED" + ] + }, + "fileBasedGP": { + "type": "integer" + }, + "fileLocation": { + "type": "string" + }, + "measurementTypes": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/measurementType" + } + }, + "managedObjectDNsBasic": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/managedObjectDNs" + } + }, + "network_functions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "nfName": { + "type": "string", + "description": "Name of the Network Function" + }, + "ipv4Address": { + "type": "string", + "description": "Address of the IPV4" + }, + "ipv6Address": { + "type": "string", + "description": "Address of the IPV6" + }, + "nfMgStatus": { + "type": "string", + "description": "status of network function for one meas group" + }, + "modelInvariantId": { + "type": "string", + "description": "ID of the model invariant" + }, + "modelVersionId": { + "type": "string", + "description": "ID of the model version" + }, + "modelName": { + "type": "string", + "description": "Name of the model" + }, + "sdncModelName": { + "type": "string", + "description": "Name of the sdnc model" + }, + "sdncModelVersion": { + "type": "string", + "description": "Version of the sdnc model" } } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - }, - "put": { - "tags": [ - "nfFilter" - ], - "description": "This is an update for a specific subscription's modelNames", - "consumes": [ - "application/json" - ], - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "body", - "name": "modelNames", - "description": "The modelNames field of nfFilter of the subscription object to update", - "schema": { - "type": "object", - "required": [ - "modelNames" - ], - "properties": { - "modelNames": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - ], - "responses": { - "201": { - "description": "modelNames is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } - } - }, - "delete": { - "tags": [ - "nfFilter" - ], - "description": "This is a delete for modelNames field on a subscription object", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "modelNames field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } - } - } - }, - "/subscription/{subscriptionName}/measurementGroups": { - "get": { - "tags": [ - "measurementGroups" - ], - "description": "Show the fileBasedGP of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested measurementGroups returned", - "schema": { - "type": "object", - "properties": { - "measurementGroups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "measurementGroup": { - "type": "object", - "properties": { - "measurementTypes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "measurementType": { - "type": "string" - } - } - } - }, - "managedObjectDNsBasic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "DN": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - }, - "put": { - "tags": [ - "measurementGroups" - ], - "description": "This is an update for a specific subscription's measurementGroups", - "consumes": [ - "application/json" - ], - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "body", - "name": "measurementGroups", - "description": "The measurementGroups field of the subscription object to update", - "schema": { - "type": "object", - "properties": { - "measurementGroups": { - "type": "array", - "items": { - "type": "object", - "properties": { - "measurementGroup": { - "type": "object", - "properties": { - "measurementTypes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "measurementType": { - "type": "string" - } - } - } - }, - "managedObjectDNsBasic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "DN": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "measurementGroups is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } - } - }, - "delete": { - "tags": [ - "measurementGroups" - ], - "description": "This is a delete for measurementGroups field on a subscription object", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "measurementGroups field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Subscription object not found" - } - } - } - }, - "/subscription/{subscriptionName}/measurementGroups/{measurementGroupName}": { - "get": { - "tags": [ - "measurementGroups" - ], - "description": "Show a measurementGroup of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "path", - "name": "measurementGroupName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested measurementGroup returned", - "schema": { - "type": "object", - "properties": { - "measurementGroup": { - "type": "object", - "properties": { - "measurementTypes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "measurementType": { - "type": "string" - }, - "managedObjectDNsBasic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "DN": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - }, - "put": { - "tags": [ - "measurementGroups" - ], - "description": "This is an update for a specific a measurementGroup", - "consumes": [ - "application/json" - ], - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "path", - "name": "measurementGroupName", - "type": "string", - "required": true - }, - { - "in": "body", - "name": "measurementGroup", - "description": "The measurementGroup field of the subscription object to update", - "schema": { - "type": "object", - "properties": { - "measurementGroup": { - "type": "object", - "properties": { - "measurementTypes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "measurementType": { - "type": "string" - }, - "managedObjectDNsBasic": { - "type": "array", - "items": { - "type": "object", - "properties": { - "DN": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - } - ], - "responses": { - "201": { - "description": "measurementGroup is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "measurementGroup object not found" - } - } - }, - "delete": { - "tags": [ - "measurementGroups" - ], - "description": "This is a delete for measurementGroup field on a subscription object", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "path", - "name": "measurementGroupName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "measurementGroup field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "measurementGroup object not found" - } - } - } - }, - "/subscription/{subscriptionName}/measurementGroups/{measurementGroupName}/measurementTypes": { - "get": { - "tags": [ - "measurementGroups" - ], - "description": "Show the measurementTypes of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "path", - "name": "measurementGroupName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested measurementTypes returned", - "schema": { - "type": "object", - "properties": { - "measurementTypes": { - "type": "string" - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - }, - "put": { - "tags": [ - "measurementGroups" - ], - "description": "This is an update for measurementType field in a specific measurementGroup", - "consumes": [ - "application/json" - ], - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "path", - "name": "measurementGroupName", - "type": "string", - "required": true - }, - { - "in": "body", - "name": "measurementTypes", - "description": "The measurementTypes field of the measurementGroup to update", - "schema": { - "type": "object", - "properties": { - "measurementTypes": { - "type": "string" - } - } - } - } - ], - "responses": { - "201": { - "description": "measurementType is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "measurementGroup object not found" - } - } - }, - "delete": { - "tags": [ - "measurementGroups" - ], - "description": "This is a delete for measurementType field on a measurementGroup", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "path", - "name": "measurementGroupName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "measurementGroup field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "measurementGroup object not found" - } - } - } - }, - "/subscription/{subscriptionName}/measurementGroups/{measurementGroupName}/managedObjectDNsBasic": { - "get": { - "tags": [ - "measurementGroups" - ], - "description": "Show the managedObjectDNsBasic of a subscription", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "path", - "name": "measurementGroupName", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Requested managedObjectDNsBasic returned", - "schema": { - "type": "object", - "properties": { - "managedObjectDNsBasic": { - "type": "string" - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "there are no subscription defined" - } - } - }, - "put": { - "tags": [ - "measurementGroups" - ], - "description": "This is an update for managedObjectDNsBasic field in a specific measurementGroup", - "consumes": [ - "application/json" - ], - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "path", - "name": "measurementGroupName", - "type": "string", - "required": true - }, - { - "in": "body", - "name": "managedObjectDNsBasic", - "description": "The managedObjectDNsBasic field of the measurementGroup to update", - "schema": { - "type": "object", - "properties": { - "managedObjectDNsBasic": { - "type": "string" - } - } - } - } - ], - "responses": { - "201": { - "description": "managedObjectDNsBasic is updated" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "measurementGroup object not found" - } - } - }, - "delete": { - "tags": [ - "measurementGroups" - ], - "description": "This is a delete for managedObjectDNsBasic field on a measurementGroup", - "parameters": [ - { - "in": "path", - "name": "subscriptionName", - "type": "string", - "required": true - }, - { - "in": "path", - "name": "measurementGroupName", - "type": "string", - "required": true - } - ], - "responses": { - "204": { - "description": "managedObjectDNsBasic field is deleted" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "measurementGroup object not found" } } } } } -} \ No newline at end of file +} diff --git a/docs/sections/apis/pmsh_swagger.yml b/docs/sections/apis/pmsh_swagger.yml index 3d7c6c63..5afdd5fe 100644 --- a/docs/sections/apis/pmsh_swagger.yml +++ b/docs/sections/apis/pmsh_swagger.yml @@ -1,5 +1,5 @@ # ============LICENSE_START======================================================= -# Copyright (C) 2020-2021 Nordix Foundation. +# Copyright (C) 2020-2022 Nordix Foundation. # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,63 +21,21 @@ info: title: PM Subscription Handler Service version: "2.0.0" description: PM subscription handler enables control of performance management jobs on network functions in ONAP +consumes: + - "application/json" produces: - "application/json" -basePath: "/pmsh" -tags: -- name: "Existing API" - description: "Existing API before Public API work" +basePath: "/" schemes: - https + - http # Paths supported by the server application paths: - /v1/subscriptions: - get: - tags: - - Existing API - description: >- - Get all defined subscription and their related Network Functions from ONAP. - operationId: mod.api.controller.get_all_sub_to_nf_relations - responses: - 200: - description: OK; Array of subscription are returned as an object - schema: - type: array - items: - type: object - properties: - subscription_name: - type: string - description: Name of the Subscription - subscription_status: - type: string - description: Status of the Subscription - network_functions: - type: array - items: - type: object - properties: - nf_name: - type: string - description: Name of the Network Function - nf_sub_status: - type: string - description: Status of the Subscription on the Network Function - orchestration_status: - type: string - description: Orchestration status of the Network Function - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - /healthcheck: get: operationId: mod.api.controller.status tags: - - "Existing API" + - "HealthCheck" description: >- This is the health check endpoint. If this returns a 200, the server is alive. responses: @@ -91,1357 +49,383 @@ paths: description: Overall health of PMSH enum: [healthy, unhealthy] 503: - description: the pmsh service is unavailable + description: The PMSH service is unavailable /subscription: post: tags: - - "Subscriptions" + - "Subscription" description: >- Create a PM Subscription - operationId: mod.api.controller.create_subscription - consumes: - - "application/json" - produces: - - "application/json" - parameters: - - in: "body" - name: "body" - description: "Subscription object to be created" - required: true - schema: - type: object - properties: - subscription: - type: object - properties: - subscriptionName: - type: string - administrativeState: - allOf: - - type: string - - enum: - - UNLOCKED - - LOCKED - - FILTERING - fileBasedGP: - type: integer - fileLocation: - type: string - nfFilter: - type: object - properties: - nfNames: - type: array - items: - type: string - modelInvariantIDs: - type: array - items: - type: string - modelVersionIDs: - type: array - items: - type: string - modelNames: - type: array - items: - type: string - additionalProperties: false - measurementGroups: - type: array - minItems: 1 - items: - type: object - properties: - measurementGroup: - type: object - properties: - measurementTypes: - type: array - minItems: 1 - items: - type: object - properties: - measurementType: - type: string - required: - - measurementType - managedObjectDNsBasic: - type: array - minItems: 1 - items: - type: object - properties: - DN: - type: string - required: - - DN - required: - - measurementTypes - - managedObjectDNsBasic - required: - - measurementGroup - required: - - subscriptionName - - administrativeState - - fileBasedGP - - fileLocation - - nfFilter - - measurementGroups - responses: - 201: - description: successfully created PM Subscription - 405: - description: Invalid input - - - #subcriptions - /subscription/{subscriptionName}: - get: - tags: - - "Subscriptions" - description: >- - Show the subscription - operationId: mod.api.controller.get_subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 200: - description: Requested Subscription returned - schema: - type: object - properties: - subscription: - type: object - properties: - subscriptionName: - type: string - administrativeState: - allOf: - - type: string - - enum: - - UNLOCKED - - LOCKED - - FILTERING - fileBasedGP: - type: integer - fileLocation: - type: string - nfFilter: - type: object - properties: - nfNames: - type: array - items: - type: string - modelInvariantIDs: - type: array - items: - type: string - modelVersionIDs: - type: array - items: - type: string - modelNames: - type: array - items: - type: string - additionalProperties: false - measurementGroups: - type: array - minItems: 1 - items: - type: object - properties: - measurementGroup: - type: object - properties: - measurementTypes: - type: array - minItems: 1 - items: - type: object - properties: - measurementType: - type: string - managedObjectDNsBasic: - type: array - minItems: 1 - items: - type: object - properties: - DN: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: #full modify sub object - tags: - - "Subscriptions" - description: >- - This is an update for Subscription object - consumes: - - application/json + operationId: mod.api.controller.post_subscription parameters: - - in: path - name: subscriptionName - type: string + - in: "body" + name: "body" required: true - - in: body - name: Subscription - description: The subscription object to update schema: - type: object - properties: - subscription: - type: object - properties: - subscriptionName: - type: string - administrativeState: - type: string - enum: - - UNLOCKED - - LOCKED - - FILTERING - fileBasedGP: - type: integer - fileLocation: - type: string - nfFilter: - type: object - properties: - nfNames: - type: array - items: - type: string - modelInvariantIDs: - type: array - items: - type: string - modelVersionIDs: - type: array - items: - type: string - modelNames: - type: array - items: - type: string - measurementGroups: - type: array - items: - type: object - properties: - measurementGroup: - type: object - properties: - measurementTypes: - type: array - items: - type: object - properties: - measurementType: - type: string - managedObjectDNsBasic: - type: array - items: - type: object - properties: - DN: - type: string - required: - - subscriptionName - required: - - subscription - #add subscription schema here + $ref: "#/definitions/subscription" responses: 201: - description: Subscription object updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - delete: - tags: - - "Subscriptions" - description: >- - This is a delete for Subscription object - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 204: - description: Subscription object deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found + description: Successfully created PM Subscription + 409: + description: Duplicate data + 400: + description: Invalid input -#quick way to update a field here - #adminState - /subscription/{subscriptionName}/adminState: get: + description: Get all the subscriptions from PMSH. + operationId: mod.api.controller.get_subscriptions tags: - - "adminState" - description: >- - Show admin state of a subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true + - "Subscription" responses: 200: - description: Requested admin state returned - schema: - type: object - properties: - adminState: - type: string - enum: - - UNLOCKED - - LOCKED - - FILTERING - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "adminState" - description: >- - This is an update for a specific subscription's admin state - consumes: - - application/json - parameters: - - in: path - name: subscriptionName - type: string - required: true - - in: body - name: adminState - description: The adminState of the subscription object to update + description: OK; Array of subscriptions are returned else empty if not found schema: - type: object - required: - - adminState - properties: - adminState: - type: string - enum: - - UNLOCKED - - LOCKED - - FILTERING - responses: - 201: - description: adminState is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found + type: array + items: + $ref: "#/definitions/subscription" + 500: + description: Exception occurred while querying database - #fileBasedGP - /subscription/{subscriptionName}/fileBasedGP: + /subscription/{subscription_name}: get: + description: Get the Subscription from PMSH specified by Name + operationId: mod.api.controller.get_subscription_by_name tags: - - "fileBasedGP" - description: >- - Show the fileBasedGP of a subscription + - "Subscription" parameters: - - in: path - name: subscriptionName - type: string + - name: subscription_name + in: path required: true - responses: - 200: - description: Requested fileBasedGP returned - schema: - type: object - properties: - fileBasedGP: - type: integer - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "fileBasedGP" - description: >- - This is an update for a specific subscription's fileBasedGP - consumes: - - application/json - parameters: - - in: path - name: subscriptionName + description: Name of the subscription type: string - required: true - - in: body - name: fileBasedGP - description: The fileBasedGP field of the subscription object to update - schema: - type: object - required: - - fileBasedGP - properties: - fileBasedGP: - type: integer - responses: - 201: - description: fileBasedGP is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - delete: - tags: - - "fileBasedGP" - description: >- - This is a delete for fileBasedGP field on a subscription object - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 204: - description: fileBasedGP field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - - #fileLocation - /subscription/{subscriptionName}/fileLocation: - get: - tags: - - "fileLocation" - description: >- - Show the fileLocation of a subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true responses: 200: - description: Requested fileLocation returned - schema: - type: object - properties: - fileLocation: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "fileLocation" - description: >- - This is an update for a specific subscription's fileLocation - consumes: - - application/json - parameters: - - in: path - name: subscriptionName - type: string - required: true - - in: body - name: fileLocation - description: The fileLocation field of the subscription object to update + description: OK; Requested Subscription was returned schema: - type: object - required: - - fileLocation - properties: - fileBasedGP: - type: string - responses: - 201: - description: fileLocation is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - delete: - tags: - - "fileLocation" - description: >- - This is a delete for fileLocation field on a subscription object - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 204: - description: fileLocation field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden + $ref : "#/definitions/subscription" 404: - description: Subscription object not found + description: Subscription with specified name not found + 500: + description: Exception occurred while querying database - #nfFilter - /subscription/{subscriptionName}/nfFilter: - get: - tags: - - "nfFilter" - description: >- - Show the nfFilter of a subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 200: - description: Requested nfFilter returned - schema: - type: object - properties: - nfFilter: - type: object - properties: - nfNames: - type: array - items: - type: string - modelInvariantIDs: - type: array - items: - type: string - modelVersionIDs: - type: array - items: - type: string - modelNames: - type: array - items: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "nfFilter" - description: >- - This is an update for a specific subscription's nfFilter - consumes: - - application/json - parameters: - - in: path - name: subscriptionName - type: string - required: true - - in: body - name: nfFilter - description: The nfFilter field of the subscription object to update - schema: - type: object - properties: - nfFilter: - type: object - properties: - nfNames: - type: array - items: - type: string - modelInvariantIDs: - type: array - items: - type: string - modelVersionIDs: - type: array - items: - type: string - modelNames: - type: array - items: - type: string - responses: - 201: - description: fileLocation is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found delete: + description: Deletes the Subscription from PMSH specified by Name + operationId: mod.api.controller.delete_subscription_by_name tags: - - "nfFilter" - description: >- - This is a delete for nfFilter field on a subscription object + - "Subscription" parameters: - - in: path - name: subscriptionName - type: string + - name: subscription_name + in: path required: true - responses: - 204: - description: nfFilter field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - - #nfNames - /subscription/{subscriptionName}/nfFilter/nfNames: - get: - tags: - - "nfFilter" - description: >- - Show the nfNames of a subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 200: - description: Requested nfNames returned - schema: - type: object - properties: - nfNames: - items: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "nfFilter" - description: >- - This is an update for a specific subscription's nfNames - consumes: - - application/json - parameters: - - in: path - name: subscriptionName + description: The name of the subscription to delete type: string - required: true - - in: body - name: nfNames - description: The nfNames field of nfFilter of the subscription object to update - schema: - type: object - required: - - nfNames - properties: - nfNames: - type: array - items: - type: string - responses: - 201: - description: nfNames is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - delete: - tags: - - "nfFilter" - description: >- - This is a delete for nfNames field on a subscription object - parameters: - - in: path - name: subscriptionName - type: string - required: true responses: 204: - description: nfNames field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found + description: Successfully deleted the subscription and returns NO Content + 404: + description: Subscription with the specified name not found + 409: + description: Subscription could not be deleted as it contains measurement groups + with state UNLOCKED OR state change to LOCKED was under process + 500: + description: Exception occurred on the server - #nfinvariantModelIds - /subscription/{subscriptionName}/nfFilter/nfinvariantModelIds: - get: - tags: - - "nfFilter" - description: >- - Show the nfinvariantModelIds of a subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 200: - description: Requested nfinvariantModelIds returned - schema: - type: object - properties: - nfinvariantModelIds: - items: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined + /subscription/{subscription_name}/nfFilter: put: + description: Update nfFilter for tags: - - "nfFilter" - description: >- - This is an update for a specific subscription's nfinvariantModelIds - consumes: - - application/json + - "Subscription" parameters: - - in: path - name: subscriptionName - type: string + - name: subscription_name + in: path required: true - - in: body - name: nfinvariantModelIds - description: The nfinvariantModelIds field of nfFilter of the subscription object to update - schema: - type: object - required: - - nfNames - properties: - nfinvariantModelIds: - type: array - items: - type: string - responses: - 201: - description: nfNames is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - delete: - tags: - - "nfFilter" - description: >- - This is a delete for nfinvariantModelIds field on a subscription object - parameters: - - in: path - name: subscriptionName + description: Name of the subscription type: string + - name: "body" + in: "body" required: true - responses: - 204: - description: nfinvariantModelIds field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - - #modelVersionIds - /subscription/{subscriptionName}/nfFilter/modelVersionIds: - get: - tags: - - "nfFilter" - description: >- - Show the modelVersionIds of a subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 200: - description: Requested modelVersionIds returned - schema: - type: object - properties: - modelVersionIds: - items: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "nfFilter" - description: >- - This is an update for a specific subscription's modelVersionIds - consumes: - - application/json - parameters: - - in: path - name: subscriptionName - type: string - required: true - - in: body - name: modelVersionIds - description: The modelVersionIds field of nfFilter of the subscription object to update schema: - type: object - required: - - modelVersionIds - properties: - modelVersionIds: - type: array - items: - type: string + $ref: "#/definitions/nfFilter" responses: 201: - description: modelVersionIds is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - delete: - tags: - - "nfFilter" - description: >- - This is a delete for modelVersionIds field on a subscription object - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 204: - description: modelVersionIds field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found + description: Successfully updated filter + 409: + description: Duplicate data + 400: + description: Invalid input - #modelNames - /subscription/{subscriptionName}/nfFilter/modelNames: - get: - tags: - - "nfFilter" - description: >- - Show the modelNames of a subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 200: - description: Requested modelNames returned - schema: - type: object - properties: - modelNames: - items: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "nfFilter" - description: >- - This is an update for a specific subscription's modelNames - consumes: - - application/json - parameters: - - in: path - name: subscriptionName - type: string - required: true - - in: body - name: modelNames - description: The modelNames field of nfFilter of the subscription object to update - schema: - type: object - required: - - modelNames - properties: - modelNames: - type: array - items: - type: string - responses: - 201: - description: modelNames is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - delete: - tags: - - "nfFilter" - description: >- - This is a delete for modelNames field on a subscription object - parameters: - - in: path - name: subscriptionName - type: string - required: true - responses: - 204: - description: modelNames field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - #measurementGroups - /subscription/{subscriptionName}/measurementGroups: + /subscription/{subscription_name}/measurementGroups/{measurement_group_name}: get: + description: Get the measurement group and associated network functions + from PMSH by using sub name and meas group name + operationId: mod.api.controller.get_meas_group_with_nfs tags: - - "measurementGroups" - description: >- - Show the fileBasedGP of a subscription + - "measurement group" parameters: - - in: path - name: subscriptionName - type: string + - name : subscription_name + in: path required: true - responses: - 200: - description: Requested measurementGroups returned - schema: - type: object - properties: - measurementGroups: - type: array - items: - type: object - properties: - measurementGroup: - type: object - properties: - measurementTypes: - type: array - items: - type: object - properties: - measurementType: - type: string - managedObjectDNsBasic: - type: array - items: - type: object - properties: - DN: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "measurementGroups" - description: >- - This is an update for a specific subscription's measurementGroups - consumes: - - application/json - parameters: - - in: path - name: subscriptionName + description: Name of the subscription type: string + - name: measurement_group_name + in: path required: true - - in: body - name: measurementGroups - description: The measurementGroups field of the subscription object to update - schema: - type: object - properties: - measurementGroups: - type: array - items: - type: object - properties: - measurementGroup: - type: object - properties: - measurementTypes: - type: array - items: - type: object - properties: - measurementType: - type: string - managedObjectDNsBasic: - type: array - items: - type: object - properties: - DN: - type: string - responses: - 201: - description: measurementGroups is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - delete: - tags: - - "measurementGroups" - description: >- - This is a delete for measurementGroups field on a subscription object - parameters: - - in: path - name: subscriptionName + description: Name of the measurement group name type: string - required: true - responses: - 204: - description: measurementGroups field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: Subscription object not found - - #measurementGroupName - /subscription/{subscriptionName}/measurementGroups/{measurementGroupName}: - get: - tags: - - "measurementGroups" - description: >- - Show a measurementGroup of a subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true - - in: path - name: measurementGroupName - type: string - required: true responses: 200: - description: Requested measurementGroup returned + description: OK; Received requested measurement group with associated NF's schema: - type: object - properties: - measurementGroup: - type: object - properties: - measurementTypes: - type: array - items: - type: object - properties: - measurementType: - type: string - managedObjectDNsBasic: - type: array - items: - type: object - properties: - DN: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "measurementGroups" - description: >- - This is an update for a specific a measurementGroup - consumes: - - application/json - parameters: - - in: path - name: subscriptionName - type: string - required: true - - in: path - name: measurementGroupName - type: string - required: true - - in: body - name: measurementGroup - description: The measurementGroup field of the subscription object to update - schema: - type: object - properties: - measurementGroup: - type: object - properties: - measurementTypes: - type: array - items: - type: object - properties: - measurementType: - type: string - managedObjectDNsBasic: - type: array - items: - type: object - properties: - DN: - type: string - responses: - 201: - description: measurementGroup is updated - 401: - description: Unauthorized - 403: - description: Forbidden + $ref : "#/definitions/measGroupWithNFs" 404: - description: measurementGroup object not found - delete: - tags: - - "measurementGroups" - description: >- - This is a delete for measurementGroup field on a subscription object - parameters: - - in: path - name: subscriptionName - type: string - required: true - - in: path - name: measurementGroupName - type: string - required: true - responses: - 204: - description: measurementGroup field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: measurementGroup object not found + description: Measurement group with specified name not found + 500: + description: Exception occurred while querying database - #measurementType - /subscription/{subscriptionName}/measurementGroups/{measurementGroupName}/measurementTypes: - get: + post: + description: Create a measurement group tags: - - "measurementGroups" - description: >- - Show the measurementTypes of a subscription + - "measurement group" parameters: - - in: path - name: subscriptionName - type: string + - name : subscription_name + in: path required: true - - in: path - name: measurementGroupName + description: Name of the subscription type: string + - name: measurement_group_name + in: path required: true - responses: - 200: - description: Requested measurementTypes returned - schema: - type: object - properties: - measurementTypes: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined - put: - tags: - - "measurementGroups" - description: >- - This is an update for measurementType field in a specific measurementGroup - consumes: - - application/json - parameters: - - in: path - name: subscriptionName + description: Name of the measurement group name type: string + - name : "body" + in: "body" required: true - - in: path - name: measurementGroupName - type: string - required: true - - in: body - name: measurementTypes - description: The measurementTypes field of the measurementGroup to update schema: - type: object - properties: - measurementTypes: - type: string + $ref: "#/definitions/measurementGroup" responses: 201: - description: measurementType is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: measurementGroup object not found + description: Successfully created measurement group + 409: + description: Duplicate data + 400: + description: Invalid input + delete: + description: Delete a measurement group tags: - - "measurementGroups" - description: >- - This is a delete for measurementType field on a measurementGroup + - "measurement group" parameters: - - in: path - name: subscriptionName - type: string + - name : subscription_name + in: path required: true - - in: path - name: measurementGroupName + description: Name of the subscription type: string + - name: measurement_group_name + in: path required: true + description: Name of the measurement group name + type: string responses: 204: - description: measurementGroup field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden + description: Successfully deleted the measurement group and returns NO Content 404: - description: measurementGroup object not found + description: Measurement group with the specified name not found + 409: + description: Measurement not deleted because state UNLOCKED OR state change to LOCKED was under process + 500: + description: Exception occurred on the server - #managedObjectDNsBasic - /subscription/{subscriptionName}/measurementGroups/{measurementGroupName}/managedObjectDNsBasic: - get: - tags: - - "measurementGroups" - description: >- - Show the managedObjectDNsBasic of a subscription - parameters: - - in: path - name: subscriptionName - type: string - required: true - - in: path - name: measurementGroupName - type: string - required: true - responses: - 200: - description: Requested managedObjectDNsBasic returned - schema: - type: object - properties: - managedObjectDNsBasic: - type: string - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: there are no subscription defined + /subscription/{subscription_name}/measurementGroups/{measurement_group_name}/{administrativeState}: put: + description: Update administrative state for a measurement group tags: - - "measurementGroups" - description: >- - This is an update for managedObjectDNsBasic field in a specific measurementGroup - consumes: - - application/json + - "measurement group" parameters: - - in: path - name: subscriptionName - type: string + - name: subscription_name + in: path required: true - - in: path - name: measurementGroupName + description: Name of the subscription type: string + - name: measurement_group_name + in: path required: true - - in: body - name: managedObjectDNsBasic - description: The managedObjectDNsBasic field of the measurementGroup to update - schema: - type: object - properties: - managedObjectDNsBasic: - type: string - responses: - 201: - description: managedObjectDNsBasic is updated - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: measurementGroup object not found - delete: - tags: - - "measurementGroups" - description: >- - This is a delete for managedObjectDNsBasic field on a measurementGroup - parameters: - - in: path - name: subscriptionName + description: Name of the measurement group name type: string + - name: administrativeState + in: path required: true - - in: path - name: measurementGroupName + description: New administrative state of measurement group type: string - required: true responses: - 204: - description: managedObjectDNsBasic field is deleted - 401: - description: Unauthorized - 403: - description: Forbidden - 404: - description: measurementGroup object not found \ No newline at end of file + 201: + description: Successfully updated administrative state + 409: + description: Duplicate data + 400: + description: Invalid input + +definitions: + subscription: + type: object + properties: + subscription: + type: object + properties: + subscriptionName: + type: string + operationalPolicyName: + type: string + controlLoopName: + type: string + nfFilter: + $ref: "#/definitions/nfFilter" + measurementGroups: + type: array + minItems: 1 + items: + $ref: "#/definitions/measurementGroup" + required: + - subscriptionName + - operationalPolicyName + - nfFilter + - measurementGroups + required: + - subscription + + nfFilter: + type: object + description: "At least one valid filter value within nfFilter is required" + additionalProperties: false + properties: + nfNames: + type: array + items: + type: string + modelInvariantIDs: + type: array + items: + type: string + modelVersionIDs: + type: array + items: + type: string + modelNames: + type: array + items: + type: string + required: + - nfNames + - modelInvariantIDs + - modelVersionIDs + - modelNames + + measurementGroup: + type: object + properties: + measurementGroup: + type: object + properties: + measurementGroupName: + type: string + fileBasedGP: + type: integer + fileLocation: + type: string + administrativeState: + type: string + enum: [LOCKED, UNLOCKED] + measurementTypes: + type: array + minItems: 1 + items: + $ref: "#/definitions/measurementType" + managedObjectDNsBasic: + type: array + minItems: 1 + items: + $ref: "#/definitions/managedObjectDNs" + allOf: + - required: + - measurementGroupName + - fileBasedGP + - fileLocation + - administrativeState + - measurementTypes + - managedObjectDNsBasic + required: + - measurementGroup + + measurementType: + type: object + properties: + measurementType: + type: string + required: + - measurementType + + managedObjectDNs: + type: object + properties: + DN: + type: string + required: + - DN + + measGroupWithNFs: + type: object + properties: + subscriptionName: + type: string + measurementGroupName: + type: string + administrativeState: + type: string + enum: [ LOCKED, UNLOCKED ] + fileBasedGP: + type: integer + fileLocation: + type: string + measurementTypes: + type: array + minItems: 1 + items: + $ref: "#/definitions/measurementType" + managedObjectDNsBasic: + type: array + minItems: 1 + items: + $ref: "#/definitions/managedObjectDNs" + network_functions: + type: array + items: + type: object + properties: + nfName: + type: string + description: Name of the Network Function + ipv4Address: + type: string + description: Address of the IPV4 + ipv6Address: + type: string + description: Address of the IPV6 + nfMgStatus: + type: string + description: status of network function for one meas group + modelInvariantId: + type: string + description: ID of the model invariant + modelVersionId: + type: string + description: ID of the model version + modelName: + type: string + description: Name of the model + sdncModelName: + type: string + description: Name of the sdnc model + sdncModelVersion: + type: string + description: Version of the sdnc model -- cgit 1.2.3-korg