type: dict
allow_other_keys: true
keys:
  aaa_accounting:
    type: dict
    keys:
      exec:
        type: dict
        keys:
          console:
            type: dict
            keys:
              type:
                type: str
                valid_values:
                - none
                - start-stop
                - stop-only
              group:
                description: Group Name
                type: str
          default:
            type: dict
            keys:
              type:
                type: str
                valid_values:
                - none
                - start-stop
                - stop-only
              group:
                description: Group Name
                type: str
      system:
        type: dict
        keys:
          default:
            type: dict
            keys:
              type:
                type: str
                valid_values:
                - none
                - start-stop
                - stop-only
              group:
                description: Group Name
                type: str
      commands:
        type: dict
        keys:
          console:
            type: list
            items:
              type: dict
              keys:
                commands:
                  type: str
                  convert_types:
                  - int
                  description: Privelege level 'all' or 0-15
                type:
                  type: str
                  valid_values:
                  - none
                  - start-stop
                  - stop-only
                group:
                  description: Group Name
                  type: str
                logging:
                  type: bool
          default:
            type: list
            items:
              type: dict
              keys:
                commands:
                  type: str
                  convert_types:
                  - int
                  description: Privelege level 'all' or 0-15
                type:
                  type: str
                  valid_values:
                  - none
                  - start-stop
                  - stop-only
                group:
                  description: Group Name
                  type: str
                logging:
                  type: bool
          commands_default:
            type: list
            description: Deprecated and removed key from AVD 2.x
  aaa_authentication:
    type: dict
    keys:
      login:
        type: dict
        keys:
          default:
            type: str
            description: 'Login authentication method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group radius group MYGROUP local"

              '
          console:
            type: str
            description: 'Console authentication method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group radius group MYGROUP local"

              '
      enable:
        type: dict
        keys:
          default:
            type: str
            description: 'Enable authentication method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group radius group MYGROUP local"

              '
      dot1x:
        type: dict
        keys:
          default:
            type: str
            description: '802.1x authentication method(s) as a string.

              Examples:

              - "group radius"

              - "group MYGROUP group radius"

              '
      policies:
        type: dict
        keys:
          on_failure_log:
            type: bool
          on_success_log:
            type: bool
          local:
            type: dict
            keys:
              allow_nopassword:
                type: bool
          lockout:
            type: dict
            keys:
              failure:
                type: int
                min: 1
                max: 255
                convert_types:
                - str
              duration:
                type: int
                min: 1
                max: 4294967295
                convert_types:
                - str
              window:
                type: int
                min: 1
                max: 4294967295
                convert_types:
                - str
  aaa_authorization:
    type: dict
    keys:
      exec:
        type: dict
        keys:
          default:
            type: str
            description: 'Exec authorization method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group radius group MYGROUP local"

              '
      config_commands:
        type: bool
      serial_console:
        type: bool
      commands:
        type: dict
        keys:
          all_default:
            type: str
            description: 'Command authorization method(s) as a string.

              Examples:

              - "group tacacs+ local"

              - "group MYGROUP none"

              - "group tacacs+ group MYGROUP local

              '
          privilege:
            type: list
            items:
              type: dict
              keys:
                level:
                  type: str
                  description: Privilege level(s) 0-15
                  convert_types:
                  - int
                default:
                  type: str
                  description: 'Command authorization method(s) as a string.

                    Examples:

                    - "group tacacs+ local"

                    - "group MYGROUP none"

                    - "group tacacs+ group MYGROUP local"'
  aaa_root:
    type: dict
    keys:
      secret:
        type: dict
        keys:
          sha512_password:
            type: str
  aaa_server_groups:
    type: list
    items:
      type: dict
      keys:
        name:
          description: Group name
          type: str
        type:
          type: str
          valid_values:
          - tacacs+
          - radius
          - ldap
        servers:
          type: list
          items:
            type: dict
            keys:
              server:
                type: str
                description: Hostname or IP address
              vrf:
                type: str
                description: VRF name
  access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: IP Extended Access-Lists (legacy model)
    description: 'AVD currently supports 2 different data models for extended ACLs:


      - The legacy `access_lists` data model, for compatibility with existing deployments

      - The improved `ip_access_lists` data model, for access to more EOS features


      Both data models can coexists without conflicts, as different keys are used:
      `access_lists` vs `ip_access_lists`.

      Access list names must be unique.


      The legacy data model supports simplified ACL definition with `sequence` to
      `action` mapping:

      '
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Access-list Name
        counters_per_entry:
          type: bool
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                required: true
                description: Sequence ID
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string

                  Example: "deny ip any any"'
  aliases:
    type: str
    description: "Multi-line string with one or more alias commands.\n\nExample:\n\n```yaml\naliases:
      |\n  alias wr copy running-config startup-config\n  alias siib show ip interface
      brief\n```"
  arp:
    type: dict
    keys:
      aging:
        type: dict
        keys:
          timeout_default:
            description: Timeout in seconds
            type: int
            min: 60
            max: 65535
  as_path:
    type: dict
    keys:
      regex_mode:
        type: str
        valid_values:
        - asn
        - string
      access_lists:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Access List Name
            entries:
              type: list
              items:
                type: dict
                keys:
                  type:
                    type: str
                    valid_values:
                    - permit
                    - deny
                  match:
                    type: str
                    description: Regex To Match
                  origin:
                    type: str
                    valid_values:
                    - any
                    - egp
                    - igp
                    - incomplete
                    default: any
  banners:
    type: dict
    keys:
      login:
        type: str
        description: Multiline string ending with EOF on the last line
      motd:
        type: str
        description: Multiline string ending with EOF on the last line
  bgp_groups:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Group Name
        vrf:
          type: str
        neighbors:
          type: list
          items:
            type: str
        bgp_maintenance_profiles:
          type: list
          items:
            type: str
            description: Profile Name
  boot:
    display_name: System Boot Settings
    description: 'Set the Aboot password

      '
    type: dict
    keys:
      secret:
        type: dict
        keys:
          hash_algorithm:
            type: str
            valid_values:
            - md5
            - sha512
            default: sha512
          key:
            description: Hashed Password
            type: str
  class_maps:
    type: dict
    display_name: QOS Class-maps
    keys:
      pbr:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Class-Map Name
            ip:
              type: dict
              keys:
                access_group:
                  type: str
                  description: Standard Access-List Name
      qos:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Class-Map Name
            vlan:
              type: int
              convert_types:
              - str
              description: VLAN value(s) or range(s) of VLAN values
            cos:
              type: int
              convert_types:
              - str
              description: CoS value(s) or range(s) of CoS values
            ip:
              type: dict
              keys:
                access_group:
                  type: str
                  description: IPv4 Access-List Name
            ipv6:
              type: dict
              keys:
                access_group:
                  type: str
                  description: IPv6 Access-List Name
  clock:
    type: dict
    keys:
      timezone:
        type: str
  community_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: Community Lists (legacy model)
    description: 'AVD supports 2 different data models for community lists:


      - The legacy `community_lists` data model that can be used for compatibility
      with the existing deployments.

      - The improved `ip_community_lists` data model.


      Both data models can coexist without conflicts, as different keys are used:
      `community_lists` vs `ip_community_lists`.

      Community list names must be unique.


      The legacy data model supports simplified community list definition that only
      allows a single action to be defined as string:

      '
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Community-list Name
        action:
          type: str
          required: true
          description: 'Action as string

            Example: "permit GSHUT 65123:123"'
  custom_templates:
    type: list
    display_name: Extensibility with Custom Templates
    description: "- Custom templates can be added below the playbook directory.\n-
      If a location above the directory is desired, a symbolic link can be used.\n-
      Example under the `playbooks` directory create symbolic link with the following
      command:\n\n  ```bash\n  ln -s ../../shared_repo/custom_avd_templates/ ./custom_avd_templates\n
      \ ```\n\n- The output will be rendered at the end of the configuration.\n- The
      order of custom templates in the list can be important if they overlap.\n- It
      is recommenended to use a `!` delimiter at the top of each custom template.\n\nAdd
      `custom_templates` to group/host variables:\n"
    items:
      type: str
      description: Template relative path below playbook directory
  cvx:
    type: dict
    description: CVX server features are not supported on physical switches. See `management_cvx`
      for client configurations.
    keys:
      shutdown:
        type: bool
      peer_hosts:
        type: list
        items:
          type: str
          description: IP address or hostname
      services:
        type: dict
        keys:
          mcs:
            type: dict
            keys:
              redis:
                type: dict
                keys:
                  password:
                    type: str
                    description: Hashed password using the password_type
                  password_type:
                    type: str
                    convert_types:
                    - int
                    valid_values:
                    - '0'
                    - '7'
                    - 8a
                    default: '7'
              shutdown:
                type: bool
  daemon_terminattr:
    type: dict
    description: "You can either provide a list of IPs/FQDNs to target on-premise
      Cloudvision cluster or use DNS name for your Cloudvision as a Service instance.\nStreaming
      to multiple clusters both on-prem and cloud service is supported.\n> Note For
      TerminAttr version recommendation and EOS compatibility matrix, please refer
      to the latest TerminAttr Release Notes\n  which always contain the latest recommended
      versions and minimum required versions per EOS release.\n"
    keys:
      cvaddrs:
        type: list
        description: 'Streaming address(es) for CloudVision single cluster

          - TCP 9910 is used for CV on-prem

          - TCP 443 is used for CV as a Service

          '
        items:
          type: str
          description: Server address in the format `<ip/fqdn>:<port>`
      clusters:
        type: list
        description: 'Multiple CloudVision clusters

          '
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: Cluster Name
            cvaddrs:
              type: list
              description: 'Streaming address(es) for CloudVision cluster

                - TCP 9910 is used for CV on-prem

                - TCP 443 is used for CV as a Service

                '
              items:
                type: str
                description: Server address in the format `<ip/fqdn>:<port>`
            cvauth:
              type: dict
              description: 'Authentication scheme used to connect to CloudVision

                '
              keys:
                method:
                  type: str
                  valid_values:
                  - token
                  - token-secure
                  - key
                key:
                  type: str
                token_file:
                  type: str
                  description: 'Token file path

                    e.g. "/tmp/token"

                    '
            cvobscurekeyfile:
              type: bool
              description: 'Encrypt the private key used for authentication to CloudVision

                '
            cvproxy:
              type: str
              description: 'Proxy server through which CloudVision is reachable. Useful
                when the CloudVision server is hosted in the cloud.

                The expected form is http://[user:password@]ip:port, e.g.: ''http://arista:arista@10.83.12.78:3128''.
                Available as of TerminAttr v1.13.0

                '
            cvsourceip:
              type: str
              description: 'Set source IP address in case of in-band managament

                '
            cvvrf:
              type: str
              description: 'The VRF to use to connect to CloudVision

                '
      cvauth:
        type: dict
        description: 'Authentication scheme used to connect to CloudVision

          '
        keys:
          method:
            type: str
            valid_values:
            - token
            - token-secure
            - key
          key:
            type: str
          token_file:
            type: str
            description: 'Token file path

              e.g. "/tmp/token"

              '
      cvobscurekeyfile:
        type: bool
        description: 'Encrypt the private key used for authentication to CloudVision

          '
      cvproxy:
        type: str
        description: 'Proxy server through which CloudVision is reachable. Useful
          when the CloudVision server is hosted in the cloud.

          The expected form is http://[user:password@]ip:port, e.g.: ''http://arista:arista@10.83.12.78:3128''.
          Available as of TerminAttr v1.13.0

          '
      cvsourceip:
        type: str
        description: 'Set source IP address in case of in-band managament

          '
      cvvrf:
        type: str
        description: 'The VRF to use to connect to CloudVision

          '
      cvgnmi:
        type: bool
        description: 'Stream states from EOS GNMI servers (Openconfig) to CloudVision.
          Available as of TerminAttr v1.13.1

          '
      disable_aaa:
        type: bool
        description: 'Disable AAA authorization and accounting.

          When setting this flag, all commands pushed from CloudVision are applied
          directly to the CLI without authorization

          '
      grpcaddr:
        type: str
        description: 'Set the gRPC server address, the default is 127.0.0.1:6042

          e.g. "MGMT/0.0.0.0:6042"

          '
      grpcreadonly:
        type: bool
        description: 'gNMI read-only mode - Disable gnmi.Set()

          '
      ingestexclude:
        type: str
        description: 'Exclude paths from Sysdb on the ingest side.

          e.g. "/Sysdb/cell/1/agent,/Sysdb/cell/2/agent"

          '
      smashexcludes:
        type: str
        description: 'Exclude paths from the shared memory table.

          e.g. "ale,flexCounter,hardware,kni,pulse,strata"

          '
      taillogs:
        type: str
        description: 'Enable log file collection; /var/log/messages is streamed by
          default if no path is set.

          e.g. "/var/log/messages"

          '
      ecodhcpaddr:
        type: str
        description: 'ECO DHCP Collector address or ECO DHCP Fingerprint listening
          address in standalone mode (default "127.0.0.1:67")

          '
      ipfix:
        type: bool
        description: 'Enable IPFIX provider (TerminAttr default is true).

          This flag is enabled by default and does not have to be added to the daemon
          configuration.

          '
      ipfixaddr:
        type: str
        description: 'ECO IPFIX Collector address to listen on to receive IPFIX packets
          (TerminAttr default "127.0.0.1:4739").

          '
      sflow:
        type: bool
        description: 'Enable sFlow provider (TerminAttr default is true).

          '
      sflowaddr:
        type: str
        description: 'ECO sFlow Collector address to listen on to receive sFlow packets
          (TerminAttr default "127.0.0.1:6343").

          '
      cvconfig:
        type: bool
        description: 'Subscribe to dynamic device configuration from CloudVision (TerminAttr
          default is false).

          '
      cvcompression:
        type: str
        description: 'The default compression scheme when streaming to CloudVision
          is gzip since TerminAttr 1.6.1 and CVP 2019.1.0.

          There is no need to change the compression scheme.

          '
      ingestauth_key:
        type: str
        description: 'Deprecated key. Use `cvauth` instead.

          '
      ingestgrpcurl:
        type: dict
        description: 'Deprecated key. Use `cvaddrs` instead.

          '
        keys:
          ips:
            type: list
            items:
              type: str
          port:
            type: int
            convert_types:
            - str
      ingestvrf:
        description: 'Deprecated key. Use `cvvrf` instead.

          '
        type: str
  daemons:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: Custom Daemons
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Daemon Name
        exec:
          type: str
          required: true
          description: 'command to run as a daemon

            '
        enabled:
          type: bool
          default: true
  dhcp_relay:
    type: dict
    keys:
      servers:
        type: list
        items:
          type: str
          description: Server IP or Hostname
      tunnel_requests_disabled:
        type: bool
  dns_domain:
    type: str
    description: Domain Name
  domain_list:
    type: list
    description: Search list of DNS domains
    items:
      type: str
      description: Domain name
  dot1x:
    type: dict
    display_name: Global 802.1x Authentication
    keys:
      system_auth_control:
        type: bool
      protocol_lldp_bypass:
        type: bool
      dynamic_authorization:
        type: bool
  dynamic_prefix_lists:
    type: list
    items:
      type: dict
      keys:
        name:
          type: str
          description: Dynamic prefix-list name
        match_map:
          type: str
          description: Route-map name
        prefix_list:
          type: dict
          keys:
            ipv4:
              type: str
              description: Prefix-list name
            ipv6:
              type: str
              description: Prefix-list name
  enable_password:
    type: dict
    keys:
      hash_algorithm:
        type: str
        valid_values:
        - md5
        - sha512
      key:
        type: str
        description: 'Must be the hash of the password using the specified algorithm.

          By default EOS salts the password, so the simplest is to generate the hash
          on an EOS device.'
  eos_cli:
    type: str
    description: Multiline string with EOS CLI rendered directly on the root level
      of the final EOS configuration
  errdisable:
    type: dict
    keys:
      detect:
        type: dict
        keys:
          causes:
            type: list
            items:
              type: str
              valid_values:
              - acl
              - arp-inspection
              - dot1x
              - link-change
              - tapagg
              - xcvr-misconfigured
              - xcvr-overheat
              - xcvr-power-unsupported
      recovery:
        type: dict
        keys:
          causes:
            type: list
            items:
              type: str
              valid_values:
              - arp-inspection
              - bpduguard
              - dot1x
              - hitless-reload-down
              - lacp-rate-limit
              - link-flap
              - no-internal-vlan
              - portchannelguard
              - portsec
              - speed-misconfigured
              - tap-port-init
              - tapagg
              - uplink-failure-detection
              - xcvr-misconfigured
              - xcvr-overheat
              - xcvr-power-unsupported
              - xcvr-unsupported
          interval:
            type: int
            convert_types:
            - str
            description: Interval in seconds
            default: 300
            min: 30
            max: 86400
  ethernet_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
        description:
          type: str
        shutdown:
          type: bool
        speed:
          type: str
          description: Speed can be interface_speed or forced interface_speed or auto
            interface_speed
        mtu:
          type: int
          convert_types:
          - str
        l2_mtu:
          type: int
          convert_types:
          - str
          description: '"l2_mtu" should only be defined for platforms supporting the
            "l2 mtu" CLI

            '
        vlans:
          type: str
          convert_types:
          - int
          description: 'List of switchport vlans as string

            For a trunk port this would be a range like "1-200,300"

            For an access port this would be a single vlan "123"

            '
        native_vlan:
          type: int
          convert_types:
          - str
        native_vlan_tag:
          type: bool
          description: If setting both native_vlan and native_vlan_tag, native_vlan_tag
            takes precedence
        mode:
          type: str
          valid_values:
          - access
          - dot1q-tunnel
          - trunk
          - trunk phone
        phone:
          type: dict
          keys:
            trunk:
              type: str
              valid_values:
              - tagged
              - untagged
            vlan:
              type: int
              min: 1
              max: 4094
              convert_types:
              - str
        l2_protocol:
          type: dict
          keys:
            encapsulation_dot1q_vlan:
              type: int
              convert_types:
              - str
              description: Vlan tag to configure on sub-interface
        trunk_groups:
          type: list
          items:
            type: str
        type:
          type: str
          valid_values:
          - routed
          - switched
          - l3dot1q
          - l2dot1q
          description: 'l3dot1q and l2dot1q are used for sub-interfaces

            The parent interface should be defined as routed

            '
        snmp_trap_link_change:
          type: bool
        flowcontrol:
          type: dict
          keys:
            received:
              type: str
              valid_values:
              - desired
              - 'on'
              - 'off'
        vrf:
          type: str
          description: VRF name
        flow_tracker:
          type: dict
          keys:
            sampled:
              type: str
              description: Flow tracker name
        error_correction_encoding:
          type: dict
          keys:
            enabled:
              type: bool
              default: true
            fire_code:
              type: bool
            reed_solomon:
              type: bool
        link_tracking_groups:
          type: list
          primary_key: name
          items:
            type: dict
            keys:
              name:
                type: str
                description: Group name
              direction:
                type: str
                valid_values:
                - upstream
                - downstream
        evpn_ethernet_segment:
          type: dict
          keys:
            identifier:
              type: str
              description: EVPN Ethernet Segment Identifier (Type 1 format)
            redundancy:
              type: str
              valid_values:
              - all-active
              - single-active
            designated_forwarder_election:
              type: dict
              keys:
                algorithm:
                  type: str
                  valid_values:
                  - modulus
                  - preference
                preference_value:
                  type: int
                  min: 0
                  max: 65535
                  convert_types:
                  - str
                  description: Preference_value is only used when "algorithm" is "preference"
                dont_preempt:
                  type: bool
                  description: Dont_preempt is only used when "algorithm" is "preference"
                hold_time:
                  type: int
                  convert_types:
                  - str
                subsequent_hold_time:
                  type: int
                  convert_types:
                  - str
                candidate_reachability_required:
                  type: bool
            mpls:
              type: dict
              keys:
                shared_index:
                  type: int
                  min: 1
                  max: 1024
                  convert_types:
                  - str
                tunnel_flood_filter_time:
                  type: int
                  convert_types:
                  - str
            route_target:
              type: str
              description: EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx
        encapsulation_dot1q_vlan:
          type: int
          convert_types:
          - str
          description: VLAN tag to configure on sub-interface
        encapsulation_vlan:
          type: dict
          keys:
            client:
              type: dict
              keys:
                dot1q:
                  type: dict
                  keys:
                    vlan:
                      type: int
                      convert_types:
                      - str
                      description: Client VLAN ID
                    outer:
                      type: int
                      convert_types:
                      - str
                      description: Client Outer VLAN ID
                    inner:
                      type: int
                      convert_types:
                      - str
                      description: Client Inner VLAN ID
                unmatched:
                  type: bool
            network:
              type: dict
              description: Network encapsulations are all optional and skipped if
                using client unmatched
              keys:
                dot1q:
                  type: dict
                  keys:
                    vlan:
                      type: int
                      convert_types:
                      - str
                      description: Network VLAN ID
                    outer:
                      type: int
                      convert_types:
                      - str
                      description: Network outer VLAN ID
                    inner:
                      type: int
                      convert_types:
                      - str
                      description: Network inner VLAN ID
                client:
                  type: bool
        vlan_id:
          type: int
          min: 1
          max: 4094
          convert_types:
          - str
        ip_address:
          type: str
          description: IPv4 address/mask
        ip_address_secondaries:
          type: list
          items:
            type: str
        ip_helpers:
          type: list
          primary_key: ip_helper
          convert_types:
          - dict
          items:
            type: dict
            keys:
              ip_helper:
                type: str
                required: true
              source_interface:
                type: str
                description: Source interface name
              vrf:
                type: str
                description: VRF name
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
        ipv6_address_link_local:
          type: str
          description: Link local IPv6 address/mask
        ipv6_nd_ra_disabled:
          type: bool
        ipv6_nd_managed_config_flag:
          type: bool
        ipv6_nd_prefixes:
          type: list
          primary_key: ipv6_prefix
          convert_types:
          - dict
          items:
            type: dict
            keys:
              ipv6_prefix:
                type: str
                required: true
              valid_lifetime:
                type: str
                convert_types:
                - int
                description: Infinite or lifetime in seconds
              preferred_lifetime:
                type: str
                convert_types:
                - int
                description: Infinite or lifetime in seconds
              no_autoconfig_flag:
                type: bool
        access_group_in:
          type: str
          description: Access list name
        access_group_out:
          type: str
          description: Access list name
        ipv6_access_group_in:
          type: str
          description: IPv6 access list name
        ipv6_access_group_out:
          type: str
          description: IPv6 access list name
        mac_access_group_in:
          type: str
          description: MAC access list name
        mac_access_group_out:
          type: str
          description: MAC access list name
        multicast:
          type: dict
          description: Boundaries can be either 1 ACL or a list of multicast IP address_range(s)/prefix
            but not combination of both
          keys:
            ipv4:
              type: dict
              keys:
                boundaries:
                  type: list
                  items:
                    type: dict
                    keys:
                      boundary:
                        type: str
                        description: ACL name or multicast IP subnet
                      out:
                        type: bool
                static:
                  type: bool
            ipv6:
              type: dict
              keys:
                boundaries:
                  type: list
                  items:
                    type: dict
                    keys:
                      boundary:
                        type: str
                        description: ACL name or multicast IP subnet
                static:
                  type: bool
        ospf_network_point_to_point:
          type: bool
        ospf_area:
          type: str
          convert_types:
          - int
        ospf_cost:
          type: int
          convert_types:
          - str
        ospf_authentication:
          type: str
          valid_values:
          - none
          - simple
          - message-digest
        ospf_authentication_key:
          type: str
          description: Encrypted password
        ospf_message_digest_keys:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                required: true
              hash_algorithm:
                type: str
                valid_values:
                - md5
                - sha1
                - sha256
                - sha384
                - sha512
              key:
                type: str
                description: Encrypted password
        pim:
          type: dict
          keys:
            ipv4:
              type: dict
              keys:
                dr_priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 429467295
                sparse_mode:
                  type: bool
        mac_security:
          type: dict
          keys:
            profile:
              type: str
        channel_group:
          type: dict
          keys:
            id:
              type: int
              convert_types:
              - str
            mode:
              type: str
              valid_values:
              - 'on'
              - active
              - passive
        isis_enable:
          type: str
          description: ISIS instance
        isis_passive:
          type: bool
        isis_metric:
          type: int
          convert_types:
          - str
        isis_network_point_to_point:
          type: bool
        isis_circuit_type:
          type: str
          valid_values:
          - level-1-2
          - level-1
          - level-2
        isis_hello_padding:
          type: bool
        isis_authentication_mode:
          type: str
          valid_values:
          - text
          - md5
        isis_authentication_key:
          type: str
          description: Type-7 encrypted password
        ptp:
          type: dict
          keys:
            enable:
              type: bool
            announce:
              type: dict
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
                timeout:
                  type: int
                  convert_types:
                  - str
            delay_req:
              type: int
              convert_types:
              - str
            delay_mechanism:
              type: str
              valid_values:
              - e2e
              - p2p
            sync_message:
              type: dict
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
            role:
              type: str
              valid_values:
              - master
              - dynamic
            vlan:
              type: str
              convert_types:
              - int
              description: VLAN can be 'all' or list of vlans as string
            transport:
              type: str
              valid_values:
              - ipv4
              - ipv6
              - layer2
        profile:
          type: str
          description: Interface profile
        storm_control:
          type: dict
          keys:
            all:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependant
            broadcast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependant
            multicast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependant
            unknown_unicast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependant
        logging:
          type: dict
          keys:
            event:
              type: dict
              keys:
                link_status:
                  type: bool
                congestion_drops:
                  type: bool
        lldp:
          type: dict
          keys:
            transmit:
              type: bool
            receive:
              type: bool
            ztp_vlan:
              type: int
              convert_types:
              - str
              description: ZTP vlan number
        trunk_private_vlan_secondary:
          type: bool
        pvlan_mapping:
          type: str
          convert_types:
          - int
          description: List of vlans as string
        vlan_translations:
          type: list
          items:
            type: dict
            keys:
              from:
                type: str
                convert_types:
                - int
                description: List of vlans as string (only one vlan if direction is
                  "both")
              to:
                type: int
                convert_types:
                - str
                description: VLAN ID
              direction:
                type: str
                valid_values:
                - in
                - out
                - both
                default: both
        dot1x:
          type: dict
          keys:
            port_control:
              type: str
              valid_values:
              - auto
              - force-authorized
              - force-unauthorized
            port_control_force_authorized_phone:
              type: bool
            reauthentication:
              type: bool
            pae:
              type: dict
              keys:
                mode:
                  type: str
                  valid_values:
                  - authenticator
            authentication_failure:
              type: dict
              keys:
                action:
                  type: str
                  valid_values:
                  - allow
                  - drop
                allow_vlan:
                  type: int
                  min: 1
                  max: 4094
                  convert_types:
                  - str
            host_mode:
              type: dict
              keys:
                mode:
                  type: str
                  valid_values:
                  - multi-host
                  - single-host
                multi_host_authenticated:
                  type: bool
            mac_based_authentication:
              type: dict
              keys:
                enabled:
                  type: bool
                always:
                  type: bool
                host_mode_common:
                  type: bool
            timeout:
              type: dict
              keys:
                idle_host:
                  type: int
                  min: 10
                  max: 65535
                  convert_types:
                  - str
                quiet_period:
                  type: int
                  min: 1
                  max: 65535
                  convert_types:
                  - str
                reauth_period:
                  type: str
                  convert_types:
                  - int
                  description: Value can be 60-4294967295 or 'server'
                reauth_timeout_ignore:
                  type: bool
                tx_period:
                  type: int
                  min: 1
                  max: 65535
                  convert_types:
                  - str
            reauthorization_request_limit:
              type: int
              min: 1
              max: 10
              convert_types:
              - str
        service_profile:
          type: str
          description: QOS profile
        shape:
          type: dict
          keys:
            rate:
              type: str
              description: 'Rate in kbps, pps or percent

                Supported options are platform dependent

                Examples:

                - "5000 kbps"

                - "1000 pps"

                - "20 percent"

                '
        qos:
          type: dict
          keys:
            trust:
              type: str
              valid_values:
              - dscp
              - cos
              - disabled
            dscp:
              type: int
              convert_types:
              - str
              description: DSCP value
            cos:
              type: int
              convert_types:
              - str
              description: COS value
        spanning_tree_bpdufilter:
          type: str
          convert_types:
          - bool
          valid_values:
          - enabled
          - disabled
          - 'True'
          - 'False'
          - 'true'
          - 'false'
        spanning_tree_bpduguard:
          type: str
          convert_types:
          - bool
          valid_values:
          - enabled
          - disabled
          - 'True'
          - 'False'
          - 'true'
          - 'false'
        spanning_tree_guard:
          type: str
          valid_values:
          - loop
          - root
          - disabled
        spanning_tree_portfast:
          type: str
          valid_values:
          - edge
          - network
        vmtracer:
          type: bool
        priority_flow_control:
          type: dict
          keys:
            enabled:
              type: bool
            priorities:
              type: list
              primary_key: priority
              items:
                type: dict
                keys:
                  priority:
                    type: int
                    min: 0
                    max: 7
                    convert_types:
                    - str
                  no_drop:
                    type: bool
        bfd:
          type: dict
          keys:
            echo:
              type: bool
            interval:
              type: int
              convert_types:
              - str
              description: Interval in milliseconds
            min_rx:
              type: int
              convert_types:
              - str
              description: Rate in milliseconds
            multiplier:
              type: int
              min: 3
              max: 50
              convert_types:
              - str
        service_policy:
          type: dict
          keys:
            pbr:
              type: dict
              keys:
                input:
                  type: str
                  description: Policy-map name
        mpls:
          type: dict
          keys:
            ip:
              type: bool
            ldp:
              type: dict
              keys:
                interface:
                  type: bool
                igp_sync:
                  type: bool
        lacp_timer:
          type: dict
          keys:
            mode:
              type: str
              valid_values:
              - fast
              - normal
            multiplier:
              type: int
              min: 3
              max: 3000
              convert_types:
              - str
        lacp_port_priority:
          type: int
          min: 0
          max: 65535
          convert_types:
          - str
        transceiver:
          type: dict
          keys:
            media:
              type: dict
              keys:
                override:
                  type: str
                  description: Transceiver type
        ip_proxy_arp:
          type: bool
        traffic_policy:
          type: dict
          keys:
            input:
              type: str
              description: Ingress traffic policy
            output:
              type: str
              description: Egress traffic policy
        peer:
          type: str
          description: Key only used for documentation or validation purposes
        peer_interface:
          type: str
          description: Key only used for documentation or validation purposes
        peer_type:
          type: str
          description: Key only used for documentation or validation purposes
        eos_cli:
          type: str
          description: Multiline EOS CLI rendered directly on the ethernet interface
            in the final EOS configuration
  event_handlers:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Event Handler Name
        action_type:
          type: str
          valid_values:
          - bash
          - increment
          - log
        action:
          type: str
          description: 'Command to execute

            '
        delay:
          type: int
          description: 'Event-handler delay in seconds

            '
        trigger:
          type: str
          description: 'Configure event trigger condition.

            '
          valid_values:
          - on-logging
        regex:
          type: str
          description: 'Regular expression to use for searching log messages. Required
            for on-logging trigger

            '
        asynchronous:
          type: bool
          default: false
          description: Set the action to be non-blocking.
  event_monitor:
    type: dict
    keys:
      enabled:
        type: bool
  flow_trackings:
    type: list
    primary_key: type
    items:
      type: dict
      keys:
        type:
          type: str
          valid_values:
          - sampled
          description: Flow Tracking Type - only 'sampled' supported for now
        sample:
          type: int
          convert_types:
          - str
          min: 1
          max: 4294967295
        trackers:
          type: list
          primary_key: name
          items:
            type: dict
            keys:
              name:
                type: str
                description: Tracker Name
              record_export:
                type: dict
                keys:
                  on_inactive_timeout:
                    type: int
                    convert_types:
                    - str
                    min: 3000
                    max: 900000
                    description: Flow record inactive export timeout in milliseconds
                  on_interval:
                    type: int
                    convert_types:
                    - str
                    min: 1000
                    max: 36000000
                    description: Flow record export interval in milliseconds
                  mpls:
                    type: bool
                    description: Export MPLS forwarding information
              exporters:
                type: list
                primary_key: name
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                      description: Exporter Name
                    collector:
                      type: dict
                      keys:
                        host:
                          type: str
                          description: Collector IPv4 address or IPv6 address or fully
                            qualified domain name
                        port:
                          type: int
                          description: Collector Port Number
                          min: 1
                          max: 65535
                          convert_types:
                          - str
                    format:
                      type: dict
                      keys:
                        ipfix_version:
                          type: int
                          convert_types:
                          - str
                    local_interface:
                      type: str
                      description: Local Source Interface
                    template_interval:
                      type: int
                      convert_types:
                      - str
                      min: 5000
                      max: 3600000
                      description: Template interval in milliseconds
        shutdown:
          type: bool
          default: false
  generate_default_config:
    type: bool
    default: true
    description: 'The `generate_default_config` knob allows to omit default EOS configuration.

      This can be useful when leveraging `eos_cli_config_gen` to generate configlets
      with CloudVision.


      The following commands will be omitted when `generate_default_config` is set
      to `false`:


      - RANCID Content Type

      - Hostname

      - Default configuration for `aaa`

      - Default configuration for `enable password`

      - Transceiver qsfp default mode

      - End of configuration delimiter'
  generate_device_documentation:
    type: bool
    default: true
  hardware:
    type: dict
    keys:
      access_list:
        type: dict
        keys:
          mechanism:
            type: str
            valid_values:
            - algomatch
            - none
            - tcam
      speed_groups:
        type: list
        primary_key: speed_group
        convert_types:
        - dict
        items:
          type: dict
          keys:
            speed_group:
              type: int
              convert_types:
              - str
              required: true
            serdes:
              type: str
              description: Serdes speed like "10g" or "25g"
  hardware_counters:
    type: dict
    keys:
      features:
        type: list
        items:
          type: dict
  interface_defaults:
    type: dict
    keys:
      ethernet:
        type: dict
        keys:
          shutdown:
            type: bool
      mtu:
        type: int
        convert_types:
        - str
  interface_groups:
    type: list
    display_name: Maintenance Interface Groups
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Interface-Group name
        interfaces:
          type: list
          items:
            type: str
            description: Interface Name
        bgp_maintenance_profiles:
          type: list
          items:
            type: str
            description: Name of BGP Maintenance Profile
        interface_maintenance_profiles:
          type: list
          items:
            type: str
            description: Name of Interface Maintenance Profile
  interface_profiles:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Interface-Profile Name
        commands:
          type: list
          required: true
          items:
            type: str
            description: 'EOS CLI interface command

              Example: "switchport mode access"'
  ip_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: IP Extended Access-Lists (improved model)
    description: 'AVD currently supports 2 different data models for extended ACLs:


      - The legacy `access_lists` data model, for compatibility with existing deployments

      - The improved `ip_access_lists` data model, for access to more EOS features


      Both data models can coexists without conflicts, as different keys are used:
      `access_lists` vs `ip_access_lists`.

      Access list names must be unique.


      The improved data model has a more sophisticated design documented below:

      '
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Access-list Name
        counters_per_entry:
          type: bool
        entries:
          type: list
          description: ACL Entries
          items:
            type: dict
            keys:
              sequence:
                type: int
                convert_types:
                - str
                description: 'ACL entry sequence number.

                  '
              remark:
                type: str
                description: 'Comment up to 100 characters.

                  If remark is defined, other keys in acl entry will be ignored.

                  '
              action:
                type: str
                valid_values:
                - permit
                - deny
                description: 'ACL action.

                  Required for standard entry.

                  '
              protocol:
                type: str
                description: 'ip, tcp, udp, icmp or other protocol name or number.

                  Required for standard entry.

                  '
              source:
                type: str
                description: 'any, A.B.C.D/E or A.B.C.D.

                  A.B.C.D without a mask means host.

                  Required for standard entry.

                  '
              source_ports_match:
                type: str
                valid_values:
                - eq
                - gt
                - lt
                - neq
                - range
                default: eq
              source_ports:
                type: list
                items:
                  type: str
                  convert_types:
                  - int
                  description: TCP/UDP source port name or number.
              destination:
                type: str
                description: 'any, A.B.C.D/E or A.B.C.D.

                  A.B.C.D without a mask means host.

                  Required for standard entry.

                  '
              destination_ports_match:
                type: str
                valid_values:
                - eq
                - gt
                - lt
                - neq
                - range
                default: eq
              destination_ports:
                type: list
                items:
                  type: str
                  convert_types:
                  - int
                  description: TCP/UDP destination port name or number.
              tcp_flags:
                type: list
                items:
                  type: str
                  description: TCP Flag Name
              fragments:
                type: bool
                description: Match non-head fragment packets.
              log:
                type: bool
                description: Log matches against this rule.
              ttl:
                type: int
                description: TTL value
                convert_types:
                - str
                min: 0
                max: 254
              ttl_match:
                type: str
                valid_values:
                - eq
                - gt
                - lt
                - neq
                default: eq
              icmp_type:
                type: str
                convert_types:
                - int
                description: Message type name/number for ICMP packets.
              icmp_code:
                type: str
                convert_types:
                - int
                description: Message code for ICMP packets.
              nexthop_group:
                type: str
                description: nexthop-group name.
              tracked:
                type: bool
                description: Match packets in existing ICMP/UDP/TCP connections.
              dscp:
                type: str
                convert_types:
                - int
                description: DSCP value or name.
              vlan_number:
                type: int
                convert_types:
                - str
              vlan_inner:
                type: bool
                default: false
              vlan_mask:
                type: str
                description: 0x000-0xFFF VLAN mask.
  ip_access_lists_max_entries:
    type: int
    convert_types:
    - str
    description: 'The `ip_access_lists` data model allows to limit the number of ACL
      entries that AVD is allowed to generate by defining `ip_access_lists_max_entries`.

      Only normal entries under `ip_access_lists` will be counted, remarks will be
      ignored.

      If the number is above the limit, the playbook will fail. This provides a simplified
      control over hardware utilization.

      The numbers must be based on the hardware tests and AVD does not provide any
      guidance. Note that other EOS features may use the same hardware resources and
      affect the supported scale.'
  ip_community_lists:
    type: list
    secondary_key: entries
    primary_key: name
    convert_types:
    - dict
    display_name: IP Community Lists
    description: "AVD supports 2 different data models for community lists:\n\n- The
      legacy `community_lists` data model that can be used for compatibility with
      the existing deployments.\n- The improved `ip_community_lists` data model.\n\nBoth
      data models can coexist without conflicts, as different keys are used: `community_lists`
      vs `ip_community_lists`.\nCommunity list names must be unique.\n\nThe improved
      data model has a better design documented below:\n\ncommunities and regexp MUST
      not be configured together in the same entry\npossible community strings are
      (case insensitive):\n - GSHUT\n - internet\n - local-as\n - no-advertise\n -
      no-export\n - <1-4294967040>\n - aa:nn\n"
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: IP Community-list Name
        entries:
          type: list
          required: true
          items:
            type: dict
            keys:
              action:
                type: str
                required: true
                valid_values:
                - permit
                - deny
              communities:
                type: list
                items:
                  type: str
                description: If defined, a standard community-list will be configured
              regexp:
                type: str
                description: 'Regular Expression

                  If defined, a regex community-list will be configured'
  ip_dhcp_relay:
    type: dict
    keys:
      information_option:
        type: bool
        description: Insert Option-82 information
  ip_domain_lookup:
    type: dict
    keys:
      source_interfaces:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: 'Source Interface

                '
            vrf:
              type: str
  ip_extcommunity_lists:
    type: list
    primary_key: name
    secondary_key: entries
    convert_types:
    - dict
    display_name: IP Extended Community Lists
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Community-list Name
        entries:
          type: list
          required: true
          items:
            type: dict
            keys:
              type:
                type: str
                required: true
                valid_values:
                - permit
                - deny
              extcommunities:
                type: str
                required: true
                description: 'Communities as string

                  Example: "65000:65000"'
  ip_extcommunity_lists_regexp:
    type: list
    primary_key: name
    secondary_key: entries
    convert_types:
    - dict
    display_name: IP Extended Community Lists RegExp
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Community-list Name
        entries:
          type: list
          required: true
          items:
            type: dict
            keys:
              type:
                type: str
                required: true
                valid_values:
                - permit
                - deny
              regexp:
                type: str
                required: true
                description: Regular Expression
  ip_hardware:
    type: dict
    keys:
      fib:
        type: dict
        keys:
          optimize:
            type: dict
            keys:
              prefixes:
                type: dict
                keys:
                  profile:
                    type: str
                    valid_values:
                    - internet
                    - urpf-internet
  ip_http_client_source_interfaces:
    type: list
    items:
      type: dict
      keys:
        name:
          description: Interface Name
          type: str
        vrf:
          type: str
  ip_icmp_redirect:
    type: bool
  ip_igmp_snooping:
    type: dict
    keys:
      globally_enabled:
        type: bool
        default: true
      robustness_variable:
        type: int
        convert_types:
        - str
      restart_query_interval:
        type: int
        convert_types:
        - str
      interface_restart_query:
        type: int
        convert_types:
        - str
      fast_leave:
        type: bool
      querier:
        type: dict
        keys:
          enabled:
            type: bool
          address:
            type: str
            description: IP Address
          query_interval:
            type: int
            convert_types:
            - str
          max_response_time:
            type: int
            convert_types:
            - str
          last_member_query_interval:
            type: int
            convert_types:
            - str
          last_member_query_count:
            type: int
            convert_types:
            - str
          startup_query_interval:
            type: int
            convert_types:
            - str
          startup_query_count:
            type: int
            convert_types:
            - str
          version:
            type: int
            convert_types:
            - str
      proxy:
        type: bool
      vlans:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: int
              convert_types:
              - str
              required: true
              description: VLAN ID
            enabled:
              type: bool
            querier:
              type: dict
              keys:
                enabled:
                  type: bool
                address:
                  type: str
                  description: IP Address
                query_interval:
                  type: int
                  convert_types:
                  - str
                max_response_time:
                  type: int
                  convert_types:
                  - str
                last_member_query_interval:
                  type: int
                  convert_types:
                  - str
                last_member_query_count:
                  type: int
                  convert_types:
                  - str
                startup_query_interval:
                  type: int
                  convert_types:
                  - str
                startup_query_count:
                  type: int
                  convert_types:
                  - str
                version:
                  type: int
                  convert_types:
                  - str
            max_groups:
              type: int
              convert_types:
              - str
            fast_leave:
              type: bool
            proxy:
              type: bool
              description: Global proxy settings should be enabled before enabling
                per-vlan
  ip_radius_source_interfaces:
    type: list
    items:
      type: dict
      keys:
        name:
          type: str
          description: Interface Name
        vrf:
          type: str
          description: VRF Name
  ip_routing:
    type: bool
  ip_routing_ipv6_interfaces:
    type: bool
  ip_ssh_client_source_interfaces:
    type: list
    items:
      type: dict
      keys:
        name:
          description: Interface Name
          type: str
        vrf:
          type: str
          default: default
  ip_tacacs_source_interfaces:
    type: list
    display_name: IP Tacacs Source Interfaces
    items:
      type: dict
      keys:
        name:
          type: str
          description: Interface name
        vrf:
          type: str
          display_name: VRF
  ip_virtual_router_mac_address:
    type: str
    description: MAC address (hh:hh:hh:hh:hh:hh)
  ipv6_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    display_name: IPv6 Extended Access-Lists
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: IPv6 Access-list Name
        counters_per_entry:
          type: bool
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                required: true
                description: Sequence ID
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string

                  Example: "deny ipv6 any any"'
  ipv6_hardware:
    type: dict
    keys:
      fib:
        type: dict
        keys:
          optimize:
            type: dict
            keys:
              prefixes:
                type: dict
                keys:
                  profile:
                    type: str
                    description: Pre-defined profile 'internet' or user-defined profile
                      name
  ipv6_icmp_redirect:
    type: bool
  ipv6_prefix_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Prefix-list Name
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                required: true
                description: Sequence ID
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string

                  Example: "permit 1b11:3a00:22b0:0082::/64 eq 128"'
  ipv6_standard_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Access-list Name
        counters_per_entry:
          type: bool
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                required: true
                description: Sequence ID
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string

                  Example: "deny ipv6 any any"'
  ipv6_static_routes:
    type: list
    items:
      type: dict
      keys:
        vrf:
          type: str
        destination_address_prefix:
          type: str
          description: IPv6 Network/Mask
        interface:
          type: str
        gateway:
          type: str
          description: IPv6 Address
        track_bfd:
          type: bool
          description: Track next-hop using BFD
        distance:
          type: int
          convert_types:
          - str
          min: 1
          max: 255
        tag:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
        name:
          type: str
          description: Description
        metric:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
  ipv6_unicast_routing:
    type: bool
  lacp:
    type: dict
    description: Set Link Aggregation Control Protocol (LACP) parameters.
    keys:
      port_id:
        type: dict
        description: LACP port-ID range configuration.
        keys:
          range:
            type: dict
            keys:
              begin:
                type: int
                description: Minimum LACP port-ID range.
              end:
                type: int
                description: Maximum LACP port-ID range.
      rate_limit:
        type: dict
        description: Set LACPDU rate limit options.
        keys:
          default:
            type: bool
            description: Enable LACPDU rate limiting by default on all ports.
      system_priority:
        type: int
        description: Set local system LACP priority.
        min: 0
        max: 65535
  link_tracking_groups:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
        links_minimum:
          type: int
          min: 1
          max: 100000
        recovery_delay:
          type: int
          min: 0
          max: 3600
  lldp:
    type: dict
    keys:
      timer:
        type: int
      timer_reinitialization:
        type: str
      holdtime:
        type: int
      management_address:
        type: str
      vrf:
        type: str
      receive_packet_tagged_drop:
        type: str
      tlvs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              valid_values:
              - link-aggregation
              - management-address
              - max-frame-size
              - med
              - port-description
              - port-vlan
              - power-via-mdi
              - system-capabilities
              - system-description
              - system-name
              - vlan-name
            transmit:
              type: bool
      run:
        type: bool
  load_interval:
    type: dict
    keys:
      default:
        type: int
        description: Default load interval in seconds
        convert_types:
        - str
  local_users:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          description: Username
          type: str
          required: true
        disabled:
          type: bool
          description: 'If true, the user will be removed and all other settings are
            ignored.

            Useful for removing the default "admin" user.

            '
        privilege:
          type: int
          convert_types:
          - str
          min: 0
          max: 15
          description: 'Initial privilege level with local EXEC authorization.

            '
        role:
          type: str
          description: 'EOS RBAC Role to be assigned to the user such as "network-admin"
            or "network-operator"

            '
        sha512_password:
          type: str
          description: 'SHA512 Hash of Password

            Must be the hash of the password. By default EOS salts the password with
            the username, so the simplest is to generate the hash on an EOS device
            using the same username.

            '
        no_password:
          type: bool
          description: 'If set a password will not be configured for this user. "sha512_password"
            MUST not be defined for this user.

            '
        ssh_key:
          type: str
  logging:
    type: dict
    keys:
      console:
        type: str
        valid_values:
        - debugging
        - informational
        - notifications
        - warnings
        - errors
        - critical
        - alerts
        - emergencies
        - disabled
        description: 'Console logging severity level

          '
      monitor:
        type: str
        valid_values:
        - debugging
        - informational
        - notifications
        - warnings
        - errors
        - critical
        - alerts
        - emergencies
        - disabled
        description: 'Monitor logging severity level

          '
      buffered:
        type: dict
        keys:
          size:
            type: int
            convert_types:
            - str
            min: 10
            max: 2147483647
          level:
            type: str
            valid_values:
            - alerts
            - critical
            - debugging
            - emergencies
            - errors
            - informational
            - notifications
            - warnings
            - disabled
            description: 'Buffer logging severity level

              '
      trap:
        type: str
        valid_values:
        - alerts
        - critical
        - debugging
        - emergencies
        - errors
        - informational
        - notifications
        - system
        - warnings
        - disabled
        description: 'Trap logging severity level

          '
      synchronous:
        type: dict
        keys:
          level:
            type: str
            valid_values:
            - alerts
            - all
            - critical
            - debugging
            - emergencies
            - errors
            - informational
            - notifications
            - warnings
            - disabled
            description: 'Synchronous logging severity level

              '
            default: critical
      format:
        type: dict
        keys:
          timestamp:
            type: str
            valid_values:
            - high-resolution
            - traditional
            - traditional timezone
            - traditional year
            - traditional timezone year
            - traditional year timezone
            description: Timestamp format
          hostname:
            type: str
            valid_values:
            - fqdn
            - ipv4
            description: Hostname format
          sequence_numbers:
            type: bool
            description: 'Add sequence numbers to log messages

              '
      facility:
        type: str
        valid_values:
        - auth
        - cron
        - daemon
        - kern
        - local0
        - local1
        - local2
        - local3
        - local4
        - local5
        - local6
        - local7
        - lpr
        - mail
        - news
        - sys9
        - sys10
        - sys11
        - sys12
        - sys13
        - sys14
        - syslog
        - user
        - uucp
      source_interface:
        type: str
        description: Source Interface Name
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: VRF name
            source_interface:
              type: str
              description: Source interface name
            hosts:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    required: true
                    description: Syslog server name
                  protocol:
                    type: str
                    valid_values:
                    - tcp
                    - udp
                    default: udp
                  ports:
                    type: list
                    items:
                      type: int
                      convert_types:
                      - str
      policy:
        type: dict
        keys:
          match:
            type: dict
            keys:
              match_lists:
                type: list
                primary_key: name
                convert_types:
                - dict
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                      required: true
                      description: Match list
                    action:
                      type: str
                      valid_values:
                      - discard
  loopback_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: Loopback interface name e.g. "Loopback0"
          required: true
        description:
          type: str
        shutdown:
          type: bool
        vrf:
          type: str
          description: VRF name
        ip_address:
          type: str
          description: IPv4_address/Mask
        ip_address_secondaries:
          type: list
          items:
            type: str
            description: IPv4_address/Mask
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          description: IPv6_address/Mask
        ip_proxy_arp:
          type: bool
        ospf_area:
          type: str
          convert_types:
          - int
        mpls:
          type: dict
          keys:
            ldp:
              type: dict
              keys:
                interface:
                  type: bool
        isis_enable:
          type: str
          description: ISIS instance name
        isis_passive:
          type: bool
        isis_metric:
          type: int
          convert_types:
          - str
        isis_network_point_to_point:
          type: bool
        node_segment:
          type: dict
          keys:
            ipv4_index:
              type: int
              convert_types:
              - str
            ipv6_index:
              type: int
              convert_types:
              - str
        eos_cli:
          type: str
          description: EOS CLI rendered directly on the loopback interface in the
            final EOS configuration
  mac_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: MAC Access-list Name
        counters_per_entry:
          type: bool
        entries:
          type: list
          items:
            type: dict
            keys:
              sequence:
                type: int
                convert_types:
                - str
              action:
                type: str
  mac_address_table:
    type: dict
    keys:
      aging_time:
        type: int
        description: Aging time in seconds
        convert_types:
        - str
      notification_host_flap:
        type: dict
        keys:
          logging:
            type: bool
          detection:
            type: dict
            keys:
              window:
                type: int
                min: 2
                max: 300
                convert_types:
                - str
              moves:
                type: int
                min: 2
                max: 10
                convert_types:
                - str
  mac_security:
    type: dict
    display_name: MAC Security (MACsec)
    keys:
      license:
        type: dict
        required: true
        keys:
          license_name:
            type: str
            required: true
          license_key:
            type: str
            required: true
      fips_restrictions:
        type: bool
        required: true
      profiles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: Profile-Name
            cipher:
              type: str
              valid_values:
              - aes128-gcm
              - aes128-gcm-xpn
              - aes256-gcm
              - aes256-gcm-xpn
            connection_keys:
              type: list
              primary_key: id
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  id:
                    type: str
                  encrypted_key:
                    type: str
                  fallback:
                    type: bool
            mka:
              type: dict
              keys:
                key_server_priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 255
                session:
                  type: dict
                  keys:
                    rekey_period:
                      type: int
                      convert_types:
                      - str
                      min: 30
                      max: 100000
                      description: Rekey period in seconds
            sci:
              type: bool
            l2_protocols:
              type: dict
              keys:
                ethernet_flow_control:
                  type: dict
                  keys:
                    mode:
                      type: str
                      required: true
                      valid_values:
                      - encrypt
                      - bypass
                lldp:
                  type: dict
                  keys:
                    mode:
                      type: str
                      required: true
                      valid_values:
                      - bypass
                      - bypass unauthorized
  maintenance:
    type: dict
    display_name: Maintenance Mode
    keys:
      default_interface_profile:
        type: str
        description: 'Name of default Interface Profile

          '
      default_bgp_profile:
        type: str
        description: 'Name of default BGP Profile

          '
      default_unit_profile:
        type: str
        description: 'Name of default Unit Profile

          '
      interface_profiles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
            rate_monitoring:
              type: dict
              keys:
                load_interval:
                  type: int
                  convert_types:
                  - str
                  description: 'Load Interval in Seconds

                    '
                threshold:
                  type: int
                  convert_types:
                  - str
                  description: 'Threshold in kbps

                    '
            shutdown:
              type: dict
              keys:
                max_delay:
                  type: int
                  convert_types:
                  - str
                  description: 'Max delay in seconds

                    '
      bgp_profiles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: BGP Profile Name
            initiator:
              type: dict
              keys:
                route_map_inout:
                  type: str
                  description: Route Map
      unit_profiles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: Unit Profile Name
            on_boot:
              type: dict
              keys:
                duration:
                  type: int
                  convert_types:
                  - str
                  min: 300
                  max: 3600
                  description: 'On-boot in seconds

                    '
      units:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: Unit Name
            quiesce:
              type: bool
            profile:
              type: str
              description: 'Name of Unit Profile

                '
            groups:
              type: dict
              keys:
                bgp_groups:
                  type: list
                  items:
                    type: str
                    description: 'Name of BGP Group

                      '
                interface_groups:
                  type: list
                  items:
                    type: str
                    description: Name of Interface Group
  management_api_gnmi:
    type: dict
    keys:
      provider:
        type: str
        default: eos-native
      transport:
        type: dict
        keys:
          grpc:
            type: list
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Transport name
                ssl_profile:
                  type: str
                  description: SSL profile name
                vrf:
                  type: str
                  description: VRF name is optional
                notification_timestamp:
                  type: str
                  valid_values:
                  - send-time
                  - last-change-time
                  description: 'Per the GNMI specification, the default timestamp
                    field of a notification message is set to be

                    the time at which the value of the underlying data source changes
                    or when the reported event takes place.

                    In order to facilitate integration in legacy environments oriented
                    around polling style operations,

                    an option to support overriding the timestamp field to the send-time
                    is available from EOS 4.27.0F.

                    '
                ip_access_group:
                  type: str
                  description: ACL name
      enable_vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        description: 'Enable VRFs will be deprecated in AVD v4.0.

          These should not be mixed with the new keys above.

          '
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name
            access_group:
              type: str
              description: Standard IPv4 ACL name
      octa:
        type: dict
        description: 'Octa key will be deprecated in AVD v4.0.

          These should not be mixed with the new keys above.

          Octa activates `eos-native` provider and it is the only provider currently
          supported by EOS.'
  management_api_http:
    type: dict
    keys:
      enable_http:
        type: bool
      enable_https:
        type: bool
      https_ssl_profile:
        description: SSL Profile Name
        type: str
      default_services:
        type: bool
        description: 'Enable default services: capi-doc and tapagg'
      enable_vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              description: VRF Name
              type: str
              required: true
            access_group:
              description: Standard IPv4 ACL name
              type: str
            ipv6_access_group:
              description: Standard IPv6 ACL name
              type: str
      protocol_https_certificate:
        type: dict
        keys:
          certificate:
            type: str
            description: Name of certificate; private key must also be specified
          private_key:
            type: str
            description: Name of private key; certificate must also be specified
  management_api_models:
    type: dict
    keys:
      providers:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              valid_values:
              - sysdb
              - smash
            paths:
              type: list
              items:
                type: dict
                keys:
                  path:
                    type: str
                  disabled:
                    type: bool
                    default: false
  management_console:
    type: dict
    keys:
      idle_timeout:
        type: int
        min: 0
        max: 86400
        convert_types:
        - str
  management_cvx:
    type: dict
    keys:
      shutdown:
        type: bool
      server_hosts:
        type: list
        items:
          type: str
          description: IP or hostname
      source_interface:
        type: str
        description: Interface name
  management_defaults:
    type: dict
    keys:
      secret:
        type: dict
        keys:
          hash:
            type: str
            valid_values:
            - md5
            - sha512
  management_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Management Interface Name
        description:
          type: str
        shutdown:
          type: bool
        mtu:
          type: int
        vrf:
          type: str
          description: VRF Name
        ip_address:
          type: str
          description: IPv4_address/Mask
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          description: IPv6_address/Mask
        type:
          type: str
          valid_values:
          - oob
          - inband
          default: oob
          description: For documentation purposes only
        gateway:
          type: str
          description: IPv4 address of default gateway in management VRF
        ipv6_gateway:
          type: str
          description: IPv6 address of default gateway in management VRF
        mac_address:
          type: str
          description: MAC address
  management_security:
    type: dict
    keys:
      entropy_source:
        type: str
      password:
        type: dict
        keys:
          minimum_length:
            type: int
            min: 1
            max: 32
            convert_types:
            - str
          encryption_key_common:
            type: bool
          encryption_reversible:
            type: str
      ssl_profiles:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
            tls_versions:
              type: str
              description: "List of allowed TLS versions as string\nExamples:\n  -
                \"1.0\"\n  - \"1.0 1.1\"\n"
              convert_types:
              - float
            cipher_list:
              type: str
              description: 'cipher_list syntax follows the openssl cipher strings
                format.

                Colon (:) separated list of allowed ciphers as a string

                '
            certificate:
              type: dict
              keys:
                file:
                  type: str
                key:
                  type: str
  management_ssh:
    type: dict
    keys:
      access_groups:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Standard ACL Name
            vrf:
              type: str
              description: VRF Name
      ipv6_access_groups:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Standard ACL Name
            vrf:
              type: str
              description: VRF Name
      idle_timeout:
        type: int
        convert_types:
        - str
        min: 0
        max: 86400
        description: Idle timeout in minutes
      cipher:
        description: Cryptographic ciphers for SSH to use
        type: list
        items:
          type: str
      key_exchange:
        description: Cryptographic key exchange methods for SSH to use
        type: list
        items:
          type: str
      mac:
        description: Cryptographic MAC algorithms for SSH to use
        type: list
        items:
          type: str
      hostkey:
        type: dict
        keys:
          server:
            description: SSH host key settings
            type: list
            items:
              type: str
      enable:
        description: Enable SSH daemon
        type: bool
      connection:
        type: dict
        keys:
          limit:
            type: int
            convert_types:
            - str
            min: 1
            max: 100
            description: Maximum total number of SSH sessions to device
          per_host:
            type: int
            convert_types:
            - str
            min: 1
            max: 20
            description: Maximum number of SSH sessions to device from a single host
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: VRF Name
            enable:
              description: Enable SSH in VRF
              type: bool
      log_level:
        type: str
        description: SSH daemon log level
  management_tech_support:
    type: dict
    keys:
      policy_show_tech_support:
        type: dict
        keys:
          exclude_commands:
            type: list
            items:
              type: dict
              keys:
                command:
                  type: str
                  description: Command to exclude from tech-support
                type:
                  type: str
                  valid_values:
                  - text
                  - json
                  default: text
                  description: The supported values for type are platform dependent.
          include_commands:
            type: list
            items:
              type: dict
              keys:
                command:
                  type: str
                  description: Command to include in tech-support
  match_list_input:
    type: dict
    display_name: Match Lists
    keys:
      string:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: Match-list Name
            sequence_numbers:
              type: list
              required: true
              primary_key: sequence
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  sequence:
                    type: int
                    required: true
                    description: Sequence ID
                    convert_types:
                    - str
                  match_regex:
                    type: str
                    required: true
                    description: Regular Expression
  mcs_client:
    type: dict
    keys:
      shutdown:
        type: bool
      cvx_secondary:
        type: dict
        keys:
          name:
            type: str
          shutdown:
            type: bool
          server_hosts:
            type: list
            items:
              type: str
              description: IP or hostname
  mlag_configuration:
    type: dict
    display_name: Multi-Chassis Link Aggregation (MLAG) Configuration
    keys:
      domain_id:
        type: str
      heartbeat_interval:
        type: int
        description: Heartbeat interval in milliseconds
        convert_types:
        - str
      local_interface:
        description: Local Interface Name
        type: str
      peer_address:
        type: str
        description: IPv4 Address
      peer_address_heartbeat:
        type: dict
        keys:
          peer_ip:
            type: str
            description: IPv4 Address
          vrf:
            description: VRF Name
            type: str
      dual_primary_detection_delay:
        type: int
        description: Delay in seconds
        min: 0
        max: 86400
        convert_types:
        - str
      dual_primary_recovery_delay_mlag:
        type: int
        description: Delay in seconds
        min: 0
        max: 86400
        convert_types:
        - str
      dual_primary_recovery_delay_non_mlag:
        type: int
        description: Delay in seconds
        min: 0
        max: 86400
        convert_types:
        - str
      peer_link:
        description: Port-Channel interface name
        type: str
      reload_delay_mlag:
        type: str
        description: Delay in seconds <0-86400> or 'infinity'
        convert_types:
        - int
      reload_delay_non_mlag:
        type: str
        description: Delay in seconds <0-86400> or 'infinity'
        convert_types:
        - int
  monitor_connectivity:
    type: dict
    keys:
      shutdown:
        type: bool
      interval:
        type: int
        convert_types:
        - str
      interface_sets:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
            interfaces:
              type: str
              description: 'Interface range(s) should be of same type, Ethernet, Loopback,
                Management etc.

                Multiple interface ranges can be specified separated by ","

                '
      local_interfaces:
        type: str
      hosts:
        type: list
        items:
          type: dict
          keys:
            name:
              description: Host Name
              type: str
            description:
              type: str
            ip:
              type: str
            local_interfaces:
              type: str
            url:
              type: str
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              description: VRF Name
              type: str
            description:
              type: str
            interface_sets:
              type: list
              items:
                type: dict
                keys:
                  name:
                    type: str
                  interfaces:
                    type: str
            local_interfaces:
              type: str
            hosts:
              type: list
              items:
                type: dict
                keys:
                  name:
                    description: Host name
                    type: str
                  description:
                    type: str
                  ip:
                    type: str
                  local_interfaces:
                    type: str
                  url:
                    type: str
  monitor_sessions:
    type: list
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Session Name
        sources:
          type: list
          items:
            type: dict
            keys:
              name:
                type: str
                description: Interface name, range or comma separated list
              direction:
                type: str
                valid_values:
                - rx
                - tx
                - both
              access_group:
                type: dict
                keys:
                  type:
                    type: str
                    valid_values:
                    - ip
                    - ipv6
                    - mac
                  name:
                    description: ACL Name
                    type: str
                  priority:
                    type: int
                    convert_types:
                    - str
        destinations:
          type: list
          items:
            type: str
            description: '''cpu'' or interface name, range or comma separated list'
        encapsulation_gre_metadata_tx:
          type: bool
        header_remove_size:
          type: int
          description: Number of bytes to remove from header
          convert_types:
          - str
        access_group:
          type: dict
          keys:
            type:
              type: str
              valid_values:
              - ip
              - ipv6
              - mac
            name:
              description: ACL Name
              type: str
        rate_limit_per_ingress_chip:
          type: str
          description: "Ratelimit and unit as string.\nExamples:\n  \"100000 bps\"\n
            \ \"100 kbps\"\n  \"10 mbps\"\n"
        rate_limit_per_egress_chip:
          type: str
          description: "Ratelimit and unit as string.\nExamples:\n  \"100000 bps\"\n
            \ \"100 kbps\"\n  \"10 mbps\"\n"
        sample:
          type: int
          convert_types:
          - str
        truncate:
          type: dict
          keys:
            enabled:
              type: bool
            size:
              type: int
              description: Size in bytes
              convert_types:
              - str
  mpls:
    type: dict
    keys:
      ip:
        type: bool
      ldp:
        type: dict
        keys:
          interface_disabled_default:
            type: bool
          router_id:
            type: str
          shutdown:
            type: bool
          transport_address_interface:
            description: Interface Name
            type: str
  name_server:
    type: dict
    keys:
      source:
        type: dict
        keys:
          vrf:
            description: VRF Name
            type: str
      nodes:
        type: list
        items:
          type: str
  ntp:
    type: dict
    keys:
      local_interface:
        type: dict
        keys:
          name:
            type: str
            description: Source interface
          vrf:
            type: str
            description: VRF name
      servers:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: IP or hostname e.g., 2.2.2.55, ie.pool.ntp.org
            burst:
              type: bool
            iburst:
              type: bool
            key:
              type: int
              min: 1
              max: 65535
              convert_types:
              - str
            local_interface:
              type: str
              description: Source interface
            maxpoll:
              type: int
              min: 3
              max: 17
              convert_types:
              - str
              description: Value of maxpoll between 3 - 17 (Logarithmic)
            minpoll:
              type: int
              min: 3
              max: 17
              convert_types:
              - str
              description: Value of minpoll between 3 - 17 (Logarithmic)
            preferred:
              type: bool
            version:
              type: int
              min: 1
              max: 4
              convert_types:
              - str
            vrf:
              type: str
              description: VRF name
      authenticate:
        type: bool
      authenticate_servers_only:
        type: bool
      authentication_keys:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: int
              min: 1
              max: 65534
              convert_types:
              - str
              description: Key identifier
            hash_algorithm:
              type: str
              valid_values:
              - md5
              - sha1
            key:
              type: str
              description: Obfuscated key
            key_type:
              type: str
              convert_types:
              - int
              valid_values:
              - '0'
              - '7'
              - 8a
      trusted_keys:
        type: str
        description: List of trusted-keys as string ex. 10-12,15
  patch_panel:
    type: dict
    keys:
      patches:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
            enabled:
              type: bool
            connectors:
              type: list
              primary_key: id
              convert_types:
              - dict
              min_length: 2
              max_length: 2
              description: Must have exactly two connectors to a patch of which at
                least one must be of type "interface"
              items:
                type: dict
                keys:
                  id:
                    type: str
                    convert_types:
                    - int
                    required: true
                  type:
                    type: str
                    valid_values:
                    - interface
                    - pseudowire
                    required: true
                  endpoint:
                    type: str
                    description: 'String with relevant endpoint depending on type.

                      Examples:

                      - "Ethernet1"

                      - "Ethernet1 dot1q vlan 123"

                      - "bgp vpws TENANT_A pseudowire VPWS_PW_1"

                      - "ldp LDP_PW_1"

                      '
                    required: true
  peer_filters:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Peer-filter Name
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                required: true
                description: Sequence ID
                convert_types:
                - str
              match:
                type: str
                required: true
                description: 'Match as string

                  Example: "as-range 1-100 result accept"'
  platform:
    type: dict
    keys:
      trident:
        type: dict
        keys:
          forwarding_table_partition:
            type: str
            convert_types:
            - int
      sand:
        type: dict
        description: Most of the platform sand options are hardware dependant and
          optional
        keys:
          qos_maps:
            type: list
            items:
              type: dict
              keys:
                traffic_class:
                  type: int
                  min: 0
                  max: 7
                  convert_types:
                  - str
                to_network_qos:
                  type: int
                  min: 0
                  max: 63
                  convert_types:
                  - str
          lag:
            type: dict
            keys:
              hardware_only:
                type: bool
              mode:
                type: str
          forwarding_mode:
            type: str
          multicast_replication:
            type: dict
            keys:
              default:
                type: str
                valid_values:
                - ingress
                - egress
  policy_maps:
    type: dict
    keys:
      pbr:
        type: list
        description: PBR Policy-Maps
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Policy-Map Name
            classes:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Class Name
                  index:
                    type: int
                    convert_types:
                    - str
                  drop:
                    description: '''drop'' and ''set'' are mutually exclusive'
                    type: bool
                  set:
                    description: 'Set Nexthop

                      ''drop'' and ''set'' are mutually exclusive

                      '
                    type: dict
                    keys:
                      nexthop:
                        type: dict
                        keys:
                          ip_address:
                            type: str
                            description: IPv4 or IPv6 Address
                          recursive:
                            type: bool
      qos:
        type: list
        description: QOS Policy-Maps
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Policy-Map Name
            classes:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Class Name
                  set:
                    type: dict
                    keys:
                      cos:
                        type: int
                        convert_types:
                        - str
                      dscp:
                        type: str
                        convert_types:
                        - int
                      traffic_class:
                        type: int
                        convert_types:
                        - str
                      drop_precedence:
                        type: int
                        convert_types:
                        - str
  port_channel_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
        description:
          type: str
        logging:
          type: dict
          keys:
            event:
              type: dict
              keys:
                link_status:
                  type: bool
        shutdown:
          type: bool
        l2_mtu:
          type: int
          convert_types:
          - str
          description: '"l2_mtu" should only be defined for platforms supporting the
            "l2 mtu" CLI

            '
        vlans:
          type: str
          convert_types:
          - int
          description: 'List of switchport vlans as string

            For a trunk port this would be a range like "1-200,300"

            For an access port this would be a single vlan "123"

            '
        snmp_trap_link_change:
          type: bool
        type:
          type: str
          valid_values:
          - routed
          - switched
          - l3dot1q
          - l2dot1q
          description: 'l3dot1q and l2dot1q are used for sub-interfaces

            The parent interface should be defined as routed

            '
        encapsulation_dot1q_vlan:
          type: int
          description: VLAN tag to configure on sub-interface
          convert_types:
          - str
        vrf:
          type: str
          description: VRF name
        encapsulation_vlan:
          type: dict
          keys:
            client:
              type: dict
              keys:
                dot1q:
                  type: dict
                  keys:
                    vlan:
                      type: int
                      convert_types:
                      - str
                      description: Client VLAN ID
                    outer:
                      type: int
                      convert_types:
                      - str
                      description: Client Outer VLAN ID
                    inner:
                      type: int
                      convert_types:
                      - str
                      description: Client Inner VLAN ID
                unmatched:
                  type: bool
            network:
              type: dict
              description: Network encapsulation are all optional, and skipped if
                using client unmatched
              keys:
                dot1q:
                  type: dict
                  keys:
                    vlan:
                      type: int
                      convert_types:
                      - str
                      description: Network VLAN ID
                    outer:
                      type: int
                      convert_types:
                      - str
                      description: Network Outer VLAN ID
                    inner:
                      type: int
                      convert_types:
                      - str
                      description: Network Inner VLAN ID
                client:
                  type: bool
        vlan_id:
          type: int
          convert_types:
          - str
          min: 1
          max: 4094
        mode:
          type: str
          valid_values:
          - access
          - dot1q-tunnel
          - trunk
          - trunk phone
        native_vlan:
          type: int
          convert_types:
          - str
          description: If setting both native_vlan and native_vlan_tag, native_vlan_tag
            takes precedence
        native_vlan_tag:
          type: bool
          default: false
          description: If setting both native_vlan and native_vlan_tag, native_vlan_tag
            takes precedence
        link_tracking_groups:
          type: list
          primary_key: name
          items:
            type: dict
            keys:
              name:
                type: str
                description: Group name
              direction:
                type: str
                valid_values:
                - upstream
                - downstream
        phone:
          type: dict
          keys:
            trunk:
              type: str
              valid_values:
              - tagged
              - untagged
            vlan:
              type: int
              convert_types:
              - str
              min: 1
              max: 4094
        l2_protocol:
          type: dict
          keys:
            encapsulation_dot1q_vlan:
              type: int
              convert_types:
              - str
              description: Vlan tag to configure on sub-interface
        mtu:
          type: int
          convert_types:
          - str
        mlag:
          type: int
          convert_types:
          - str
          description: MLAG ID
          min: 1
          max: 2000
        trunk_groups:
          type: list
          items:
            type: str
        lacp_fallback_timeout:
          type: int
          description: Timeout in seconds
          convert_types:
          - str
          default: 90
          min: 0
          max: 300
        lacp_fallback_mode:
          type: str
          valid_values:
          - individual
          - static
        qos:
          type: dict
          keys:
            trust:
              type: str
              valid_values:
              - dscp
              - cos
              - disabled
            dscp:
              type: int
              convert_types:
              - str
              description: DSCP value
            cos:
              type: int
              convert_types:
              - str
              description: COS value
        bfd:
          type: dict
          keys:
            echo:
              type: bool
            interval:
              type: int
              description: Interval in milliseconds
              convert_types:
              - str
            min_rx:
              type: int
              description: Rate in milliseconds
              convert_types:
              - str
            multiplier:
              type: int
              convert_types:
              - str
              min: 3
              max: 50
        service_policy:
          type: dict
          keys:
            pbr:
              type: dict
              keys:
                input:
                  type: str
                  description: Policy-map name
        mpls:
          type: dict
          keys:
            ip:
              type: bool
            ldp:
              type: dict
              keys:
                interface:
                  type: bool
                igp_sync:
                  type: bool
        trunk_private_vlan_secondary:
          type: bool
        pvlan_mapping:
          type: str
          description: List of vlans as string
          convert_types:
          - int
        vlan_translations:
          type: list
          items:
            type: dict
            keys:
              from:
                type: str
                convert_types:
                - int
                description: List of vlans as string (only one vlan if direction is
                  "both")
              to:
                type: int
                convert_types:
                - str
                description: VLAN ID
              direction:
                type: str
                valid_values:
                - in
                - out
                - both
                default: both
        shape:
          type: dict
          keys:
            rate:
              type: str
              description: 'Rate in kbps, pps or percent

                Supported options are platform dependent

                Examples:

                - "5000 kbps"

                - "1000 pps"

                - "20 percent"

                '
        storm_control:
          type: dict
          keys:
            all:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependant
            broadcast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependant
            multicast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependant
            unknown_unicast:
              type: dict
              keys:
                level:
                  type: str
                  convert_types:
                  - int
                  - float
                  description: Configure maximum storm-control level
                unit:
                  type: str
                  default: percent
                  valid_values:
                  - percent
                  - pps
                  description: Optional field and is hardware dependant
        ip_proxy_arp:
          type: bool
        isis_enable:
          type: str
          description: ISIS instance
        isis_passive:
          type: bool
        isis_metric:
          type: int
          convert_types:
          - str
        isis_network_point_to_point:
          type: bool
        isis_circuit_type:
          type: str
          valid_values:
          - level-1-2
          - level-1
          - level-2
        isis_hello_padding:
          type: bool
        isis_authentication_mode:
          type: str
          valid_values:
          - text
          - md5
        isis_authentication_key:
          type: str
          description: Type-7 encrypted password
        traffic_policy:
          type: dict
          keys:
            input:
              type: str
              description: Ingress traffic policy
            output:
              type: str
              description: Egress traffic policy
        evpn_ethernet_segment:
          type: dict
          keys:
            identifier:
              type: str
              description: EVPN Ethernet Segment Identifier (Type 1 format)
            redundancy:
              type: str
              valid_values:
              - all-active
              - single-active
            designated_forwarder_election:
              type: dict
              keys:
                algorithm:
                  type: str
                  valid_values:
                  - modulus
                  - preference
                preference_value:
                  type: int
                  min: 0
                  max: 65535
                  convert_types:
                  - str
                  description: Preference_value is only used when "algorithm" is "preference"
                dont_preempt:
                  type: bool
                  description: Dont_preempt is only used when "algorithm" is "preference"
                  default: false
                hold_time:
                  type: int
                  convert_types:
                  - str
                subsequent_hold_time:
                  type: int
                  convert_types:
                  - str
                candidate_reachability_required:
                  type: bool
            mpls:
              type: dict
              keys:
                shared_index:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 1024
                tunnel_flood_filter_time:
                  type: int
                  convert_types:
                  - str
            route_target:
              type: str
              description: EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx
        esi:
          type: str
          description: 'EVPN Ethernet Segment Identifier (Type 1 format)

            Will be deprecated in AVD 4.0 in favor of "evpn_ethernet_segment.identifier"

            If both "esi" and "evpn_ethernet_segment.identifier" are defined, the
            new variable takes precedence

            '
        rt:
          type: str
          description: 'EVPN Route Target for ESI with format xx:xx:xx:xx:xx:xx

            Will be deprecated in AVD 4.0 in favor of "evpn_ethernet_segment.route_target"

            If both "rt" and "evpn_ethernet_segment.route_target" are defined, the
            new variable takes precedence

            '
        lacp_id:
          type: str
          description: LACP ID with format xxxx.xxxx.xxxx
        spanning_tree_bpdufilter:
          type: str
          convert_types:
          - bool
          valid_values:
          - enabled
          - disabled
          - 'True'
          - 'False'
          - 'true'
          - 'false'
        spanning_tree_bpduguard:
          type: str
          convert_types:
          - bool
          valid_values:
          - enabled
          - disabled
          - 'True'
          - 'False'
          - 'true'
          - 'false'
        spanning_tree_guard:
          type: str
          valid_values:
          - loop
          - root
          - disabled
        spanning_tree_portfast:
          type: str
          valid_values:
          - edge
          - network
        vmtracer:
          type: bool
        ptp:
          type: dict
          keys:
            enable:
              type: bool
            announce:
              type: dict
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
                timeout:
                  type: int
                  convert_types:
                  - str
            delay_req:
              type: int
              convert_types:
              - str
            delay_mechanism:
              type: str
              valid_values:
              - e2e
              - p2p
            sync_message:
              type: dict
              keys:
                interval:
                  type: int
                  convert_types:
                  - str
            role:
              type: str
              valid_values:
              - master
              - dynamic
            vlan:
              type: str
              convert_types:
              - int
              description: VLAN can be 'all' or list of vlans as string
            transport:
              type: str
              valid_values:
              - ipv4
              - ipv6
              - layer2
        ip_address:
          type: str
          description: IPv4 address/mask
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          description: IPv6 address/mask
        ipv6_address_link_local:
          type: str
          description: Link local IPv6 address/mask
        ipv6_nd_ra_disabled:
          type: bool
        ipv6_nd_managed_config_flag:
          type: bool
        ipv6_nd_prefixes:
          type: list
          primary_key: ipv6_prefix
          convert_types:
          - dict
          items:
            type: dict
            keys:
              ipv6_prefix:
                type: str
                required: true
              valid_lifetime:
                type: str
                convert_types:
                - int
                description: Infinite or lifetime in seconds
              preferred_lifetime:
                type: str
                convert_types:
                - int
                description: Infinite or lifetime in seconds
              no_autoconfig_flag:
                type: bool
        access_group_in:
          type: str
          description: Access list name
        access_group_out:
          type: str
          description: Access list name
        ipv6_access_group_in:
          type: str
          description: IPv6 access list name
        ipv6_access_group_out:
          type: str
          description: IPv6 access list name
        mac_access_group_in:
          type: str
          description: MAC access list name
        mac_access_group_out:
          type: str
          description: MAC access list name
        pim:
          type: dict
          keys:
            ipv4:
              type: dict
              keys:
                dr_priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 429467295
                sparse_mode:
                  type: bool
        service_profile:
          type: str
          description: QOS profile
        ospf_network_point_to_point:
          type: bool
        ospf_area:
          type: str
          convert_types:
          - int
        ospf_cost:
          type: int
          convert_types:
          - str
        ospf_authentication:
          type: str
          valid_values:
          - none
          - simple
          - message-digest
        ospf_authentication_key:
          type: str
          description: Encrypted password
        ospf_message_digest_keys:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                required: true
              hash_algorithm:
                type: str
                valid_values:
                - md5
                - sha1
                - sha256
                - sha384
                - sha512
              key:
                type: str
                description: Encrypted password
        flow_tracker:
          type: dict
          keys:
            sampled:
              type: str
              description: Flow tracker name
        peer:
          type: str
          description: Key only used for documentation or validation purposes
        peer_interface:
          type: str
          description: Key only used for documentation or validation purposes
        peer_type:
          type: str
          description: Key only used for documentation or validation purposes
        eos_cli:
          type: str
          description: Multiline EOS CLI rendered directly on the port-channel interface
            in the final EOS configuration
  prefix_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Prefix-list Name
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                required: true
                description: Sequence ID
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string

                  Example: "permit 10.255.0.0/27 eq 32"'
  prompt:
    type: str
  ptp:
    type: dict
    keys:
      mode:
        type: str
        valid_values:
        - boundary
        - transparent
      forward_unicast:
        type: bool
      clock_identity:
        type: str
        description: The clock-id in xx:xx:xx:xx:xx:xx format
      source:
        type: dict
        keys:
          ip:
            description: Source IP
            type: str
      priority1:
        type: int
        min: 0
        max: 255
        convert_types:
        - str
      priority2:
        type: int
        min: 0
        max: 255
        convert_types:
        - str
      ttl:
        type: int
        min: 1
        max: 254
        convert_types:
        - str
      domain:
        type: int
        min: 0
        max: 255
        convert_types:
        - str
      message_type:
        type: dict
        keys:
          general:
            type: dict
            keys:
              dscp:
                type: int
                convert_types:
                - str
          event:
            type: dict
            keys:
              dscp:
                type: int
                convert_types:
                - str
      monitor:
        type: dict
        keys:
          enabled:
            type: bool
            default: true
          threshold:
            type: dict
            keys:
              offset_from_master:
                type: int
                min: 0
                max: 1000000000
                convert_types:
                - str
              mean_path_delay:
                type: int
                min: 0
                max: 1000000000
                convert_types:
                - str
              drop:
                type: dict
                keys:
                  offset_from_master:
                    type: int
                    min: 0
                    max: 1000000000
                    convert_types:
                    - str
                  mean_path_delay:
                    type: int
                    min: 0
                    max: 1000000000
                    convert_types:
                    - str
          missing_message:
            type: dict
            keys:
              intervals:
                type: dict
                keys:
                  announce:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  follow_up:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  sync:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
              sequence_ids:
                type: dict
                keys:
                  enabled:
                    type: bool
                  announce:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  delay_resp:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  follow_up:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
                  sync:
                    type: int
                    min: 2
                    max: 255
                    convert_types:
                    - str
  qos:
    type: dict
    keys:
      map:
        type: dict
        keys:
          cos:
            type: list
            items:
              type: str
              description: 'Example: "0 1 to traffic-class 1"

                '
          dscp:
            type: list
            items:
              type: str
              description: 'Example: "8 9 10 to traffic-class 1"

                '
          traffic_class:
            type: list
            items:
              type: str
              description: 'Example: "1 to dscp 32"

                '
      rewrite_dscp:
        type: bool
  qos_profiles:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Profile-Name
        trust:
          type: str
          valid_values:
          - cos
          - dscp
          - disabled
        cos:
          type: int
          convert_types:
          - str
        dscp:
          type: int
          convert_types:
          - str
        shape:
          type: dict
          keys:
            rate:
              type: str
              description: 'Supported options are platform dependent

                Example: "< rate > kbps", "1-100 percent", "< rate > pps"

                '
        service_policy:
          type: dict
          keys:
            type:
              type: dict
              keys:
                qos_input:
                  type: str
                  description: Policy-map name
        tx_queues:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                required: true
                description: TX-Queue ID
              bandwidth_percent:
                type: int
                convert_types:
                - str
              bandwidth_guaranteed_percent:
                type: int
                convert_types:
                - str
              priority:
                type: str
                valid_values:
                - priority strict
                - no priority
              shape:
                type: dict
                keys:
                  rate:
                    type: str
                    description: 'Supported options are platform dependent

                      Example: "< rate > kbps", "1-100 percent", "< rate > pps"

                      '
        uc_tx_queues:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                required: true
                description: UC TX queue ID
              bandwidth_percent:
                type: int
                convert_types:
                - str
              bandwidth_guaranteed_percent:
                type: int
                convert_types:
                - str
              priority:
                type: str
                valid_values:
                - priority strict
                - no priority
              shape:
                type: dict
                keys:
                  rate:
                    type: str
                    description: 'Supported options are platform dependent

                      Example: "< rate > kbps", "1-100 percent", "< rate > pps"

                      '
        mc_tx_queues:
          type: list
          primary_key: id
          convert_types:
          - dict
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                required: true
                description: MC TX queue ID
              bandwidth_percent:
                type: int
                convert_types:
                - str
              bandwidth_guaranteed_percent:
                type: int
                convert_types:
                - str
              priority:
                type: str
                valid_values:
                - priority strict
                - no priority
              shape:
                type: dict
                keys:
                  rate:
                    type: str
                    description: 'Supported options are platform dependent

                      Example: "< rate > kbps", "1-100 percent", "< rate > pps"'
  queue_monitor_length:
    type: dict
    keys:
      enabled:
        type: bool
        description: '"enabled: true" will be required in AVD4.0.

          In AVD3.x default is true as long as queue_monitor_length is defined and
          not None

          '
      log:
        type: int
        convert_types:
        - str
        description: Logging interval in seconds
      notifying:
        type: bool
        description: should only be used for platforms supporting the "queue-monitor
          length notifying" CLI
      cpu:
        type: dict
        keys:
          thresholds:
            type: dict
            keys:
              high:
                type: int
                required: true
                convert_types:
                - str
              low:
                type: int
                convert_types:
                - str
  queue_monitor_streaming:
    type: dict
    keys:
      enable:
        type: bool
      ip_access_group:
        type: str
        description: Name of IP ACL
      ipv6_access_group:
        type: str
        description: Name of IPv6 ACL
      max_connections:
        type: int
        convert_types:
        - str
        min: 1
        max: 100
      vrf:
        type: str
  radius_servers:
    type: list
    items:
      type: dict
      keys:
        host:
          type: str
          description: Host IP address or name
        vrf:
          type: str
        key:
          type: str
          description: Encrypted key
  redundancy:
    type: dict
    keys:
      protocol:
        type: str
        description: Redundancy Protocol
  roles:
    type: list
    items:
      type: dict
      keys:
        name:
          type: str
          description: Role name
        sequence_numbers:
          type: list
          items:
            type: dict
            keys:
              sequence:
                type: int
                convert_types:
                - str
                description: Sequence number
              action:
                type: str
                valid_values:
                - permit
                - deny
              mode:
                type: str
                description: '"config", "config-all", "exec" or mode key as string

                  '
              command:
                type: str
                description: Command as string
  route_maps:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Route-map Name
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                required: true
                description: Sequence ID
                convert_types:
                - str
              type:
                type: str
                required: true
                valid_values:
                - permit
                - deny
              description:
                type: str
              match:
                type: list
                description: List of "match" statements
                items:
                  type: str
                  description: 'Match as string

                    Example: "ip address prefix-list PL-LOOPBACKS-EVPN-OVERLAY"

                    '
              set:
                type: list
                description: List of "set" statements
                items:
                  type: str
                  description: 'Set as string

                    Example: "origin incomplete"

                    '
              sub_route_map:
                type: str
                description: Name of Sub-Route-map
              continue:
                type: dict
                keys:
                  enabled:
                    type: bool
                  sequence_number:
                    type: int
                    convert_types:
                    - str
  router_bfd:
    type: dict
    keys:
      interval:
        type: int
        description: Rate in milliseconds
      min_rx:
        type: int
        description: Rate in milliseconds
      multiplier:
        type: int
        min: 3
        max: 50
      multihop:
        type: dict
        keys:
          interval:
            type: int
            description: Rate in milliseconds
          min_rx:
            type: int
            description: Rate in milliseconds
          multiplier:
            type: int
            min: 3
            max: 50
      sbfd:
        type: dict
        keys:
          local_interface:
            type: dict
            keys:
              name:
                type: str
                description: Interface Name
              protocols:
                type: dict
                keys:
                  ipv4:
                    type: bool
                  ipv6:
                    type: bool
          initiator_interval:
            type: int
            description: Rate in milliseconds
          initiator_multiplier:
            type: int
            min: 3
            max: 50
          reflector:
            type: dict
            keys:
              min_rx:
                type: int
                description: Rate in milliseconds
              local_discriminator:
                type: str
                description: IPv4 address or 32 bit integer
  router_bgp:
    type: dict
    keys:
      as:
        type: str
        description: BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>
        convert_types:
        - int
      router_id:
        type: str
        description: In IP address format A.B.C.D
      distance:
        type: dict
        keys:
          external_routes:
            type: int
            convert_types:
            - str
            min: 1
            max: 255
          internal_routes:
            type: int
            convert_types:
            - str
            min: 1
            max: 255
          local_routes:
            type: int
            convert_types:
            - str
            min: 1
            max: 255
      graceful_restart:
        type: dict
        keys:
          enabled:
            type: bool
          restart_time:
            type: int
            convert_types:
            - str
            min: 1
            max: 3600
            description: Number of seconds
          stalepath_time:
            type: int
            convert_types:
            - str
            min: 1
            max: 3600
            description: Number of seconds
      graceful_restart_helper:
        type: dict
        keys:
          enabled:
            type: bool
          restart_time:
            type: int
            convert_types:
            - str
            min: 1
            max: 100000000
            description: 'Number of seconds

              graceful-restart-help long-lived and restart-time are mutually exclusive
              in CLI.

              restart-time will take precedence if both are configured.

              '
          long_lived:
            type: bool
            description: 'graceful-restart-help long-lived and restart-time are mutually
              exclusive in CLI.

              restart-time will take precedence if both are configured.

              '
      maximum_paths:
        type: dict
        keys:
          paths:
            type: int
            convert_types:
            - str
            min: 1
            max: 600
          ecmp:
            type: int
            convert_types:
            - str
            min: 1
            max: 600
      updates:
        type: dict
        keys:
          wait_for_convergence:
            type: bool
          wait_install:
            type: bool
      bgp_cluster_id:
        type: str
        description: IP Address A.B.C.D
      bgp_defaults:
        type: list
        description: BGP command as string
        items:
          type: str
      bgp:
        type: dict
        keys:
          bestpath:
            type: dict
            keys:
              d_path:
                type: bool
      listen_ranges:
        type: list
        description: 'Improved "listen_ranges" data model to support multiple listen
          ranges and additional filter capabilities

          '
        items:
          type: dict
          keys:
            prefix:
              type: str
              description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I"
            peer_id_include_router_id:
              type: bool
              description: Include router ID as part of peer filter
            peer_group:
              type: str
              description: Peer group name
            peer_filter:
              type: str
              description: 'Peer-filter name

                note: `peer_filter` or `remote_as` is required but mutually exclusive.

                If both are defined, `peer_filter` takes precedence

                '
            remote_as:
              type: str
              convert_types:
              - int
              description: BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>
      peer_groups:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Peer-group name
            type:
              type: str
              description: Key only used for documentation or validation purposes
            remote_as:
              type: str
              description: BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>
              convert_types:
              - int
            local_as:
              type: str
              description: BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>
              convert_types:
              - int
            description:
              type: str
            shutdown:
              type: bool
            remove_private_as:
              type: dict
              description: Remove private AS numbers in outbound AS path
              keys:
                enabled:
                  type: bool
                all:
                  type: bool
                replace_as:
                  type: bool
            remove_private_as_ingress:
              type: dict
              keys:
                enabled:
                  type: bool
                replace_as:
                  type: bool
            peer_filter:
              type: str
              description: 'Peer-filter name

                note: `bgp_listen_range_prefix` and `peer_filter` will be deprecated
                in AVD v4.0

                These should not be mixed with the new `listen_ranges` key above to
                avoid conflicts.

                '
            next_hop_unchanged:
              type: bool
            update_source:
              type: str
              description: IP address or interface name
            route_reflector_client:
              type: bool
            bfd:
              type: bool
            ebgp_multihop:
              type: int
              min: 1
              max: 255
              description: Time-to-live in range of hops
              convert_types:
              - str
            next_hop_self:
              type: bool
            password:
              type: str
            default_originate:
              type: dict
              keys:
                enabled:
                  type: bool
                always:
                  type: bool
                route_map:
                  type: str
                  description: Route-map name
            send_community:
              type: str
              description: '''all'' or a combination of ''standard'', ''extended'',
                ''large'' and ''link-bandwidth (w/options)'''
            maximum_routes:
              type: int
              description: Maximum number of routes (0 means unlimited)
              min: 0
              max: 4294967294
              convert_types:
              - str
            maximum_routes_warning_limit:
              type: str
              description: 'Maximum number of routes after which a warning is issued
                (0 means never warn) or

                Percentage of maximum number of routes at which to warn ("<1-100>
                percent")

                '
              convert_types:
              - int
            maximum_routes_warning_only:
              type: bool
            link_bandwidth:
              type: dict
              keys:
                enabled:
                  type: bool
                default:
                  type: str
                  description: nn.nn(K|M|G) link speed in bits/second
            allowas_in:
              type: dict
              keys:
                enabled:
                  type: bool
                times:
                  type: int
                  description: Number of local ASNs allowed in a BGP update
                  convert_types:
                  - str
                  min: 1
                  max: 10
            weight:
              type: int
              min: 0
              max: 65535
              convert_types:
              - str
            timers:
              type: str
              description: BGP Keepalive and Hold Timer values in seconds as string
                "<0-3600> <0-3600>"
            rib_in_pre_policy_retain:
              type: dict
              keys:
                enabled:
                  type: bool
                all:
                  type: bool
            route_map_in:
              type: str
              description: Inbound route-map name
            route_map_out:
              type: str
              description: Outbound route-map name
            bgp_listen_range_prefix:
              type: str
              description: 'IP prefix range

                note: `bgp_listen_range_prefix` and `peer_filter` will be deprecated
                in AVD v4.0

                These should not be mixed with the new `listen_ranges` key above to
                avoid conflicts.

                '
      neighbors:
        type: list
        primary_key: ip_address
        convert_types:
        - dict
        items:
          type: dict
          keys:
            ip_address:
              type: str
            peer_group:
              type: str
            remote_as:
              type: str
              description: BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>
              convert_types:
              - int
            local_as:
              type: str
              description: BGP AS <1-4294967295> or AS number in asdot notation <1-65535>.<0-65535>
              convert_types:
              - int
            description:
              type: str
            route_reflector_client:
              type: bool
            shutdown:
              type: bool
            update_source:
              type: str
              description: Source Interface
            bfd:
              type: bool
            weight:
              type: int
              min: 0
              max: 65535
              convert_types:
              - str
            timers:
              type: str
              description: BGP Keepalive and Hold Timer values in seconds as string
                "<0-3600> <0-3600>"
            route_map_in:
              type: str
              description: Inbound route-map name
            route_map_out:
              type: str
              description: Outbound route-map name
            default_originate:
              type: dict
              keys:
                enabled:
                  type: bool
                always:
                  type: bool
                route_map:
                  type: str
            send_community:
              type: str
              description: '''all'' or a combination of ''standard'', ''extended'',
                ''large'' and ''link-bandwidth (w/options)'''
            maximum_routes:
              type: int
              description: Maximum number of routes (0 means unlimited)
              min: 0
              max: 4294967294
              convert_types:
              - str
            maximum_routes_warning_limit:
              type: str
              description: 'Maximum number of routes after which a warning is issued
                (0 means never warn) or

                Percentage of maximum number of routes at which to warn ("<1-100>
                percent")

                '
              convert_types:
              - int
            maximum_routes_warning_only:
              type: bool
            allowas_in:
              type: dict
              keys:
                enabled:
                  type: bool
                times:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 10
                  description: Number of local ASNs allowed in a BGP update
            ebgp_multihop:
              type: int
              min: 1
              max: 255
              description: Time-to-live in range of hops
              convert_types:
              - str
            next_hop_self:
              type: bool
            link_bandwidth:
              type: dict
              keys:
                enabled:
                  type: bool
                default:
                  type: str
                  description: nn.nn(K|M|G) link speed in bits/second
            rib_in_pre_policy_retain:
              type: dict
              keys:
                enabled:
                  type: bool
                all:
                  type: bool
            remove_private_as:
              type: dict
              description: Remove private AS numbers in outbound AS path
              keys:
                enabled:
                  type: bool
                all:
                  type: bool
                replace_as:
                  type: bool
            remove_private_as_ingress:
              type: dict
              keys:
                enabled:
                  type: bool
                replace_as:
                  type: bool
      neighbor_interfaces:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Interface name
            remote_as:
              type: str
              convert_types:
              - int
            peer_group:
              type: str
              default: Peer-group name
            description:
              type: str
            peer_filter:
              type: str
              description: Peer-filter name
      aggregate_addresses:
        type: list
        primary_key: prefix
        convert_types:
        - dict
        items:
          type: dict
          keys:
            prefix:
              type: str
              description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I"
            advertise_only:
              type: bool
            as_set:
              type: bool
            summary_only:
              type: bool
            attribute_map:
              type: str
              description: Route-map name
            match_map:
              type: str
              description: Route-map name
      redistribute_routes:
        type: list
        primary_key: source_protocol
        convert_types:
        - dict
        - list
        items:
          type: dict
          keys:
            source_protocol:
              type: str
            route_map:
              type: str
      vlan_aware_bundles:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: VLAN aware bundle name
            tenant:
              type: str
              description: Key only used for documentation or validation purposes
            description:
              type: str
              description: Key only used for documentation or validation purposes
            rd:
              description: Route distinguisher
              type: str
            rd_evpn_domain:
              type: dict
              keys:
                domain:
                  type: str
                  valid_values:
                  - remote
                  - all
                rd:
                  type: str
                  description: Route distinguisher
            route_targets:
              type: dict
              keys:
                both:
                  type: list
                  items:
                    type: str
                import:
                  type: list
                  items:
                    type: str
                export:
                  type: list
                  items:
                    type: str
                import_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
                export_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
                import_export_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
            redistribute_routes:
              type: list
              items:
                type: str
            no_redistribute_routes:
              type: list
              items:
                type: str
            vlan:
              type: str
              description: VLAN range as string. Example "100-200,300"
              convert_types:
              - int
      vlans:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: int
              convert_types:
              - str
            tenant:
              type: str
              description: Key only used for documentation or validation purposes
            rd:
              description: Route distinguisher
              type: str
            rd_evpn_domain:
              type: dict
              keys:
                domain:
                  type: str
                  valid_values:
                  - remote
                  - all
                rd:
                  type: str
                  description: Route distinguisher
            eos_cli:
              type: str
              description: Multiline EOS CLI rendered directly on the Router BGP,
                VLAN definition in the final EOS configuration
            route_targets:
              type: dict
              keys:
                both:
                  type: list
                  items:
                    type: str
                import:
                  type: list
                  items:
                    type: str
                export:
                  type: list
                  items:
                    type: str
                import_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
                export_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
                import_export_evpn_domains:
                  type: list
                  items:
                    type: dict
                    keys:
                      domain:
                        type: str
                        valid_values:
                        - remote
                        - all
                      route_target:
                        type: str
            redistribute_routes:
              type: list
              items:
                type: str
            no_redistribute_routes:
              type: list
              items:
                type: str
      vpws:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: VPWS instance name
            rd:
              description: Route distinguisher
              type: str
            route_targets:
              type: dict
              keys:
                import_export:
                  type: str
                  description: Route Target
            mpls_control_word:
              type: bool
            label_flow:
              type: bool
            mtu:
              type: int
              convert_types:
              - str
            pseudowires:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Pseudowire name
                  id_local:
                    type: int
                    convert_types:
                    - str
                    description: Must match id_remote on other pe
                  id_remote:
                    type: int
                    convert_types:
                    - str
                    description: Must match id_local on other pe
      address_family_evpn:
        type: dict
        keys:
          domain_identifier:
            type: str
            convert_types:
            - int
          neighbor_default:
            type: dict
            keys:
              encapsulation:
                type: str
                valid_values:
                - vxlan
                - mpls
              next_hop_self_source_interface:
                description: Source interface name
                type: str
              next_hop_self_received_evpn_routes:
                type: dict
                keys:
                  enable:
                    type: bool
                  inter_domain:
                    type: bool
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
                domain_remote:
                  type: bool
          evpn_hostflap_detection:
            type: dict
            keys:
              enabled:
                type: bool
              window:
                type: int
                description: Time (in seconds) to detect a MAC duplication issue
                min: 0
                max: 4294967295
                convert_types:
                - str
              threshold:
                type: int
                min: 0
                max: 4294967295
                convert_types:
                - str
                description: Minimum number of MAC moves that indicate a MAC Duplication
                  issue
              expiry_timeout:
                type: int
                min: 0
                max: 4294967295
                convert_types:
                - str
                description: Time (in seconds) to purge a MAC duplication issue
          route:
            type: dict
            keys:
              import_match_failure_action:
                type: str
                valid_values:
                - discard
      address_family_rtc:
        type: dict
        keys:
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool
                default_route_target:
                  type: dict
                  keys:
                    only:
                      type: bool
                    encoding_origin_as_omit:
                      type: str
      address_family_ipv4:
        type: dict
        keys:
          networks:
            type: list
            primary_key: prefix
            convert_types:
            - dict
            items:
              type: dict
              keys:
                prefix:
                  description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I"
                  type: str
                route_map:
                  description: Route-map name
                  type: str
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
                default_originate:
                  type: dict
                  keys:
                    always:
                      type: bool
                    route_map:
                      description: Route-map name
                      type: str
                next_hop:
                  type: dict
                  keys:
                    address_family_ipv6_originate:
                      type: bool
                prefix_list_in:
                  type: str
                  description: Inbound prefix-list name
                prefix_list_out:
                  type: str
                  description: Outbound prefix-list name
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
                prefix_list_in:
                  type: str
                  description: Inbound prefix-list name
                prefix_list_out:
                  type: str
                  description: Prefix-list name
                default_originate:
                  type: dict
                  keys:
                    always:
                      type: bool
                    route_map:
                      type: str
      address_family_ipv4_multicast:
        type: dict
        keys:
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
          redistribute_routes:
            type: list
            primary_key: source_protocol
            convert_types:
            - dict
            items:
              type: dict
              keys:
                source_protocol:
                  type: str
                route_map:
                  type: str
      address_family_ipv6:
        type: dict
        keys:
          networks:
            type: list
            primary_key: prefix
            convert_types:
            - dict
            items:
              type: dict
              keys:
                prefix:
                  description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I"
                  type: str
                route_map:
                  description: Route-map name
                  type: str
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
                prefix_list_in:
                  type: str
                  description: Inbound prefix-list name
                prefix_list_out:
                  type: str
                  description: Outbound prefix-list name
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
                prefix_list_in:
                  type: str
                  description: Inbound prefix-list name
                prefix_list_out:
                  type: str
                  description: Outbound prefix-list name
          redistribute_routes:
            type: list
            primary_key: source_protocol
            convert_types:
            - dict
            items:
              type: dict
              keys:
                source_protocol:
                  type: str
                route_map:
                  type: str
      address_family_vpn_ipv4:
        type: dict
        keys:
          domain_identifier:
            type: str
            convert_types:
            - int
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
          route:
            type: dict
            keys:
              import_match_failure_action:
                type: str
                valid_values:
                - discard
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
          neighbor_default_encapsulation_mpls_next_hop_self:
            type: dict
            keys:
              source_interface:
                type: str
      address_family_vpn_ipv6:
        type: dict
        keys:
          domain_identifier:
            type: str
            convert_types:
            - int
          peer_groups:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: Peer-group name
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
          route:
            type: dict
            keys:
              import_match_failure_action:
                type: str
                valid_values:
                - discard
          neighbors:
            type: list
            primary_key: ip_address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                ip_address:
                  type: str
                activate:
                  type: bool
                route_map_in:
                  type: str
                  description: Inbound route-map name
                route_map_out:
                  type: str
                  description: Outbound route-map name
          neighbor_default_encapsulation_mpls_next_hop_self:
            type: dict
            keys:
              source_interface:
                type: str
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name
            rd:
              type: str
              description: Route distinguisher
            evpn_multicast:
              type: bool
            evpn_multicast_address_family:
              type: dict
              description: Enable per-AF EVPN multicast settings
              keys:
                ipv4:
                  type: dict
                  keys:
                    transit:
                      type: bool
                      description: Enable EVPN multicast transit mode
            route_targets:
              type: dict
              keys:
                import:
                  type: list
                  primary_key: address_family
                  secondary_key: route_targets
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      address_family:
                        type: str
                      route_targets:
                        type: list
                        items:
                          type: str
                export:
                  type: list
                  primary_key: address_family
                  secondary_key: route_targets
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      address_family:
                        type: str
                      route_targets:
                        type: list
                        items:
                          type: str
            router_id:
              description: in IP address format A.B.C.D
              type: str
            timers:
              type: str
              description: BGP Keepalive and Hold Timer values in seconds as string
                "<0-3600> <0-3600>"
            networks:
              type: list
              primary_key: prefix
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  prefix:
                    type: str
                    description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I"
                  route_map:
                    type: str
            listen_ranges:
              type: list
              description: 'Improved "listen_ranges" data model to support multiple
                listen ranges and additional filter capabilities

                '
              items:
                type: dict
                keys:
                  prefix:
                    type: str
                    description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I"
                  peer_id_include_router_id:
                    type: bool
                    description: Include router ID as part of peer filter
                  peer_group:
                    type: str
                    description: Peer-group name
                  peer_filter:
                    type: str
                    description: 'Peer-filter name

                      note: `peer_filter`` or `remote_as` is required but mutually
                      exclusive.

                      If both are defined, peer_filter takes precedence

                      '
                  remote_as:
                    type: str
                    description: BGP AS <1-4294967295> or AS number in asdot notation
                      <1-65535>.<0-65535>
                    convert_types:
                    - int
            neighbors:
              type: list
              primary_key: ip_address
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  ip_address:
                    type: str
                  peer_group:
                    type: str
                    description: Peer-group name
                  remote_as:
                    type: str
                    description: BGP AS <1-4294967295> or AS number in asdot notation
                      <1-65535>.<0-65535>
                    convert_types:
                    - int
                  password:
                    type: str
                  remove_private_as:
                    type: dict
                    description: Remove private AS numbers in outbound AS path
                    keys:
                      enabled:
                        type: bool
                      all:
                        type: bool
                      replace_as:
                        type: bool
                  remove_private_as_ingress:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      replace_as:
                        type: bool
                  weight:
                    type: int
                    min: 0
                    max: 65535
                    convert_types:
                    - str
                  local_as:
                    type: str
                    description: BGP AS <1-4294967295> or AS number in asdot notation
                      <1-65535>.<0-65535>
                    convert_types:
                    - int
                  description:
                    type: str
                  ebgp_multihop:
                    type: int
                    min: 1
                    max: 255
                    description: Time-to-live in range of hops
                  next_hop_self:
                    type: bool
                  shutdown:
                    type: bool
                  bfd:
                    type: bool
                  timers:
                    type: str
                    description: BGP Keepalive and Hold Timer values in seconds as
                      string "<0-3600> <0-3600>"
                  rib_in_pre_policy_retain:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      all:
                        type: bool
                  send_community:
                    type: str
                    description: '''all'' or a combination of ''standard'', ''extended'',
                      ''large'' and ''link-bandwidth (w/options)'''
                  maximum_routes:
                    type: int
                    convert_types:
                    - str
                  maximum_routes_warning_limit:
                    type: str
                    convert_types:
                    - int
                    description: 'Maximum number of routes after which a warning is
                      issued (0 means never warn) or

                      Percentage of maximum number of routes at which to warn ("<1-100>
                      percent")

                      '
                  maximum_routes_warning_only:
                    type: bool
                  allowas_in:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      times:
                        type: int
                        convert_types:
                        - str
                        min: 1
                        max: 10
                        description: Number of local ASNs allowed in a BGP update
                  default_originate:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      always:
                        type: bool
                      route_map:
                        type: str
                  update_source:
                    type: str
                  route_map_in:
                    type: str
                    description: Inbound route-map name
                  route_map_out:
                    type: str
                    description: Outbound route-map name
                  prefix_list_in:
                    type: str
                    description: Inbound prefix-list name
                  prefix_list_out:
                    type: str
                    description: Outbound prefix-list name
            neighbor_interfaces:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Interface name
                  remote_as:
                    type: str
                    description: BGP AS <1-4294967295> or AS number in asdot notation
                      <1-65535>.<0-65535>
                    convert_types:
                    - int
                  peer_group:
                    type: str
                    description: Peer-group name
                  peer_filter:
                    type: str
                    description: Peer-filter name
                  description:
                    type: str
            redistribute_routes:
              type: list
              primary_key: source_protocol
              convert_types:
              - dict
              - list
              items:
                type: dict
                keys:
                  source_protocol:
                    type: str
                  route_map:
                    type: str
            aggregate_addresses:
              type: list
              primary_key: prefix
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  prefix:
                    type: str
                    description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I"
                  advertise_only:
                    type: bool
                  as_set:
                    type: bool
                  summary_only:
                    type: bool
                  attribute_map:
                    type: str
                  match_map:
                    type: str
            address_families:
              type: list
              primary_key: address_family
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  address_family:
                    type: str
                  bgp:
                    type: dict
                    keys:
                      missing_policy:
                        type: dict
                        keys:
                          direction_in_action:
                            type: str
                            valid_values:
                            - deny
                            - deny-in-out
                            - permit
                          direction_out_action:
                            type: str
                            valid_values:
                            - deny
                            - deny-in-out
                            - permit
                      additional_paths:
                        type: list
                        items:
                          type: str
                  neighbors:
                    type: list
                    primary_key: ip_address
                    convert_types:
                    - dict
                    items:
                      type: dict
                      keys:
                        ip_address:
                          type: str
                        activate:
                          type: bool
                        route_map_in:
                          type: str
                          description: Inbound route-map name
                        route_map_out:
                          type: str
                          description: Outbound route-map name
                  peer_groups:
                    type: list
                    primary_key: name
                    convert_types:
                    - dict
                    items:
                      type: dict
                      keys:
                        name:
                          type: str
                          description: Peer-group name
                        activate:
                          type: bool
                        next_hop:
                          type: dict
                          keys:
                            address_family_ipv6_originate:
                              type: bool
                  networks:
                    type: list
                    primary_key: prefix
                    convert_types:
                    - dict
                    items:
                      type: dict
                      keys:
                        prefix:
                          type: str
                          description: IPv4 prefix "A.B.C.D/E" or IPv6 prefix "A:B:C:D:E:F:G:H/I"
                        route_map:
                          type: str
            eos_cli:
              type: str
              description: Multiline EOS CLI rendered directly on the Router BGP,
                VRF definition in the final EOS configuration
  router_general:
    type: dict
    display_name: Router General configuration
    keys:
      router_id:
        type: dict
        keys:
          ipv4:
            type: str
            description: IPv4 Address
          ipv6:
            type: str
            description: IPv6 Address
      nexthop_fast_failover:
        type: bool
        default: false
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: Destination-VRF
            leak_routes:
              type: list
              items:
                type: dict
                keys:
                  source_vrf:
                    type: str
                  subscribe_policy:
                    type: str
                    description: Route-Map Policy
            routes:
              type: dict
              keys:
                dynamic_prefix_lists:
                  type: list
                  items:
                    type: dict
                    keys:
                      name:
                        type: str
                        description: Dynamic Prefix List Name
  router_igmp:
    type: dict
    display_name: Router IGMP Configuration
    keys:
      ssm_aware:
        type: bool
  router_isis:
    type: dict
    keys:
      instance:
        type: str
        description: ISIS Instance Name
      net:
        type: str
        description: CLNS Address like "49.0001.0001.0000.0001.00"
      router_id:
        type: str
        description: IPv4 Address
      is_type:
        type: str
        valid_values:
        - level-1
        - level-1-2
        - level-2
      log_adjacency_changes:
        type: bool
      mpls_ldp_sync_default:
        type: bool
      timers:
        type: dict
        keys:
          local_convergence:
            type: dict
            keys:
              protected_prefixes:
                type: bool
              delay:
                type: int
                convert_types:
                - str
                default: 10000
                description: Delay in milliseconds.
      advertise:
        type: dict
        keys:
          passive_only:
            type: bool
      address_family:
        type: list
        items:
          type: str
          valid_values:
          - ipv4
          - ipv6
          - ipv4 unicast
          - ipv6 unicast
          description: Address Family
      isis_af_defaults:
        type: list
        items:
          type: str
          description: 'EOS CLI rendered under the address families

            Example "maximum-paths 64"

            '
      redistribute_routes:
        type: list
        items:
          type: dict
          keys:
            source_protocol:
              type: str
              required: true
              valid_values:
              - bgp
              - connected
              - isis
              - ospf
              - ospfv3
              - static
            route_map:
              type: str
              description: Route-map name
            include_leaked:
              type: bool
            ospf_route_type:
              type: str
              valid_values:
              - external
              - internal
              - nssa-external
              description: ospf_route_type is required with source_protocols 'ospf'
                and 'ospfv3'
      address_family_ipv4:
        type: dict
        keys:
          maximum_paths:
            type: int
            convert_types:
            - str
            min: 1
            max: 128
          fast_reroute_ti_lfa:
            type: dict
            keys:
              mode:
                type: str
                valid_values:
                - link-protection
                - node-protection
              level:
                type: str
                valid_values:
                - level-1
                - level-2
              srlg:
                type: dict
                description: Shared Risk Link Group
                keys:
                  enable:
                    type: bool
                  strict:
                    type: bool
          tunnel_source_labeled_unicast:
            type: dict
            keys:
              enabled:
                type: bool
              rcf:
                type: str
                description: Route Control Function
      address_family_ipv6:
        type: dict
        keys:
          maximum_paths:
            type: int
            convert_types:
            - str
            min: 1
            max: 128
          fast_reroute_ti_lfa:
            type: dict
            keys:
              mode:
                type: str
                valid_values:
                - link-protection
                - node-protection
              level:
                type: str
                valid_values:
                - level-1
                - level-2
                description: Optional, default is to protect all levels
              srlg:
                type: dict
                description: Shared Risk Link Group
                keys:
                  enable:
                    type: bool
                  strict:
                    type: bool
      segment_routing_mpls:
        type: dict
        keys:
          enabled:
            type: bool
          router_id:
            type: str
          prefix_segments:
            type: list
            convert_types:
            - dict
            items:
              type: dict
              keys:
                prefix:
                  type: str
                index:
                  type: int
                  convert_types:
                  - str
      no_passive_interfaces:
        type: list
        description: Unused key - to be removed from eos_designs.
  router_l2_vpn:
    type: dict
    keys:
      nd_rs_flooding_disabled:
        type: bool
      virtual_router_nd_ra_flooding_disabled:
        type: bool
      arp_selective_install:
        type: bool
      arp_proxy:
        type: dict
        keys:
          prefix_list:
            type: str
            description: Prefix-list Name
  router_msdp:
    type: dict
    keys:
      originator_id_local_interface:
        type: str
        description: Interface to use for originator ID
      rejected_limit:
        type: int
        convert_types:
        - str
        description: Maximum number of rejected SA messages allowed in cache
        min: 0
        max: 40000
      forward_register_packets:
        type: bool
      connection_retry_interval:
        type: int
        convert_types:
        - str
        min: 1
        max: 65535
      group_limits:
        type: list
        primary_key: source_prefix
        items:
          type: dict
          keys:
            source_prefix:
              type: str
              description: Source address prefix
              required: true
            limit:
              type: int
              convert_types:
              - str
              description: Limit for SAs matching the source address prefix
              min: 0
              max: 40000
              required: true
      peers:
        type: list
        primary_key: ipv4_address
        items:
          type: dict
          keys:
            ipv4_address:
              type: str
              required: true
              description: Peer IP Address
            default_peer:
              type: dict
              keys:
                enabled:
                  type: bool
                prefix_list:
                  type: str
                  description: Prefix list to filter source of SA messages
            local_interface:
              type: str
            description:
              type: str
            disabled:
              type: bool
              description: Disable the MSDP peer
            sa_limit:
              type: int
              convert_types:
              - str
              description: Maximum number of SA messages allowed in cache
              min: 0
              max: 40000
            mesh_groups:
              type: list
              primary_key: name
              items:
                type: dict
                keys:
                  name:
                    type: str
                    required: true
                    description: Mesh group name
            keepalive:
              type: dict
              keys:
                keepalive_timer:
                  type: int
                  convert_types:
                  - str
                  required: true
                  min: 1
                  max: 65535
                hold_timer:
                  type: int
                  convert_types:
                  - str
                  required: true
                  description: Must be greater than keepalive timer
                  min: 1
                  max: 65535
            sa_filter:
              type: dict
              keys:
                in_list:
                  type: str
                  description: ACL to filter inbound SA messages
                out_list:
                  type: str
                  description: ACL to filter outbound SA messages
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: VRF name
            originator_id_local_interface:
              type: str
              description: Interface to use for originator ID
            rejected_limit:
              type: int
              convert_types:
              - str
              description: Maximum number of rejected SA messages allowed in cache
              min: 0
              max: 40000
            forward_register_packets:
              type: bool
            connection_retry_interval:
              type: int
              convert_types:
              - str
              min: 1
              max: 65535
            group_limits:
              type: list
              primary_key: source_prefix
              items:
                type: dict
                keys:
                  source_prefix:
                    type: str
                    description: Source address prefix
                    required: true
                  limit:
                    type: int
                    convert_types:
                    - str
                    description: Limit for SAs matching the source address prefix
                    min: 0
                    max: 40000
                    required: true
            peers:
              type: list
              primary_key: ipv4_address
              items:
                type: dict
                keys:
                  ipv4_address:
                    type: str
                    required: true
                    description: Peer IP Address
                  default_peer:
                    type: dict
                    keys:
                      enabled:
                        type: bool
                      prefix_list:
                        type: str
                        description: Prefix list to filter source of SA messages
                  local_interface:
                    type: str
                  description:
                    type: str
                  disabled:
                    type: bool
                    description: Disable the MSDP peer
                  sa_limit:
                    type: int
                    convert_types:
                    - str
                    description: Maximum number of SA messages allowed in cache
                    min: 0
                    max: 40000
                  mesh_groups:
                    type: list
                    primary_key: name
                    items:
                      type: dict
                      keys:
                        name:
                          type: str
                          required: true
                          description: Mesh group name
                  keepalive:
                    type: dict
                    keys:
                      keepalive_timer:
                        type: int
                        convert_types:
                        - str
                        required: true
                        min: 1
                        max: 65535
                      hold_timer:
                        type: int
                        convert_types:
                        - str
                        required: true
                        description: Must be greater than keepalive timer
                        min: 1
                        max: 65535
                  sa_filter:
                    type: dict
                    keys:
                      in_list:
                        type: str
                        description: ACL to filter inbound SA messages
                      out_list:
                        type: str
                        description: ACL to filter outbound SA messages
  router_multicast:
    type: dict
    keys:
      ipv4:
        type: dict
        keys:
          counters:
            type: dict
            keys:
              rate_period_decay:
                description: Rate in seconds
                type: int
                min: 0
                max: 600
                convert_types:
                - str
          routing:
            type: bool
          multipath:
            type: str
            valid_values:
            - none
            - deterministic
            - deterministic color
            - deterministic router-id
          software_forwarding:
            type: str
            valid_values:
            - kernel
            - sfe
          rpf:
            type: dict
            keys:
              routes:
                type: list
                items:
                  type: dict
                  keys:
                    source_prefix:
                      description: Source address A.B.C.D or Source prefix A.B.C.D/E
                      type: str
                      required: true
                    destinations:
                      type: list
                      required: true
                      items:
                        type: dict
                        keys:
                          nexthop:
                            description: Next-hop IP address or interface name
                            type: str
                            required: true
                          distance:
                            description: Administrative distance for this route
                            type: int
                            min: 1
                            max: 255
                            convert_types:
                            - str
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
            ipv4:
              type: dict
              keys:
                routing:
                  type: bool
  router_ospf:
    type: dict
    display_name: Router OSPF Configuration
    keys:
      process_ids:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: int
              convert_types:
              - str
              description: OSPF Process ID
            vrf:
              type: str
              description: VRF Name for OSPF Process
            passive_interface_default:
              type: bool
            router_id:
              type: str
              description: IPv4 Address
            distance:
              type: dict
              keys:
                external:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 255
                inter_area:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 255
                intra_area:
                  type: int
                  convert_types:
                  - str
                  min: 1
                  max: 255
            log_adjacency_changes_detail:
              type: bool
            network_prefixes:
              type: list
              primary_key: ipv4_prefix
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  ipv4_prefix:
                    type: str
                  area:
                    type: str
            bfd_enable:
              type: bool
            bfd_adjacency_state_any:
              type: bool
            no_passive_interfaces:
              type: list
              items:
                type: str
                description: Interface Name
            distribute_list_in:
              type: dict
              keys:
                route_map:
                  type: str
            max_lsa:
              type: int
              convert_types:
              - str
            timers:
              type: dict
              keys:
                lsa:
                  type: dict
                  keys:
                    rx_min_interval:
                      type: int
                      convert_types:
                      - str
                      description: Min interval in msecs between accepting the same
                        LSA
                      min: 0
                      max: 600000
                    tx_delay:
                      type: dict
                      keys:
                        initial:
                          type: int
                          convert_types:
                          - str
                          description: Delay to generate first occurrence of LSA in
                            msecs
                          min: 0
                          max: 600000
                        min:
                          type: int
                          convert_types:
                          - str
                          description: Min delay between originating the same LSA
                            in msecs
                          min: 1
                          max: 600000
                        max:
                          type: int
                          convert_types:
                          - str
                          description: 1-600000 Maximum delay between originating
                            the same LSA in msec
                          min: 1
                          max: 600000
                spf_delay:
                  type: dict
                  keys:
                    initial:
                      type: int
                      convert_types:
                      - str
                      description: Initial SPF schedule delay in msecs
                      min: 0
                      max: 600000
                    min:
                      type: int
                      convert_types:
                      - str
                      description: Min Hold time between two SPFs in msecs
                      min: 0
                      max: 65535000
                    max:
                      type: int
                      convert_types:
                      - str
                      description: Max wait time between two SPFs in msecs
                      min: 0
                      max: 65535000
            default_information_originate:
              type: dict
              keys:
                always:
                  type: bool
            summary_addresses:
              type: list
              primary_key: prefix
              items:
                type: dict
                keys:
                  prefix:
                    type: str
                    description: Summary Prefix Address
                  tag:
                    type: int
                  attribute_map:
                    type: str
                  not_advertise:
                    type: bool
            redistribute:
              type: dict
              keys:
                static:
                  type: dict
                  keys:
                    route_map:
                      type: str
                      description: Route Map Name
                connected:
                  type: dict
                  keys:
                    route_map:
                      type: str
                      description: Route Map Name
                bgp:
                  type: dict
                  keys:
                    route_map:
                      type: str
                      description: Route Map Name
            auto_cost_reference_bandwidth:
              type: int
              convert_types:
              - str
              description: Bandwidth in mbps
            areas:
              type: list
              primary_key: id
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  id:
                    type: str
                    convert_types:
                    - int
                  filter:
                    type: dict
                    keys:
                      networks:
                        type: list
                        items:
                          type: str
                          description: IPv4 Prefix
                      prefix_list:
                        type: str
                        description: Prefix-List Name
                  type:
                    type: str
                    valid_values:
                    - normal
                    - stub
                    - nssa
                    default: normal
                  no_summary:
                    type: bool
                  nssa_only:
                    type: bool
                  default_information_originate:
                    type: dict
                    keys:
                      metric:
                        type: int
                        convert_types:
                        - str
                        description: Metric for default route
                        min: 1
                        max: 65535
                      metric_type:
                        type: int
                        convert_types:
                        - str
                        valid_values:
                        - 1
                        - 2
                        description: OSPF metric type for default route
            maximum_paths:
              type: int
              convert_types:
              - str
              min: 1
              max: 128
            max_metric:
              type: dict
              keys:
                router_lsa:
                  type: dict
                  keys:
                    external_lsa:
                      type: dict
                      keys:
                        override_metric:
                          type: int
                          convert_types:
                          - str
                          min: 1
                          max: 16777215
                    include_stub:
                      type: bool
                    on_startup:
                      type: str
                      convert_types:
                      - int
                      description: '"wait-for-bgp" or Integer 5-86400

                        Example: "wait-for-bgp" Or "222"

                        '
                    summary_lsa:
                      type: dict
                      keys:
                        override_metric:
                          type: int
                          convert_types:
                          - str
                          min: 1
                          max: 16777215
            mpls_ldp_sync_default:
              type: bool
  router_pim_sparse_mode:
    type: dict
    keys:
      ipv4:
        type: dict
        keys:
          bfd:
            type: bool
            description: Enable/Disable BFD
          ssm_range:
            type: str
            description: IPv4 Prefix associated with SSM
          rp_addresses:
            type: list
            primary_key: address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                address:
                  type: str
                  required: true
                  description: RP Address
                groups:
                  type: list
                  convert_types:
                  - dict
                  items:
                    type: str
                access_lists:
                  type: list
                  items:
                    type: str
                priority:
                  type: int
                  min: 0
                  max: 255
                hashmask:
                  type: int
                  min: 0
                  max: 32
                override:
                  type: bool
          anycast_rps:
            type: list
            primary_key: address
            convert_types:
            - dict
            items:
              type: dict
              keys:
                address:
                  type: str
                  required: true
                  description: Anycast RP Address
                other_anycast_rp_addresses:
                  type: list
                  primary_key: address
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      address:
                        type: str
                        required: true
                        description: Other Anycast RP Address
                      register_count:
                        type: int
                        convert_types:
                        - str
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF Name
              required: true
            ipv4:
              type: dict
              keys:
                bfd:
                  type: bool
                  description: Enable/Disable BFD
                rp_addresses:
                  type: list
                  items:
                    type: dict
                    keys:
                      address:
                        type: str
                        description: RP Address
                        required: true
                      groups:
                        type: list
                        items:
                          type: str
                      access_lists:
                        type: list
                        items:
                          type: str
                      priority:
                        type: int
                        min: 0
                        max: 255
                      hashmask:
                        type: int
                        min: 0
                        max: 32
                      override:
                        type: bool
  router_traffic_engineering:
    type: dict
    keys:
      router_id:
        type: dict
        keys:
          ipv4:
            type: str
          ipv6:
            type: str
      segment_routing:
        type: dict
        keys:
          colored_tunnel_rib:
            type: bool
          policy_endpoints:
            type: list
            items:
              type: dict
              keys:
                address:
                  type: str
                  description: IPv4 or IPv6 address
                colors:
                  type: list
                  primary_key: value
                  convert_types:
                  - dict
                  items:
                    type: dict
                    keys:
                      value:
                        type: int
                        convert_types:
                        - str
                      binding_sid:
                        type: int
                        convert_types:
                        - str
                      description:
                        type: str
                      name:
                        type: str
                      sbfd_remote_discriminator:
                        type: str
                        description: IPv4 address or 32 bit integer
                        convert_types:
                        - int
                      path_group:
                        type: list
                        items:
                          type: dict
                          keys:
                            preference:
                              type: int
                              convert_types:
                              - str
                            explicit_null:
                              type: str
                              valid_values:
                              - ipv4
                              - ipv6
                              - ipv4 ipv6
                              - none
                            segment_list:
                              type: list
                              items:
                                type: dict
                                keys:
                                  label_stack:
                                    type: str
                                    convert_types:
                                    - int
                                    description: 'Label Stack as string.

                                      Example: "100 2000 30"

                                      '
                                  weight:
                                    type: int
                                    convert_types:
                                    - str
                                  index:
                                    type: int
                                    convert_types:
                                    - str
  service_routing_configuration_bgp:
    type: dict
    keys:
      no_equals_default:
        type: bool
  service_routing_protocols_model:
    type: str
    valid_values:
    - multi-agent
    - ribd
  service_unsupported_transceiver:
    type: dict
    keys:
      license_name:
        type: str
      license_key:
        type: str
  sflow:
    type: dict
    keys:
      sample:
        type: int
        convert_types:
        - str
      dangerous:
        type: bool
      polling_interval:
        type: int
        convert_types:
        - str
        description: Polling interval in seconds
      vrfs:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
            destinations:
              type: list
              primary_key: destination
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  destination:
                    type: str
                    description: Sflow Destination IP Address
                  port:
                    type: int
                    description: Port Number
                    convert_types:
                    - str
            source:
              type: str
              description: 'Source IP Address.

                "source" and "source_interface" are mutually exclusive. If both are
                defined, "source_interface" takes precedence.

                '
            source_interface:
              type: str
              description: Source Interface
      destinations:
        type: list
        primary_key: destination
        convert_types:
        - dict
        items:
          type: dict
          keys:
            destination:
              type: str
              description: Sflow Destination IP Address
            port:
              type: int
              description: Port Number
              convert_types:
              - str
      source:
        type: str
        description: 'Source IP Address.

          "source" and "source_interface" are mutually exclusive. If both are defined,
          "source_interface" takes precedence.

          '
      source_interface:
        type: str
        description: Source Interface
      extensions:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: Extension Name
            enabled:
              type: bool
              description: Enable or Disable Extension
              required: true
      interface:
        type: dict
        keys:
          disable:
            type: dict
            keys:
              default:
                type: bool
      run:
        type: bool
      hardware_acceleration:
        type: dict
        keys:
          enabled:
            type: bool
          sample:
            type: int
            convert_types:
            - str
          modules:
            type: list
            primary_key: name
            items:
              type: dict
              keys:
                name:
                  type: str
                enabled:
                  type: bool
                  default: true
  snmp_server:
    type: dict
    description: SNMP settings
    keys:
      engine_ids:
        type: dict
        keys:
          local:
            type: str
            convert_types:
            - int
            description: 'Engine ID in hexadecimal

              '
          remotes:
            type: list
            items:
              type: dict
              keys:
                id:
                  type: str
                  convert_types:
                  - int
                  description: 'Remote engine ID in hexadecimal

                    '
                address:
                  type: str
                  description: 'Hostname or IP of remote engine

                    '
                udp_port:
                  type: int
                  convert_types:
                  - str
      contact:
        type: str
        description: SNMP contact
      location:
        type: str
        description: SNMP location
      communities:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Community name
            access:
              type: str
              valid_values:
              - ro
              - rw
            access_list_ipv4:
              type: dict
              keys:
                name:
                  type: str
                  description: IPv4 access list name
            access_list_ipv6:
              type: dict
              keys:
                name:
                  type: str
                  description: IPv6 access list name
            view:
              type: str
      ipv4_acls:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: IPv4 access list name
            vrf:
              type: str
      ipv6_acls:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: IPv6 access list name
            vrf:
              type: str
      local_interfaces:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: Interface name
            vrf:
              type: str
      views:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: SNMP view name
            MIB_family_name:
              type: str
            included:
              type: bool
      groups:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Group name
            version:
              type: str
              valid_values:
              - v1
              - v2c
              - v3
            authentication:
              type: str
              valid_values:
              - auth
              - noauth
              - priv
            read:
              type: str
              description: Read view
            write:
              type: str
              description: Write view
            notify:
              type: str
              description: Notify view
      users:
        type: list
        items:
          type: dict
          keys:
            name:
              type: str
              description: Username
            group:
              type: str
              description: Group name
            remote_address:
              type: str
              description: 'Hostname or ip of remote engine

                The remote_address and udp_port are used for remote users

                '
            udp_port:
              type: int
              convert_types:
              - str
              description: 'udp_port will not be used if no remote_address is configured

                '
            version:
              type: str
              valid_values:
              - v1
              - v2c
              - v3
            localized:
              type: str
              convert_types:
              - int
              description: 'Engine ID in hexadecimal for localizing auth and/or priv

                '
            auth:
              type: str
              description: 'Hash algorithm

                '
            auth_passphrase:
              type: str
              description: 'Hashed authentication passphrase if localized is used
                else cleartext authentication passphrase

                '
            priv:
              type: str
              description: 'Encryption algorithm

                '
            priv_passphrase:
              type: str
              description: 'Hashed privacy passphrase if localized is used else cleartext
                privacy passphrase

                '
      hosts:
        type: list
        items:
          type: dict
          keys:
            host:
              type: str
              description: Host IP address or name
            vrf:
              type: str
            version:
              type: str
              convert_types:
              - int
              valid_values:
              - '1'
              - 2c
              - '3'
            community:
              type: str
              description: Community name
            users:
              type: list
              items:
                type: dict
                keys:
                  username:
                    type: str
                  authentication_level:
                    type: str
                    valid_values:
                    - auth
                    - noauth
                    - priv
      traps:
        type: dict
        keys:
          enable:
            type: bool
            default: false
            description: 'Enable or disable all snmp-traps

              '
          snmp_traps:
            type: list
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: 'Enable or disable specific snmp-traps and their sub_traps

                    Examples:

                    - "bgp"

                    - "bgp established"

                    '
                enabled:
                  type: bool
                  default: true
      vrfs:
        type: list
        primary_key: name
        items:
          type: dict
          keys:
            name:
              type: str
              description: VRF name
            enable:
              type: bool
  spanning_tree:
    type: dict
    keys:
      root_super:
        type: bool
      edge_port:
        type: dict
        keys:
          bpdufilter_default:
            type: bool
          bpduguard_default:
            type: bool
      mode:
        type: str
        valid_values:
        - mstp
        - rstp
        - rapid-pvst
        - none
      bpduguard_rate_limit:
        type: dict
        keys:
          default:
            type: bool
          count:
            type: int
            convert_types:
            - str
            description: Maximum number of BPDUs per timer interval
      rstp_priority:
        type: int
        convert_types:
        - str
      mst:
        type: dict
        keys:
          pvst_border:
            type: bool
          configuration:
            type: dict
            keys:
              name:
                type: str
              revision:
                type: int
                convert_types:
                - str
                description: 0-65535
              instances:
                type: list
                primary_key: id
                convert_types:
                - dict
                items:
                  type: dict
                  keys:
                    id:
                      type: int
                      convert_types:
                      - str
                      description: Instance ID
                    vlans:
                      type: str
                      convert_types:
                      - int
                      description: '"< vlan_id >, < vlan_id >-< vlan_id >"

                        Example: 15,16,17,18

                        '
      mst_instances:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: str
              convert_types:
              - int
              description: Instance ID
            priority:
              type: int
              convert_types:
              - str
      no_spanning_tree_vlan:
        type: str
        convert_types:
        - int
        description: '"< vlan_id >, < vlan_id >-< vlan_id >"

          Example: 105,202,505-506

          '
      rapid_pvst_instances:
        type: list
        primary_key: id
        convert_types:
        - dict
        items:
          type: dict
          keys:
            id:
              type: str
              convert_types:
              - int
              description: '"< vlan_id >, < vlan_id >-< vlan_id >"

                Example: 105,202,505-506

                '
            priority:
              type: int
              convert_types:
              - str
  standard_access_lists:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Access-list Name
        counters_per_entry:
          type: bool
        sequence_numbers:
          type: list
          required: true
          primary_key: sequence
          convert_types:
          - dict
          items:
            type: dict
            keys:
              sequence:
                type: int
                required: true
                description: Sequence ID
                convert_types:
                - str
              action:
                type: str
                required: true
                description: 'Action as string

                  Example: "deny ip any any"'
  static_routes:
    type: list
    items:
      type: dict
      keys:
        vrf:
          type: str
          description: VRF Name
        destination_address_prefix:
          type: str
          description: IPv4_network/Mask
        interface:
          type: str
        gateway:
          type: str
          description: IPv4 Address
        track_bfd:
          type: bool
          description: Track next-hop using BFD
        distance:
          type: int
          convert_types:
          - str
          min: 1
          max: 255
        tag:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
        name:
          type: str
          description: Description
        metric:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
  switchport_default:
    type: dict
    keys:
      mode:
        type: str
        valid_values:
        - routed
        - access
      phone:
        type: dict
        keys:
          cos:
            type: int
            convert_types:
            - str
            min: 0
            max: 7
          trunk:
            type: str
            valid_values:
            - tagged
            - untagged
          vlan:
            type: int
            description: VLAN ID
            convert_types:
            - str
            min: 1
            max: 4094
  system:
    type: dict
    keys:
      control_plane:
        type: dict
        keys:
          tcp_mss:
            type: dict
            keys:
              ipv4:
                type: int
                description: Segment size
              ipv6:
                type: int
                description: Segment size
          ipv4_access_groups:
            type: list
            primary_key: acl_name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                acl_name:
                  type: str
                vrf:
                  type: str
          ipv6_access_groups:
            type: list
            primary_key: acl_name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                acl_name:
                  type: str
                vrf:
                  type: str
  tacacs_servers:
    type: dict
    keys:
      hosts:
        type: list
        items:
          type: dict
          keys:
            host:
              type: str
              description: Host IP address or name
            vrf:
              type: str
            key:
              type: str
              description: Encrypted key
            key_type:
              type: str
              convert_types:
              - int
              valid_values:
              - '0'
              - '7'
              - 8a
              default: '7'
            single_connection:
              type: bool
            timeout:
              type: int
              convert_types:
              - str
      policy_unknown_mandatory_attribute_ignore:
        type: bool
  tap_aggregation:
    type: dict
    keys:
      mode:
        type: dict
        keys:
          exclusive:
            type: dict
            keys:
              enabled:
                type: bool
              profile:
                description: Profile Name
                type: str
              no_errdisable:
                type: list
                items:
                  type: str
                  description: Interface name e.g Ethernet1, Port-Channel1
      encapsulation_dot1br_strip:
        type: bool
      encapsulation_vn_tag_strip:
        type: bool
      protocol_lldp_trap:
        type: bool
      truncation_size:
        type: int
        description: 'Allowed truncation_size values vary depending on the platform

          '
      mac:
        type: dict
        keys:
          timestamp:
            type: dict
            description: 'mac.timestamp.replace_source_mac and mac.timestamp.header.format
              are mutually exclsuive. If both are defined, replace_source_mac takes
              precedence

              '
            keys:
              replace_source_mac:
                type: bool
              header:
                type: dict
                keys:
                  format:
                    type: str
                    valid_values:
                    - 48-bit
                    - 64-bit
                  eth_type:
                    description: EtherType
                    type: int
                    convert_types:
                    - str
          fcs_append:
            type: bool
            description: 'mac.fcs_append and mac.fcs_error are mutually exclusive.
              If both are defined, mac.fcs_append takes precedence

              '
          fcs_error:
            type: str
            valid_values:
            - correct
            - discard
            - pass-through
  tcam_profile:
    type: dict
    display_name: Hardware TCAM Profiles
    keys:
      system:
        type: str
        description: 'TCAM profile name to activate

          '
      profiles:
        type: list
        secondary_key: config
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              required: true
              description: Tcam-Profile Name
            config:
              type: str
              required: true
              description: 'TCAM Profile Config. Since these can be very long, it
                is often a good idea to import the config from a file.

                Example: "{{lookup(''file'', ''{{ root_dir }}/inventory/TCAM_TRAFFIC_POLICY.conf'')}}"'
  terminal:
    type: dict
    display_name: Terminal Settings
    keys:
      length:
        type: int
        min: 0
        max: 32767
      width:
        type: int
        min: 10
        max: 32767
  trackers:
    type: list
    primary_key: name
    items:
      type: dict
      keys:
        name:
          type: str
          description: Name of tracker object
          required: true
        interface:
          type: str
          description: Name of tracked interface
          required: true
        tracked_property:
          type: str
          default: line-protocol
          description: Property to track
  traffic_policies:
    type: dict
    keys:
      options:
        type: dict
        keys:
          counter_per_interface:
            type: bool
      field_sets:
        type: dict
        keys:
          ipv4:
            type: list
            secondary_key: prefixes
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: IPv4 Prefix Field Set Name
                prefixes:
                  type: list
                  items:
                    type: str
                    description: IPv4 Prefix
          ipv6:
            type: list
            primary_key: name
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: IPv6 Prefix Field Set Name
                prefixes:
                  type: list
                  items:
                    type: str
                    description: IPv6 Prefix
          ports:
            type: list
            primary_key: name
            secondary_key: port_range
            convert_types:
            - dict
            items:
              type: dict
              keys:
                name:
                  type: str
                  description: L4 Port Field Set Name
                port_range:
                  type: str
                  description: 'Example: ''10,20,80,440-450'''
      policies:
        type: list
        primary_key: name
        convert_types:
        - dict
        items:
          type: dict
          keys:
            name:
              type: str
              description: Traffic Policy Name
            matches:
              type: list
              primary_key: name
              convert_types:
              - dict
              items:
                type: dict
                keys:
                  name:
                    type: str
                    description: Traffic Policy Item
                  type:
                    type: str
                    valid_values:
                    - ipv4
                    - ipv6
                  source:
                    type: dict
                    keys:
                      prefixes:
                        type: list
                        items:
                          type: str
                          description: IP address or prefix
                      prefix_lists:
                        type: list
                        description: Field-set prefix lists
                        items:
                          type: str
                  destination:
                    type: dict
                    keys:
                      prefixes:
                        type: list
                        items:
                          type: str
                          description: IP address or prefix
                      prefix_lists:
                        type: list
                        description: Field-set prefix lists
                        items:
                          type: str
                  ttl:
                    type: str
                    description: TTL range
                  fragment:
                    type: dict
                    description: 'The ''fragment'' command is not supported when ''source
                      port''

                      or ''destination port'' command is configured

                      '
                    keys:
                      offset:
                        type: str
                        description: Fragment offset range
                  protocols:
                    type: list
                    primary_key: protocol
                    convert_types:
                    - dict
                    items:
                      type: dict
                      keys:
                        protocol:
                          type: str
                        src_port:
                          type: str
                          description: Port range
                        dst_port:
                          type: str
                          description: Port range
                        src_field:
                          type: str
                          description: L4 port range field set
                        dst_field:
                          type: str
                          description: L4 port range field set
                        flags:
                          type: list
                          items:
                            type: str
                            valid_values:
                            - established
                            - initial
                        icmp_type:
                          type: list
                          items:
                            type: str
                  actions:
                    type: dict
                    keys:
                      dscp:
                        type: int
                        convert_types:
                        - str
                      traffic_class:
                        type: int
                        convert_types:
                        - str
                        description: Traffic class ID
                      count:
                        type: str
                        description: Counter name
                      drop:
                        type: bool
                      log:
                        type: bool
                        description: Only supported when action is set to drop
            default_actions:
              type: dict
              keys:
                ipv4:
                  type: dict
                  keys:
                    dscp:
                      type: int
                      convert_types:
                      - str
                    traffic_class:
                      type: int
                      convert_types:
                      - str
                      description: Traffic class ID
                    count:
                      type: str
                      description: Counter name
                    drop:
                      type: bool
                    log:
                      type: bool
                      description: Only supported when action is set to drop
                ipv6:
                  type: dict
                  keys:
                    dscp:
                      type: int
                      convert_types:
                      - str
                    traffic_class:
                      type: int
                      convert_types:
                      - str
                      description: Traffic class ID
                    count:
                      type: str
                      description: Counter name
                    drop:
                      type: bool
                    log:
                      type: bool
                      description: Only supported when action is set to drop
  tunnel_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Tunnel Interface Name
        description:
          type: str
        shutdown:
          type: bool
        mtu:
          type: int
          min: 68
          max: 65535
          convert_types:
          - str
        vrf:
          type: str
          description: VRF Name
        ip_address:
          type: str
          format: ipv4_cidr
          description: IPv4_address/Mask
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          format: ipv6_cidr
          description: IPv6_address/Mask
        access_group_in:
          description: IPv4 ACL Name for ingress
          type: str
        access_group_out:
          description: IPv4 ACL Name for egress
          type: str
        ipv6_access_group_in:
          description: IPv6 ACL Name for ingress
          type: str
        ipv6_access_group_out:
          description: IPv6 ACL Name for egress
          type: str
        tcp_mss_ceiling:
          type: dict
          keys:
            ipv4:
              type: int
              description: Segment Size for IPv4
              min: 64
              max: 65495
              convert_types:
              - str
            ipv6:
              type: int
              description: Segment Size for IPv6
              min: 64
              max: 65475
              convert_types:
              - str
            direction:
              type: str
              valid_values:
              - ingress
              - egress
              description: 'Optional direction (''ingress'', ''egress'')  for tcp
                mss ceiling

                '
        source_interface:
          type: str
          description: Tunnel Source Interface Name
        destination:
          type: str
          description: IPv4 or IPv6 Address Tunnel Destination
        path_mtu_discovery:
          type: bool
          description: Enable Path MTU Discovery On Tunnel
        eos_cli:
          type: str
          description: Multiline String with EOS CLI rendered directly on the Tunnel
            interface in the final EOS configuration.
  virtual_source_nat_vrfs:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: VRF Name
        ip_address:
          type: str
          description: IPv4 Address
  vlan_interfaces:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: VLAN interface name like "Vlan123"
        description:
          type: str
        shutdown:
          type: bool
        vrf:
          type: str
          description: VRF name
        arp_aging_timeout:
          type: int
          convert_types:
          - str
          description: In seconds
          min: 1
          max: 65535
        arp_cache_dynamic_capacity:
          type: int
          convert_types:
          - str
          min: 0
          max: 4294967295
        arp_gratuitous_accept:
          type: bool
        arp_monitor_mac_address:
          type: bool
        ip_proxy_arp:
          type: bool
        ip_directed_broadcast:
          type: bool
        ip_address:
          type: str
          description: IPv4_address/Mask
        ip_address_secondaries:
          type: list
          items:
            type: str
            description: IPv4_address/Mask
        ip_virtual_router_addresses:
          type: list
          items:
            type: str
            description: IPv4 address or IPv4_address/Mask
        ip_address_virtual:
          type: str
          description: IPv4_address/Mask
        ip_address_virtual_secondaries:
          type: list
          items:
            type: str
            description: IPv4_address/Mask
        ip_igmp:
          type: bool
        ip_helpers:
          type: list
          description: List of DHCP servers
          convert_types:
          - dict
          primary_key: ip_helper
          items:
            type: dict
            keys:
              ip_helper:
                type: str
                description: IP address or hostname of DHCP server
              source_interface:
                type: str
                description: Interface used as source for forwarded DHCP packets
              vrf:
                type: str
                description: VRF where DHCP server can be reached
        ipv6_enable:
          type: bool
        ipv6_address:
          type: str
          description: IPv6_address/Mask
        ipv6_address_virtual:
          type: str
          description: 'IPv6_address/Mask

            "ipv6_address_virtual" key will be deprecated in AVD v4.0 in favor of
            the new "ipv6_address_virtuals"

            If both "ipv6_address_virtual" and "ipv6_address_virtuals" are set, all
            addresses will be configured

            '
        ipv6_address_virtuals:
          type: list
          description: The new "ipv6_address_virtuals" key support multiple virtual
            ipv6 addresses.
          items:
            type: str
            description: IPv6_address/Mask
        ipv6_address_link_local:
          type: str
          description: IPv6_address/Mask
        ipv6_virtual_router_address:
          type: str
          description: '"ipv6_virtual_router_address" key will be deprecated in AVD
            v4.0

            This should not be mixed with the new "ipv6_virtual_router_addresses"
            key below to avoid conflicts.

            '
        ipv6_virtual_router_addresses:
          type: list
          description: Improved "VARPv6" data model to support multiple VARPv6 addresses.
          items:
            type: str
            description: IPv6 address or IPv6_address/Mask
        ipv6_nd_ra_disabled:
          type: bool
        ipv6_nd_managed_config_flag:
          type: bool
        ipv6_nd_prefixes:
          type: list
          convert_types:
          - dict
          primary_key: ipv6_prefix
          items:
            type: dict
            keys:
              ipv6_prefix:
                type: str
                description: IPv6_address/Mask
              valid_lifetime:
                type: str
                description: In seconds <0-4294967295> or infinite
                convert_types:
                - int
              preferred_lifetime:
                type: str
                description: In seconds <0-4294967295> or infinite
                convert_types:
                - int
              no_autoconfig_flag:
                type: bool
        access_group_in:
          type: str
          description: IPv4 access-list name
        access_group_out:
          type: str
          description: IPv4 access-list name
        ipv6_access_group_in:
          type: str
          description: IPv6 access-list name
        ipv6_access_group_out:
          type: str
          description: IPv6 access-list name
        multicast:
          type: dict
          keys:
            ipv4:
              type: dict
              keys:
                boundaries:
                  type: list
                  description: Boundaries can be either 1 ACL or a list of multicast
                    IP address_range(s)/prefix but not combination of both
                  primary_key: boundary
                  items:
                    type: dict
                    keys:
                      boundary:
                        type: str
                        description: IPv4 access-list name or IPv4 multicast group
                          prefix with mask
                      out:
                        type: bool
                source_route_export:
                  type: dict
                  keys:
                    enabled:
                      type: bool
                      required: true
                    administrative_distance:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 255
                static:
                  type: bool
            ipv6:
              type: dict
              keys:
                boundaries:
                  type: list
                  description: Boundaries can be either 1 ACL or a list of multicast
                    IP address_range(s)/prefix but not combination of both
                  primary_key: boundary
                  items:
                    type: dict
                    keys:
                      boundary:
                        type: str
                        description: IPv6 access-list name or IPv6 multicast group
                          prefix with mask
                source_route_export:
                  type: dict
                  keys:
                    enabled:
                      type: bool
                      required: true
                    administrative_distance:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 255
                static:
                  type: bool
        ospf_network_point_to_point:
          type: bool
        ospf_area:
          type: str
          convert_types:
          - int
        ospf_cost:
          type: int
          convert_types:
          - str
        ospf_authentication:
          type: str
          valid_values:
          - none
          - simple
          - message-digest
        ospf_authentication_key:
          type: str
          description: Encrypted password used for simple authentication
        ospf_message_digest_keys:
          type: list
          description: Keys used for message-digest authentication
          convert_types:
          - dict
          primary_key: id
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
              hash_algorithm:
                type: str
                valid_values:
                - md5
                - sha1
                - sha256
                - sha384
                - sha512
              key:
                type: str
                description: Encrypted password
        pim:
          type: dict
          keys:
            ipv4:
              type: dict
              keys:
                dr_priority:
                  type: int
                  convert_types:
                  - str
                  min: 0
                  max: 429467295
                sparse_mode:
                  type: bool
                local_interface:
                  type: str
        isis_enable:
          type: str
          description: ISIS instance name
        isis_passive:
          type: bool
        isis_metric:
          type: int
          convert_types:
          - str
        isis_network_point_to_point:
          type: bool
        mtu:
          type: int
          convert_types:
          - str
        no_autostate:
          type: bool
        vrrp_ids:
          type: list
          description: Improved "vrrp" data model to support multiple VRRP IDs
          primary_key: id
          items:
            type: dict
            keys:
              id:
                type: int
                convert_types:
                - str
                description: VRID
              priority_level:
                type: int
                convert_types:
                - str
                description: Instance priority
              advertisement:
                type: dict
                keys:
                  interval:
                    type: int
                    convert_types:
                    - str
                    description: Interval in seconds
              preempt:
                type: dict
                keys:
                  enabled:
                    type: bool
                    required: true
                  delay:
                    type: dict
                    keys:
                      minimum:
                        type: int
                        convert_types:
                        - str
                        description: Minimum preempt delay in seconds
                      reload:
                        type: int
                        convert_types:
                        - str
                        description: Reload preempt delay in seconds
              timers:
                type: dict
                keys:
                  delay:
                    type: dict
                    keys:
                      reload:
                        type: int
                        description: Delay after reload in seconds.
                        convert_types:
                        - str
              tracked_object:
                type: list
                primary_key: name
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                      description: Tracked object name
                    decrement:
                      type: int
                      convert_types:
                      - str
                      min: 1
                      max: 254
                      description: Decrement VRRP priority by 1-254
                    shutdown:
                      type: bool
              ipv4:
                type: dict
                keys:
                  address:
                    type: str
                    required: true
                    description: Virtual IPv4 address
                  version:
                    type: int
                    convert_types:
                    - str
                    valid_values:
                    - 2
                    - 3
              ipv6:
                type: dict
                keys:
                  address:
                    type: str
                    required: true
                    description: Virtual IPv6 address
        vrrp:
          type: dict
          description: '"vrrp" key will be deprecated in AVD v4.0

            This should not be mixed with the new "vrrp_ids" key above to avoid conflicts.

            '
          keys:
            virtual_router:
              type: str
              description: Virtual Router ID
            priority:
              type: int
              convert_types:
              - str
              description: Instance priority
            advertisement_interval:
              type: int
              convert_types:
              - str
            preempt_delay_minimum:
              type: int
              convert_types:
              - str
            ipv4:
              type: str
              description: Virtual IPv4 address
            ipv6:
              type: str
              description: Virtual IPv6 address
        ip_attached_host_route_export:
          type: dict
          keys:
            distance:
              type: int
              convert_types:
              - str
              min: 1
              max: 255
        bfd:
          type: dict
          keys:
            echo:
              type: bool
            interval:
              type: int
              convert_types:
              - str
              description: Rate in milliseconds
            min_rx:
              type: int
              convert_types:
              - str
              description: Minimum RX hold time in milliseconds
            multiplier:
              type: int
              convert_types:
              - str
              min: 3
              max: 50
        service_policy:
          type: dict
          keys:
            pbr:
              type: dict
              keys:
                input:
                  type: str
                  description: Name of policy-map used for policy based routing
        pvlan_mapping:
          type: str
          description: List of VLANs as string
        tenant:
          type: str
          description: Key only used for documentation or validation purposes
        tags:
          type: list
          items:
            type: str
          description: Key only used for documentation or validation purposes
        type:
          type: str
          description: Key only used for documentation or validation purposes
        eos_cli:
          type: str
          description: Multiline EOS CLI rendered directly on the VLAN interface in
            the final EOS configuration
  vlan_internal_order:
    type: dict
    keys:
      allocation:
        type: str
        required: true
        valid_values:
        - ascending
        - descending
      range:
        type: dict
        required: true
        keys:
          beginning:
            type: int
            min: 1
            max: 4094
            required: true
            description: Vlan ID
            convert_types:
            - str
          ending:
            type: int
            min: 1
            max: 4094
            required: true
            description: Vlan ID
            convert_types:
            - str
  vlans:
    type: list
    primary_key: id
    convert_types:
    - dict
    items:
      type: dict
      keys:
        id:
          type: int
          convert_types:
          - str
          description: VLAN ID
        name:
          type: str
          description: VLAN Name
        state:
          type: str
          valid_values:
          - active
          - suspend
        trunk_groups:
          type: list
          items:
            type: str
            description: Trunk Group Name
        private_vlan:
          type: dict
          keys:
            type:
              type: str
              valid_values:
              - community
              - isolated
            primary_vlan:
              type: int
              convert_types:
              - str
              description: Primary VLAN ID
        tenant:
          type: str
          description: Key only used for documentation or validation purposes
  vmtracer_sessions:
    type: list
    primary_key: name
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          required: true
          description: Vmtracer Session Name
        url:
          type: str
        username:
          type: str
        password:
          type: str
          description: Type 7 Password Hash
        autovlan_disable:
          type: bool
        source_interface:
          type: str
  vrfs:
    type: list
    primary_key: name
    description: 'These keys are ignored if the name of the vrf is ''default''

      '
    convert_types:
    - dict
    items:
      type: dict
      keys:
        name:
          type: str
          description: VRF Name
        description:
          type: str
        ip_routing:
          type: bool
        ipv6_routing:
          type: bool
        ip_routing_ipv6_interfaces:
          type: bool
        tenant:
          type: str
          description: Key only used for documentation or validation purposes
  vxlan_interface:
    type: dict
    keys:
      Vxlan1:
        type: dict
        keys:
          description:
            type: str
          vxlan:
            type: dict
            keys:
              source_interface:
                type: str
                description: Source Interface Name
              mlag_source_interface:
                type: str
              udp_port:
                type: int
                convert_types:
                - str
              virtual_router_encapsulation_mac_address:
                type: str
                description: '"mlag-system-id" or ethernet_address (H.H.H)

                  '
              bfd_vtep_evpn:
                type: dict
                keys:
                  interval:
                    type: int
                    convert_types:
                    - str
                  min_rx:
                    type: int
                    convert_types:
                    - str
                  multiplier:
                    type: int
                    convert_types:
                    - str
                    min: 3
                    max: 50
                  prefix_list:
                    type: str
              qos:
                type: dict
                description: 'For the Traffic Class to be derived based on the outer
                  DSCP field of the incoming VxLan packet, the core ports must be
                  in "DSCP Trust" mode.

                  !!!Warning, only few hardware types with software version >= 4.26.0
                  support the below knobs to configure Vxlan DSCP mapping.

                  '
                keys:
                  dscp_propagation_encapsulation:
                    type: bool
                  map_dscp_to_traffic_class_decapsulation:
                    type: bool
              vlans:
                type: list
                primary_key: id
                convert_types:
                - dict
                items:
                  type: dict
                  keys:
                    id:
                      type: int
                      convert_types:
                      - str
                      required: true
                      description: VLAN ID
                    vni:
                      type: int
                      convert_types:
                      - str
                    multicast_group:
                      type: str
                      description: IP Multicast Group Address
                    flood_vteps:
                      type: list
                      items:
                        type: str
                        description: Remote VTEP IP Address
              vrfs:
                type: list
                primary_key: name
                convert_types:
                - dict
                items:
                  type: dict
                  keys:
                    name:
                      type: str
                      required: true
                      description: VRF Name
                    vni:
                      type: int
                      convert_types:
                      - str
                    multicast_group:
                      type: str
                      description: IP Multicast Group Address
              flood_vteps:
                type: list
                items:
                  type: str
                  description: Remote VTEP IP Address
              flood_vtep_learned_data_plane:
                type: bool
          eos_cli:
            type: str
            description: Multiline String with EOS CLI rendered directly on the Vxlan
              interface in the final EOS configuration.
