blob: 629572839b2d6cf1ed94a51734ec4f28358a3df5 [file] [log] [blame]
{
"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"
}
}
}
}
}
}
}
}