// SPDX-FileCopyrightText: 2021 Open Networking Foundation
//
// SPDX-License-Identifier: Apache-2.0

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

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

  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-06-02" {
    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 spgwc-endpoint {
        type inet:uri;
        description "url of the spgwc service";
      }

      leaf hss-endpoint {
        type inet:uri;
        description "url of the hss service";
      }

      leaf pcrf-endpoint {
        type inet:uri;
        description "url of the pcrf service";
      }

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