# ============LICENSE_START======================================================= # 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. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # SPDX-License-Identifier: Apache-2.0 # ============LICENSE_END========================================================= 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 supported by the server application 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 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: 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 409: description: Duplicate data 400: description: Invalid input /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 409: description: Duplicate data 400: description: Invalid input 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 409: description: Duplicate data 400: description: Invalid input 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