{ "swagger": "2.0", "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": "/", "schemes": [ "https", "http" ], "paths": { "/healthcheck": { "get": { "operationId": "mod.api.controller.status", "tags": [ "HealthCheck" ], "description": "This is the health check endpoint. If this returns a 200, the server is alive.", "responses": { "200": { "description": "Successful response", "schema": { "type": "object", "properties": { "status": { "type": "string", "description": "Overall health of PMSH", "enum": [ "healthy", "unhealthy" ] } } } }, "503": { "description": "The PMSH service is unavailable" } } } }, "/subscription": { "post": { "tags": [ "Subscription" ], "description": "Create a PM Subscription", "operationId": "mod.api.controller.post_subscription", "parameters": [ { "in": "body", "name": "body", "required": true, "schema": { "$ref": "#/definitions/subscription" } } ], "responses": { "201": { "description": "Successfully created PM Subscription" }, "400": { "description": "Invalid input" }, "409": { "description": "Duplicate data" } } }, "get": { "description": "Get all the subscriptions from PMSH.", "operationId": "mod.api.controller.get_subscriptions", "tags": [ "Subscription" ], "responses": { "200": { "description": "OK; Array of subscriptions are returned else empty if not found", "schema": { "type": "array", "items": { "$ref": "#/definitions/subscription" } } }, "500": { "description": "Exception occurred while querying database" } } } }, "/subscription/{subscription_name}": { "get": { "description": "Get the Subscription from PMSH specified by Name", "operationId": "mod.api.controller.get_subscription_by_name", "tags": [ "Subscription" ], "parameters": [ { "name": "subscription_name", "in": "path", "required": true, "description": "Name of the subscription", "type": "string" } ], "responses": { "200": { "description": "OK; Requested Subscription was returned", "schema": { "$ref": "#/definitions/subscription" } }, "404": { "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": [ "Subscription" ], "parameters": [ { "name": "subscription_name", "in": "path", "required": true, "description": "The name of the subscription to delete", "type": "string" } ], "responses": { "204": { "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" } } } }, "/subscription/{subscription_name}/nfFilter": { "put": { "description": "Update nfFilter for", "tags": [ "Subscription" ], "parameters": [ { "name": "subscription_name", "in": "path", "required": true, "description": "Name of the subscription", "type": "string" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/nfFilter" } } ], "responses": { "201": { "description": "Successfully updated filter" }, "400": { "description": "Invalid input" }, "409": { "description": "Duplicate data" } } } }, "/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": [ "measurement group" ], "parameters": [ { "name": "subscription_name", "in": "path", "required": true, "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": { "200": { "description": "OK; Received requested measurement group with associated NF's", "schema": { "$ref": "#/definitions/measGroupWithNFs" } }, "404": { "description": "Measurement group with specified name not found" }, "500": { "description": "Exception occurred while querying database" } } }, "post": { "description": "Create a measurement group", "tags": [ "measurement group" ], "parameters": [ { "name": "subscription_name", "in": "path", "required": true, "description": "Name of the subscription", "type": "string" }, { "name": "measurement_group_name", "in": "path", "required": true, "description": "Name of the measurement group name", "type": "string" }, { "name": "body", "in": "body", "required": true, "schema": { "$ref": "#/definitions/measurementGroup" } } ], "responses": { "201": { "description": "Successfully created measurement group" }, "400": { "description": "Invalid input" }, "409": { "description": "Duplicate data" } } }, "delete": { "description": "Delete a measurement group", "tags": [ "measurement group" ], "parameters": [ { "name": "subscription_name", "in": "path", "required": true, "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": "Successfully deleted the measurement group and returns NO Content" }, "404": { "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" } } } }, "/subscription/{subscription_name}/measurementGroups/{measurement_group_name}/{administrativeState}": { "put": { "description": "Update administrative state for a measurement group", "tags": [ "measurement group" ], "parameters": [ { "name": "subscription_name", "in": "path", "required": true, "description": "Name of the subscription", "type": "string" }, { "name": "measurement_group_name", "in": "path", "required": true, "description": "Name of the measurement group name", "type": "string" }, { "name": "administrativeState", "in": "path", "required": true, "description": "New administrative state of measurement group", "type": "string" } ], "responses": { "201": { "description": "Successfully updated administrative state" }, "400": { "description": "Invalid input" }, "409": { "description": "Duplicate data" } } } } }, "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" } } } } } } } }