Migration to TAPI 2.4 Step1
[transportpce.git] / api / src / main / yang / nbi-notifications@2023-07-28.yang
diff --git a/api/src/main/yang/nbi-notifications@2023-07-28.yang b/api/src/main/yang/nbi-notifications@2023-07-28.yang
new file mode 100644 (file)
index 0000000..8f5c6a2
--- /dev/null
@@ -0,0 +1,328 @@
+module nbi-notifications {
+  yang-version 1.1;
+  namespace "nbi-notifications";
+  prefix nbinotifications;
+
+  import org-openroadm-service {
+    prefix oor-service;
+  }
+  import org-openroadm-common-service-types {
+    prefix org-openroadm-common-service-types;
+  }
+  import org-openroadm-common-state-types {
+    prefix org-openroadm-common-state-types;
+  }
+  import org-openroadm-resource {
+    prefix org-openroadm-resource;
+  }
+  import tapi-common {
+    prefix tapi-common;
+    revision-date 2022-11-21;
+   }
+  import tapi-notification {
+    prefix tapi-notification;
+    revision-date 2022-11-21;
+  }
+
+  organization
+    "transportPCE";
+  contact
+    "transportPCE committers - ODL";
+  description
+    "YANG definitions for using REST API in NBI notifications module. Copyright
+     (c) 2020 ORANGE and others. All rights reserved.";
+
+  revision "2023-07-28" {
+    description
+      "Migration towards TAPI 2.4";
+  }
+
+  revision 2023-07-26 {
+      description
+        "Adding service-rpc-result data details to the publish-notification-process-service";
+  }
+
+  revision 2021-10-13 {
+    description
+      "Implement new models, RPC for TAPI service notification";
+  }
+
+  revision 2023-07-26 {
+      description
+        "Adding service-rpc-result data details to the publish-notification-process-service";
+  }
+
+  revision 2021-08-13 {
+    description
+      "Rename the groupings, containers and RPCs";
+  }
+
+  revision 2021-06-28 {
+    description
+      "Implement new models, RPC for service alarms";
+  }
+
+  revision 2020-11-30 {
+    description
+      "Initial revision of NBI notifications";
+  }
+
+  grouping notification-process-service {
+    leaf message {
+      type string;
+      mandatory true;
+      description
+        "Message for the specified service";
+    }
+    leaf service-name {
+      type string;
+      mandatory true;
+      description
+        "Identifier for the service to be created in the ROADM network, e.g., CLFI, CLCI, etc.
+        This is reported against the service, but may not get reflected in the service in the network.";
+    }
+    leaf common-id {
+      type string;
+      description
+        "To be used by the ROADM controller to identify the routing constraints
+        received from planning application (PED).";
+    }
+    leaf connection-type {
+      type org-openroadm-common-service-types:connection-type;
+      mandatory true;
+    }
+    container service-a-end {
+      uses org-openroadm-common-service-types:service-endpoint;
+    }
+    container service-z-end {
+      uses org-openroadm-common-service-types:service-endpoint;
+    }
+    leaf response-failed {
+      type string;
+      description
+        "Response of the error if the service request encountered an anomaly";
+    }
+    leaf operational-state {
+      type org-openroadm-common-state-types:state;
+      config false;
+      description
+        "Operational State: Actual state of service";
+    }
+    leaf is-temp-service {
+      type boolean;
+      default "false";
+      description
+        "Used to indicate if the it is a temp-service or not";
+    }
+    container aToZ {
+      when "../is-temp-service = 'true'" {
+        description
+            "a-to-z is only used for temp-service-cerate";
+        }
+        uses org-openroadm-resource:common-och-otsi-attributes;
+        uses org-openroadm-resource:path-computation-outputs;
+    }
+    container zToA {
+      when "../is-temp-service = 'true'" {
+        description
+              "a-to-z is only used for temp-service-cerate";
+        }
+      uses org-openroadm-resource:common-och-otsi-attributes;
+      uses org-openroadm-resource:path-computation-outputs;
+    }
+  }
+  grouping notification-alarm-service {
+    leaf message {
+      type string;
+      mandatory true;
+      description
+        "Message for the specified service";
+    }
+    leaf service-name {
+      type string;
+      mandatory true;
+      description
+        "Identifier for the service to be created in the ROADM network, e.g., CLFI, CLCI, etc.
+        This is reported against the service, but may not get reflected in the service in the network.";
+    }
+    leaf connection-type {
+      type org-openroadm-common-service-types:connection-type;
+      mandatory true;
+    }
+    leaf operational-state {
+      type org-openroadm-common-state-types:state;
+      config false;
+      description
+        "Operational State: Actual state of service";
+    }
+  }
+
+  grouping notification-tapi-service {
+      leaf notification-type {
+        type tapi-notification:notification-type;
+        description "none";
+      }
+      leaf target-object-type {
+        type tapi-common:object-type;
+        description "none";
+      }
+      leaf target-object-identifier {
+        type tapi-common:uuid;
+        description "none";
+      }
+      list target-object-name {
+        key 'value-name';
+        min-elements 1;
+        uses tapi-common:name-and-value;
+        description "none";
+      }
+      leaf event-time-stamp {
+        type tapi-common:date-and-time;
+        description "none";
+      }
+      leaf sequence-number {
+        type uint64;
+        config false;
+        description "A monotonous increasing sequence number associated with the notification.
+            The exact semantics of how this sequence number is assigned (per channel or subscription or source or system) is left undefined.";
+      }
+      leaf source-indicator {
+        type tapi-notification:source-indicator;
+        description "none";
+      }
+      leaf layer-protocol-name {
+        type tapi-common:layer-protocol-name;
+        description "none";
+      }
+      leaf layer-protocol-qualifier {
+        type tapi-common:layer-protocol-qualifier;
+        config false;
+        description "none";
+        }
+      list changed-attributes {
+        key 'value-name';
+        uses tapi-notification:name-and-value-change;
+        description "none";
+      }
+      list additional-info {
+        key 'value-name';
+        uses tapi-common:name-and-value;
+        description "none";
+      }
+      leaf additional-text {
+        type string;
+        description "none";
+      }
+      uses tapi-common:global-class;
+      description "none";
+    }
+
+  container notification-process-service {
+    description
+      "Model used to send a notification from a service request";
+    uses notification-process-service;
+  }
+
+  container notification-alarm-service {
+    description
+      "Model used to send a notification from the service listener";
+    uses notification-alarm-service;
+    }
+
+  container notification-tapi-service {
+      description
+        "Model used to send a tapi notification";
+      uses notification-tapi-service;
+    }
+
+  rpc get-notifications-process-service {
+    description "Get the notifications service sent by ServiceHandler through filtering connection type";
+    input {
+      leaf connection-type {
+        type org-openroadm-common-service-types:connection-type;
+        mandatory true;
+        description
+          "Type connection of the service ";
+      }
+      leaf id-consumer {
+        type string;
+        mandatory true;
+        description
+          "Unique ID for the consumer";
+      }
+      leaf group-id {
+        type string;
+        mandatory true;
+        description
+          "ID Group for the consumer";
+      }
+    }
+    output {
+      list notifications-process-service {
+        uses notification-process-service;
+      }
+    }
+  }
+
+  rpc get-notifications-alarm-service {
+    description "Get the notifications alarm service sent by ServiceListener through filtering connection type";
+    input {
+      leaf connection-type {
+        type org-openroadm-common-service-types:connection-type;
+        mandatory true;
+        description
+          "Type connection of the service";
+      }
+      leaf id-consumer {
+        type string;
+        mandatory true;
+        description
+          "Unique ID for the consumer";
+      }
+      leaf group-id {
+        type string;
+        mandatory true;
+        description
+          "ID Group for the consumer";
+      }
+    }
+    output {
+      list notifications-alarm-service {
+        uses notification-alarm-service;
+      }
+    }
+  }
+
+  notification publish-notification-process-service {
+    description "Publish the notifications service through a publisher";
+    leaf publisher-name {
+      type string;
+      mandatory true;
+      description
+        "Name of the publisher";
+     }
+     uses notification-process-service;
+  }
+
+  notification publish-notification-alarm-service {
+    description "Publish the notifications service alarm through a publisher";
+    leaf publisher-name {
+      type string;
+      mandatory true;
+      description
+        "Name of the publisher";
+     }
+     uses notification-alarm-service;
+  }
+
+  notification publish-tapi-notification-service {
+    description "Publish the TAPI notifications service for topic";
+    leaf topic {
+      type string;
+      mandatory true;
+      description
+        "Topic where to send the notification service";
+    }
+    uses tapi-notification:notification;
+  }
+}