// SPDX-FileCopyrightText: 2021 Open Networking Foundation
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0

module onf-connectivity-service {
  namespace "http://opennetworking.org/aether/connectivity-service";
  prefix cs;

  import ietf-inet-types { prefix inet; }
  import ietf-yang-types{ prefix yg; }
  import onf-aether-types { prefix at; }

  organization "Open Networking Foundation.";
  contact "Scott Baker";
  description
    "An Aether Connectivity service is the linkage between the
     ROC and a core that provides connectivity.";

  revision "2021-10-21" {
    description "An Aether Connectivity Service. Specifies the endpoints where the sdcore-adapter should push configuration to. A single connectivity service may be attached to multiple Enterprises.";
    reference "RFC 6087";
  }

  typedef connectivity-service-id {
        type yg:yang-identifier {
            length 1..32;
        }
   description "The typedef for connectivity-service-id";
  }

  container connectivity-service {
    description "The top level container";

    list connectivity-service {
      key "id";
      description
        "List of connectivity services";

      leaf id {
        type connectivity-service-id;
        description "ID for this connectivity service.";
      }

      leaf display-name {
        type string {
            length 1..80;
        }
        description "display name to use in GUI or CLI";
      }

      leaf description {
        type at:description;
        description "description of this connectivity service";
      }

      leaf core-5g-endpoint {
        type inet:uri;
        description "url of the 5g core";
      }

      leaf acc-prometheus-url {
          type inet:uri;
          description
            "URL of ACC prometheus";
      }
    }
  }
}
