[PMSH] Update Filter API
[dcaegen2/services.git] / components / pm-subscription-handler / pmsh_service / mod / api / pmsh_swagger.yml
index 58e6a78..1f24f17 100644 (file)
@@ -1,5 +1,5 @@
 # ============LICENSE_START=======================================================
-#  Copyright (C) 2020 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.
 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
+  - http
 # Paths supported by the server application
 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
@@ -87,3 +50,364 @@ paths:
                 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
+        409:
+          description: Duplicate data
+        400:
+          description: Invalid input
+
+    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:
+      tags:
+        - "Subscription"
+      description: >-
+        Update a Subscription nf filter
+      operationId: mod.api.controller.put_nf_filter
+      parameters:
+        - name: subscription_name
+          in: path
+          required: true
+          description: The name of the subscription to update nf filters
+          type: string
+        - in: "body"
+          name: "body"
+          required: true
+          schema:
+            $ref: "#/definitions/nfFilter"
+      responses:
+        201:
+          description: Successfully updated nf filter
+        409:
+          description: Conflicting data
+        400:
+          description: Invalid input
+        500:
+          description: Exception occurred while querying database
+
+  /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
+
+    delete:
+      description: Delete a measurement group
+      operationId: mod.api.controller.delete_meas_group_by_name
+      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 group 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}/adminState:
+    put:
+      description: Update the admin status of the Measurement Group by using sub name and measurement group name
+      operationId: mod.api.controller.update_admin_state
+      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
+          type: string
+        - in: "body"
+          name: "body"
+          required: true
+          schema:
+            properties:
+              administrativeState:
+                type: string
+                enum: [ LOCKED, UNLOCKED ]
+      responses:
+        200:
+          description: Successfully updated admin state
+        409:
+          description: Cannot update as Locked request is in progress
+        400:
+          description: Invalid input request details
+        500:
+          description: Exception details of server failure
+
+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