blob: 5afdd5fe64c89eda30a7fb9a6a6e7ac878f68610 [file] [log] [blame]
# ============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