module bbf-nt-service-profile {
  yang-version 1.1;
  namespace "urn:bbf:yang:bbf-nt-service-profile";
  prefix bbf-nt-srv-prof;

  import bbf-l2-access-attributes {
    prefix bbf-l2access-attr;
  }

  organization
    "Broadband Forum <https://www.broadband-forum.org>
     Common YANG Work Area";
  contact
    "Comments or questions about this Broadband Forum YANG module
     should be directed to <mailto:help@broadband-forum.org>.

     Editor:      TBD

     PS Leader:   TBD

     WA Director: TBD";
  description
    "This module contains a collection of YANG definitions for
     simplifying the Access Device Model as exposed over NBI of BAA.

     Copyright (c) 2022, Broadband Forum

     Redistribution and use in source and binary forms, with or
     without modification, are permitted provided that the following
     conditions are met:

     1. Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.

     2. Redistributions in binary form must reproduce the above
        copyright notice, this list of conditions and the following
        disclaimer in the documentation and/or other materials
        provided with the distribution.

     3. Neither the name of the copyright holder nor the names of its
        contributors may be used to endorse or promote products
        derived from this software without specific prior written
        permission.

     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
     CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES,
     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
     CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
     ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

     The above license is used as a license under copyright only.
     Please reference the Forum IPR Policy for patent licensing terms
     <https://www.broadband-forum.org/ipr-policy>.

     Any moral rights which are necessary to exercise under the above
     license grant are also deemed granted under this license.

     This version of this YANG module is part of TR-383a4; see
     the TR itself for full legal notices.";

  revision 2021-09-14 {
    description
      "Initial revision.";
    reference
      "";
  }

  typedef srv-profile-ref {
    type leafref {
      path
        "/bbf-nt-srv-prof:service-profiles/bbf-nt-srv-prof:service-profile/bbf-nt-srv-prof:name";
    }
    description
      "A reference to a service profile.";
  }

  container service-profiles {
    description
      "All config data for service profile.";
    list service-profile {
      key "name";
      description
        "List of service profiles.";
      leaf name {
        type string {
          length "1..32";
        }
        description
          "The service profile name.";
      }
      container ports {
        description
          "All config data for ports.";
        list port {
          key "name";
          description
            "List of the port attribute.";
          leaf name {
            type string {
              length "1..64";
            }
            description
              "This object indicates the name of the port.";
          }
          container port-vlans {
            description
              "All config data for port vlan.";
            list port-vlan {
              key "name";
              description
                "This is used to add a user-side port on the network termination to a VLAN";
              leaf name {
                type leafref {
                  path
                    "/bbf-l2access-attr:vlan-translation-profiles/bbf-l2access-attr:vlan-translation-profile/bbf-l2access-attr:name";
                }
                description
                  "Name of the port VLAN.";
              }
            }
          }
        }
      }
    }
  }
}