# ============LICENSE_START======================================================= # Copyright (C) 2020-2021 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 produces: - "application/json" basePath: "/pmsh" tags: - name: "Existing API" description: "Existing API before Public API work" schemes: - https # Paths supported by the server application paths: /v1/subscriptions: get: tags: - Existing API description: >- Get all defined subscription and their related Network Functions from ONAP. operationId: mod.api.controller.get_all_sub_to_nf_relations responses: 200: description: OK; Array of subscription 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 subscription defined /healthcheck: get: operationId: mod.api.controller.status tags: - "Existing API" 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: - "Subscriptions" description: >- Create a PM Subscription operationId: mod.api.controller.create_subscription consumes: - "application/json" produces: - "application/json" parameters: - in: "body" name: "body" description: "Subscription object to be created" required: true schema: type: object properties: subscription: type: object properties: subscriptionName: type: string administrativeState: allOf: - type: string - enum: - UNLOCKED - LOCKED - FILTERING fileBasedGP: type: integer fileLocation: type: string nfFilter: type: object 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 additionalProperties: false measurementGroups: type: array minItems: 1 items: type: object properties: measurementGroup: type: object properties: measurementTypes: type: array minItems: 1 items: type: object properties: measurementType: type: string required: - measurementType managedObjectDNsBasic: type: array minItems: 1 items: type: object properties: DN: type: string required: - DN required: - measurementTypes - managedObjectDNsBasic required: - measurementGroup required: - subscriptionName - administrativeState - fileBasedGP - fileLocation - nfFilter - measurementGroups responses: 201: description: successfully created PM Subscription 405: description: Invalid input #subcriptions /subscription/{subscriptionName}: get: tags: - "Subscriptions" description: >- Show the subscription operationId: mod.api.controller.get_subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested Subscription returned schema: type: object properties: subscription: type: object properties: subscriptionName: type: string administrativeState: allOf: - type: string - enum: - UNLOCKED - LOCKED - FILTERING fileBasedGP: type: integer fileLocation: type: string nfFilter: type: object 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 additionalProperties: false measurementGroups: type: array minItems: 1 items: type: object properties: measurementGroup: type: object properties: measurementTypes: type: array minItems: 1 items: type: object properties: measurementType: type: string managedObjectDNsBasic: type: array minItems: 1 items: type: object properties: DN: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: #full modify sub object tags: - "Subscriptions" description: >- This is an update for Subscription object consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: Subscription description: The subscription object to update schema: type: object properties: subscription: type: object properties: subscriptionName: type: string administrativeState: type: string enum: - UNLOCKED - LOCKED - FILTERING fileBasedGP: type: integer fileLocation: type: string nfFilter: type: object 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 measurementGroups: type: array items: type: object properties: measurementGroup: type: object properties: measurementTypes: type: array items: type: object properties: measurementType: type: string managedObjectDNsBasic: type: array items: type: object properties: DN: type: string required: - subscriptionName required: - subscription #add subscription schema here responses: 201: description: Subscription object updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found delete: tags: - "Subscriptions" description: >- This is a delete for Subscription object parameters: - in: path name: subscriptionName type: string required: true responses: 204: description: Subscription object deleted 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #quick way to update a field here #adminState /subscription/{subscriptionName}/adminState: get: tags: - "adminState" description: >- Show admin state of a subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested admin state returned schema: type: object properties: adminState: type: string enum: - UNLOCKED - LOCKED - FILTERING 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "adminState" description: >- This is an update for a specific subscription's admin state consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: adminState description: The adminState of the subscription object to update schema: type: object required: - adminState properties: adminState: type: string enum: - UNLOCKED - LOCKED - FILTERING responses: 201: description: adminState is updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #fileBasedGP /subscription/{subscriptionName}/fileBasedGP: get: tags: - "fileBasedGP" description: >- Show the fileBasedGP of a subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested fileBasedGP returned schema: type: object properties: fileBasedGP: type: integer 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "fileBasedGP" description: >- This is an update for a specific subscription's fileBasedGP consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: fileBasedGP description: The fileBasedGP field of the subscription object to update schema: type: object required: - fileBasedGP properties: fileBasedGP: type: integer responses: 201: description: fileBasedGP is updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found delete: tags: - "fileBasedGP" description: >- This is a delete for fileBasedGP field on a subscription object parameters: - in: path name: subscriptionName type: string required: true responses: 204: description: fileBasedGP field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #fileLocation /subscription/{subscriptionName}/fileLocation: get: tags: - "fileLocation" description: >- Show the fileLocation of a subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested fileLocation returned schema: type: object properties: fileLocation: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "fileLocation" description: >- This is an update for a specific subscription's fileLocation consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: fileLocation description: The fileLocation field of the subscription object to update schema: type: object required: - fileLocation properties: fileBasedGP: type: string responses: 201: description: fileLocation is updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found delete: tags: - "fileLocation" description: >- This is a delete for fileLocation field on a subscription object parameters: - in: path name: subscriptionName type: string required: true responses: 204: description: fileLocation field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #nfFilter /subscription/{subscriptionName}/nfFilter: get: tags: - "nfFilter" description: >- Show the nfFilter of a subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested nfFilter returned schema: type: object properties: nfFilter: type: object 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 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "nfFilter" description: >- This is an update for a specific subscription's nfFilter consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: nfFilter description: The nfFilter field of the subscription object to update schema: type: object properties: nfFilter: type: object 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 responses: 201: description: fileLocation is updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found delete: tags: - "nfFilter" description: >- This is a delete for nfFilter field on a subscription object parameters: - in: path name: subscriptionName type: string required: true responses: 204: description: nfFilter field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #nfNames /subscription/{subscriptionName}/nfFilter/nfNames: get: tags: - "nfFilter" description: >- Show the nfNames of a subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested nfNames returned schema: type: object properties: nfNames: items: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "nfFilter" description: >- This is an update for a specific subscription's nfNames consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: nfNames description: The nfNames field of nfFilter of the subscription object to update schema: type: object required: - nfNames properties: nfNames: type: array items: type: string responses: 201: description: nfNames is updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found delete: tags: - "nfFilter" description: >- This is a delete for nfNames field on a subscription object parameters: - in: path name: subscriptionName type: string required: true responses: 204: description: nfNames field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #nfinvariantModelIds /subscription/{subscriptionName}/nfFilter/nfinvariantModelIds: get: tags: - "nfFilter" description: >- Show the nfinvariantModelIds of a subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested nfinvariantModelIds returned schema: type: object properties: nfinvariantModelIds: items: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "nfFilter" description: >- This is an update for a specific subscription's nfinvariantModelIds consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: nfinvariantModelIds description: The nfinvariantModelIds field of nfFilter of the subscription object to update schema: type: object required: - nfNames properties: nfinvariantModelIds: type: array items: type: string responses: 201: description: nfNames is updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found delete: tags: - "nfFilter" description: >- This is a delete for nfinvariantModelIds field on a subscription object parameters: - in: path name: subscriptionName type: string required: true responses: 204: description: nfinvariantModelIds field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #modelVersionIds /subscription/{subscriptionName}/nfFilter/modelVersionIds: get: tags: - "nfFilter" description: >- Show the modelVersionIds of a subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested modelVersionIds returned schema: type: object properties: modelVersionIds: items: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "nfFilter" description: >- This is an update for a specific subscription's modelVersionIds consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: modelVersionIds description: The modelVersionIds field of nfFilter of the subscription object to update schema: type: object required: - modelVersionIds properties: modelVersionIds: type: array items: type: string responses: 201: description: modelVersionIds is updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found delete: tags: - "nfFilter" description: >- This is a delete for modelVersionIds field on a subscription object parameters: - in: path name: subscriptionName type: string required: true responses: 204: description: modelVersionIds field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #modelNames /subscription/{subscriptionName}/nfFilter/modelNames: get: tags: - "nfFilter" description: >- Show the modelNames of a subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested modelNames returned schema: type: object properties: modelNames: items: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "nfFilter" description: >- This is an update for a specific subscription's modelNames consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: modelNames description: The modelNames field of nfFilter of the subscription object to update schema: type: object required: - modelNames properties: modelNames: type: array items: type: string responses: 201: description: modelNames is updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found delete: tags: - "nfFilter" description: >- This is a delete for modelNames field on a subscription object parameters: - in: path name: subscriptionName type: string required: true responses: 204: description: modelNames field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #measurementGroups /subscription/{subscriptionName}/measurementGroups: get: tags: - "measurementGroups" description: >- Show the fileBasedGP of a subscription parameters: - in: path name: subscriptionName type: string required: true responses: 200: description: Requested measurementGroups returned schema: type: object properties: measurementGroups: type: array items: type: object properties: measurementGroup: type: object properties: measurementTypes: type: array items: type: object properties: measurementType: type: string managedObjectDNsBasic: type: array items: type: object properties: DN: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "measurementGroups" description: >- This is an update for a specific subscription's measurementGroups consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: body name: measurementGroups description: The measurementGroups field of the subscription object to update schema: type: object properties: measurementGroups: type: array items: type: object properties: measurementGroup: type: object properties: measurementTypes: type: array items: type: object properties: measurementType: type: string managedObjectDNsBasic: type: array items: type: object properties: DN: type: string responses: 201: description: measurementGroups is updated 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found delete: tags: - "measurementGroups" description: >- This is a delete for measurementGroups field on a subscription object parameters: - in: path name: subscriptionName type: string required: true responses: 204: description: measurementGroups field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: Subscription object not found #measurementGroupName /subscription/{subscriptionName}/measurementGroups/{measurementGroupName}: get: tags: - "measurementGroups" description: >- Show a measurementGroup of a subscription parameters: - in: path name: subscriptionName type: string required: true - in: path name: measurementGroupName type: string required: true responses: 200: description: Requested measurementGroup returned schema: type: object properties: measurementGroup: type: object properties: measurementTypes: type: array items: type: object properties: measurementType: type: string managedObjectDNsBasic: type: array items: type: object properties: DN: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "measurementGroups" description: >- This is an update for a specific a measurementGroup consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: path name: measurementGroupName type: string required: true - in: body name: measurementGroup description: The measurementGroup field of the subscription object to update schema: type: object properties: measurementGroup: type: object properties: measurementTypes: type: array items: type: object properties: measurementType: type: string managedObjectDNsBasic: type: array items: type: object properties: DN: type: string responses: 201: description: measurementGroup is updated 401: description: Unauthorized 403: description: Forbidden 404: description: measurementGroup object not found delete: tags: - "measurementGroups" description: >- This is a delete for measurementGroup field on a subscription object parameters: - in: path name: subscriptionName type: string required: true - in: path name: measurementGroupName type: string required: true responses: 204: description: measurementGroup field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: measurementGroup object not found #measurementType /subscription/{subscriptionName}/measurementGroups/{measurementGroupName}/measurementTypes: get: tags: - "measurementGroups" description: >- Show the measurementTypes of a subscription parameters: - in: path name: subscriptionName type: string required: true - in: path name: measurementGroupName type: string required: true responses: 200: description: Requested measurementTypes returned schema: type: object properties: measurementTypes: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "measurementGroups" description: >- This is an update for measurementType field in a specific measurementGroup consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: path name: measurementGroupName type: string required: true - in: body name: measurementTypes description: The measurementTypes field of the measurementGroup to update schema: type: object properties: measurementTypes: type: string responses: 201: description: measurementType is updated 401: description: Unauthorized 403: description: Forbidden 404: description: measurementGroup object not found delete: tags: - "measurementGroups" description: >- This is a delete for measurementType field on a measurementGroup parameters: - in: path name: subscriptionName type: string required: true - in: path name: measurementGroupName type: string required: true responses: 204: description: measurementGroup field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: measurementGroup object not found #managedObjectDNsBasic /subscription/{subscriptionName}/measurementGroups/{measurementGroupName}/managedObjectDNsBasic: get: tags: - "measurementGroups" description: >- Show the managedObjectDNsBasic of a subscription parameters: - in: path name: subscriptionName type: string required: true - in: path name: measurementGroupName type: string required: true responses: 200: description: Requested managedObjectDNsBasic returned schema: type: object properties: managedObjectDNsBasic: type: string 401: description: Unauthorized 403: description: Forbidden 404: description: there are no subscription defined put: tags: - "measurementGroups" description: >- This is an update for managedObjectDNsBasic field in a specific measurementGroup consumes: - application/json parameters: - in: path name: subscriptionName type: string required: true - in: path name: measurementGroupName type: string required: true - in: body name: managedObjectDNsBasic description: The managedObjectDNsBasic field of the measurementGroup to update schema: type: object properties: managedObjectDNsBasic: type: string responses: 201: description: managedObjectDNsBasic is updated 401: description: Unauthorized 403: description: Forbidden 404: description: measurementGroup object not found delete: tags: - "measurementGroups" description: >- This is a delete for managedObjectDNsBasic field on a measurementGroup parameters: - in: path name: subscriptionName type: string required: true - in: path name: measurementGroupName type: string required: true responses: 204: description: managedObjectDNsBasic field is deleted 401: description: Unauthorized 403: description: Forbidden 404: description: measurementGroup object not found