[PMSH] Finalise API
[dcaegen2.git] / docs / sections / apis / pmsh_swagger.json
index 59be876..6295728 100644 (file)
@@ -2,73 +2,21 @@
   "swagger": "2.0",
   "info": {
     "title": "PM Subscription Handler Service",
-    "version": "1.1.0",
+    "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"
+    "https",
+    "http"
   ],
   "paths": {
-    "/subscriptions": {
-      "get": {
-        "description": "Get all defined Subscriptions and their related Network Functions from ONAP.",
-        "operationId": "mod.api.controller.get_all_sub_to_nf_relations",
-        "responses": {
-          "200": {
-            "description": "OK; Array of subscriptions 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 subscriptions defined"
-          }
-        }
-      }
-    },
     "/healthcheck": {
       "get": {
         "operationId": "mod.api.controller.status",
             }
           },
           "503": {
-            "description": "the pmsh service is unavailable"
+            "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"
+              }
+            }
           }
         }
       }
     }
   }
-}
\ No newline at end of file
+}