| { |
| "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" |
| } |
| } |
| } |
| } |
| } |
| } |
| } |
| } |