-- YML module extracted from ITU-T Q.819 (01/2022)

openapi: 3.0.0 info: title: ITU-T_NotificationService description: ''This is the formal definition of the ITU-T Notification Service.'' termsOfService: https://www.itu.int/en/ITU-T/about/Pages/default.aspx contact: email: zlwang@bupt.edu.cn license: name: Apache 2.0 url: http://www.apache.org/licenses/LICENSE-2.0.html version: 1.0.0 externalDocs: description: See Recommendation ITU-T Q.819 url: https://www.itu.int/itu-t/recommendations/index.aspx?ser=X servers: - url: http://www.itu.int/sg2/rest/NotificationService/v1.0.0 - url: https://www.itu.int/sg2/rest/NotificationService/v1.0.0 tags: - name: NotificationService description: All APIs realted to the ITU-T Notification Service externalDocs: description: Find out more url: https://www.itu.int/itu-t/recommendations/index.aspx?ser=X paths: /Subscription: post: tags: - NotificationService summary: "subscribe notification" description: "create an subscription in the notification services with the specified parameters list" operationId: "subscribeNotification" requestBody: description: "The input parameters of the subscribeNotification operation" content: application/json: schema: $ref: ''#/components/schemas/SubscribeNotificationRequest'' required: true responses: 201: description: "Subscription is successfully created, and the new Subscription ID value will be returned." content: application/json: schema: $ref: ''#/components/schemas/subscriptionId'' 400: description: "Parameter Error occurred in the subscribeNotification operation" content: application/json: schema: $ref: ''#/components/schemas/ErrorInfo'' 404: description: "The URI does not exist" content: {} 409: description: "Subscription Conflict" content: {} 500: description: "Internal Server Error" content: {} callbacks: notification: ''{$request.query.requestBody.destination}'': #''{$request.query.requestBody.destination}?event={$request.query.requestBody.eventTypes}'': post: requestBody: content: application/json: schema: $ref: ''#/components/schemas/NotificationInfo'' #example: #messageasdfasdf: Some event responses: ''200'': description: OK get: tags: - NotificationService summary: "Get Subscription Information" description: "get the list of Identifiers of all the existing Notification Subscriptions" operationId: "listAllSubscriptionIds" responses: 200: description: "The attribute value list of the specified MO is retrieved successfully" content: application/json: schema: type: array items: $ref: "#/components/schemas/subscriptionId" 404: description: "Specified Subscription Not found" content: {} 500: description: "Internal Server Error" content: {} /Subscription={subscriptionId}: parameters: - name: subscriptionId in: path description: "The unique Identifier of the notification Subscription" required: true schema: type: string get: tags: - NotificationService summary: "Query Subscription Information" description: "query the attributes information of a specific Notification Subscription" operationId: querySubscription" responses: 200: description: "The attribute value list of the specified MO is retrieved successfully" content: application/json: schema: $ref: "#/components/schemas/SubscriptionInfo" 404: description: "Specified Subscription Not found" content: {} 500: description: "Internal Server Error" content: {} delete: tags: - NotificationService summary: "Unsubscribe Notification" description: "delete a specific Notification Subscription" operationId: "unsubscribeNotification" responses: 200: description: "The specified Subscription is deleted successfullly" content: {} 404: description: "Specified Subscription does not exist" content: {} 405: description: "Method Not Allowed, the specified Subscription cannot be deleted" content: {} 500: description: "Internal Server Error" content: {} patch: tags: - NotificationService summary: "Modify Subscription" description: "modify a specific Notification Subscription" operationId: "modifySuscription" requestBody: description: "The input parameters of the modifySuscription operation" content: application/json: schema: $ref: ''#/components/schemas/ModifySubscriptionRequest'' required: true responses: 200: description: "The specified Subscription is modified successfullly, and the modified Suscription information is returned" content: application/json: schema: $ref: ''#/components/schemas/SubscriptionInfo'' 400: description: "Parameter Error occurred in the modifySuscription operation" content: application/json: schema: $ref: ''#/components/schemas/ErrorInfo'' 404: description: "Specified Subscription does not exist" content: {} 405: description: "Method Not Allowed, the specified Subscription cannot be modified" content: {} 500: description: "Internal Server Error" content: {} /Subscription={subscriptionId}/suspend: parameters: - name: subscriptionId in: path description: "The unique Identifier of the notification Subscription" required: true schema: type: string post: tags: - NotificationService summary: "Suspend Subscription " description: "Suspend the specific Notification Subscription" operationId: "suspendSubscription" responses: 200: description: "The specified Subscription is suspended successfully" content: {} 404: description: "Specified Subscription Not found" content: {} 405: description: "Method Not Allowed" content: {} 409: description: "Subscription already Suspended" content: {} 500: description: "Internal Server Error" content: {} /Subscription={subscriptionId}/resume: parameters: - name: subscriptionId in: path description: "The unique Identifier of the notification Subscription" required: true schema: type: string post: tags: - NotificationService summary: "Resume Subscription " description: "Resume the specific suspended Notification Subscription" operationId: "resumeSubscription" responses: 200: description: "The specified Subscription is resumed successfully" content: {} 400: description: "Subscription already Resumed" content: {} 404: description: "Specified Subscription Not found" content: {} 405: description: "Method Not Allowed" content: {} 500: description: "Internal Server Error" content: {} /NotificationTypes: get: tags: - NotificationService summary: "Get Motification Types" description: "get the supportted Notification Types." operationId: "getNotificationTypes" responses: 200: description: "The attribute value list of the specified MO is retrieved successfully" content: application/json: schema: type: array items: $ref: "#/components/schemas/NotificationType" 404: description: "Specified Subscription Not found" content: {} 500: description: "Internal Server Error" content: {} components: schemas: NVPair: type: object required: - name - value properties: name: type: string value: type: string type: type: string NVPairList: type: object properties: attributeList: type: array items: $ref: ''#/components/schemas/NVPair'' SubscribeNotificationRequest: type: object properties: managerId: type: string notificationTypeList: #empty list means subscribing all notification types. type: array items: $ref: ''#/components/schemas/NotificationType'' filteringCritteria: #optional type: string destination: #URI of the notification subscriber type: string format: uri required: - managerId - destination NotificationType: type: string enum: - objectCreation - objectDeletion - attributeValueChange - stateChange - communicationAlarm - environmentalAlarm - equipmentAlarm - processingErrorAlarm - qualityOfServiceAlarm - integrityViolation - operationalViolation - physicalViolation - securityViolation - timeDomainViolation - relationshipChange - heartbeat subscriptionId: type: string ErrorInfo: type: object properties: code: type: string enum: - invalidObjectInstance - noSuchObjectClass - noSuchAttribute - invalidAttributeValue - missingAttributeValue - notFound - cannotBeDeleted message: type: string required: - code SubscriptionInfo: type: object properties: subscriptionId: type: string managerId: #the identifier of manager of this notification subscription type: string notificationTypeList: #empty list means subscribing all notification types. type: array items: $ref: ''#/components/schemas/NotificationType'' filteringCriteria: #optional type: string destination: #URI of the notification subscriber type: string format: uri subscriptionStatus: #Whether the subscription is suspended or resumed type: string enum: - suspended - resumed required: - subcriptionId - managerId - destination - subscriptionState ModifySubscriptionRequest: type: object properties: notificationTypeList: #empty list means subscribing all notification types. type: array items: $ref: ''#/components/schemas/NotificationType'' filteringCriteria: #optional type: string destination: #URI of the notification subscriber type: string format: uri NotificationInfo: type: object properties: notificationHeader: $ref: ''#/components/schemas/NotificationHeader'' notificationBody: $ref: ''#/components/schemas/NotificationBody'' required: - notificationHeader - notificationBody NotificationHeader: type: object properties: objectClass: type: string objectInstance: type: string format: uri notificationId: type: string eventTime: type: string # to be confirmed. format: date-time systemDN: type: string notificationType: $ref: ''#/components/schemas/NotificationType'' required: - objectClass - objectInstance - notificationId - eventTime - systemDN - notificationType NotificationBody: type: object #One of the following will be used in a concreate notification properties: objectCreationBody: $ref: ''#/components/schemas/ObjectCreationDeletionBody'' objectDeletionBody: $ref: ''#/components/schemas/ObjectCreationDeletionBody'' atributeValueChangeBody: $ref: ''#/components/schemas/AttributeValueChangeBody'' stateChangeBody: $ref: ''#/components/schemas/StateChangeBody'' alarmNotificationBody: #for communicationsAlarm, environmentalAlarm, equipmentAlarm, processingErrorAlarm, qualityOfServiceAlarm $ref: ''#/components/schemas/AlarmNotificationBody'' violationsNoitificationBody: $ref: ''#/components/schemas/ViolationsNoitificationBody'' relationshipChangeNotificationBody: $ref: ''#/components/schemas/RelationshipChangeNotificationBody'' heartbeatNotificationBody: $ref: ''#/components/schemas/HeartbeatNotificationBody'' ObjectCreationDeletionBody: type: object properties: commonAttributes: $ref: ''#/components/schemas/CMNotificationCommonAttrs'' attributeList: $ref: ''#/components/schemas/NVPairList'' AttributeValueChangeBody: type: object properties: commonAttributes: $ref: ''#/components/schemas/CMNotificationCommonAttrs'' attributeChanges: $ref: ''#/components/schemas/NVPairList'' required: - attributeChanges StateChangeBody: type: object properties: commonAttributes: $ref: ''#/components/schemas/CMNotificationCommonAttrs'' stateChanges: $ref: ''#/components/schemas/NVPairList'' required: - stateChanges CMNotificationCommonAttrs: type: object properties: correlatedNotifications: type: array items: type: string additionalText: type: string additionalInfo: type: string sourceIndicator: $ref: ''#/components/schemas/SourceIndicator'' SourceIndicator: type: string format: enum - resourceOperation - managementOperation - unknown AlarmNotificationBody: type: object properties: correlatedNotifications: type: array items: type: string additionalText: type: string additionalInfo: type: string probableCause: type: string specificProblems: type: array items: type: string perceivedSeverity: $ref: ''#/components/schemas/AlarmSeverity'' backedUpStatus: type: boolean backUpObject: type: string format: uri trendIndication: $ref: ''#/components/schemas/TrendIndication'' thresholdInfo: $ref: ''#/components/schemas/ThresholdInfo'' stateChangeDefinition: $ref: ''#/components/schemas/StateChangeDefinition'' moniterdAttributes: type: array items: type: string proposedRepairActions: type: array items: type: string alarmEffectOnService: type: boolean alarmingResumed: type: boolean suspectObjectList: type: array items: type: string format: uri required: - probableCause - perceivedSeverity AlarmSeverity: type: string format: enum - cleared - warning - indetermined - minor - major - critical TrendIndication: type: string format: enum - lessSevere - noChange - moreSevere ThresholdInfo: type: object properties: attributeID: type: string observedValue: type: number format: float thresholdLevel: $ref: ''#/components/schemas/ThresholdLevelInd'' armTime: type: string format: date-time ThresholdLevelInd: type: object properties: indication: $ref: ''#/components/schemas/ThresholdIndication'' low: type: number format: float high: type: number format: float ThresholdIndication: type: string format: enum - up - down StateChangeDefinition: $ref: ''#/components/schemas/NVPairList'' ViolationsNoitificationBody: type: object properties: correlatedNotifications: type: array items: type: string additionalText: type: string additionalInfo: type: string securityAlarmCause: type: string securityAlarmSeverity: $ref: ''#/components/schemas/AlarmSeverity'' securityAlarmDetector: $ref: ''#/components/schemas/SecurityAlarmDetector'' serviceUser: type: string serviceProvider: type: string required: - securityAlarmCause - securityAlarmSeverity - securityAlarmDetector - serviceUser - serviceProvider SecurityAlarmDetector: type: object properties: mechanism: $ref: ''#/components/schemas/UID'' obj: type: string format: uri UID: type: object properties: uri: type: string format: uri value: type: integer format: unsignedLong RelationshipChangeNotificationBody: type: object properties: commonAttributes: $ref: ''#/components/schemas/CMNotificationCommonAttrs'' relationshipChanges: $ref: ''#/components/schemas/AttributeChangeSet'' required: - relationshipChanges AttributeChangeSet: type: array items: $ref: ''#/components/schemas/AttributeChange'' AttributeChange: type: object properties: attribugteName: type: string attributeType: type: string oldValue: type: string newValue: type: string HeartbeatNotificationBody: type: object properties: systemLabel: type: string format: uri period: type: integer format: unitsInSeconds timeStamp: type: string format: date-time