diff --git a/device-types/Juniper/EX4200-24F.yaml b/device-types/Juniper/EX4200-24F.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ef5c134c94de5d0d7d91ba53abc2d7ffd061ed06
--- /dev/null
+++ b/device-types/Juniper/EX4200-24F.yaml
@@ -0,0 +1,124 @@
+---
+manufacturer: Juniper
+model: EX4200-24F
+slug: juniper-ex4200-24f
+u_height: 1
+is_full_depth: true
+weight: 7.3
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/1
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/2
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/3
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/4
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/5
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/6
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/7
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/8
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/9
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/10
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/11
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/12
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/13
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/14
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/15
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/16
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/17
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/18
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/19
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/20
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/21
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/22
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/23
+    type: 1000base-x-sfp
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-24P.yaml b/device-types/Juniper/EX4200-24P.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..364cd34572a2844e6e2bee5279f3b1b24ad3fb53
--- /dev/null
+++ b/device-types/Juniper/EX4200-24P.yaml
@@ -0,0 +1,124 @@
+---
+manufacturer: Juniper
+model: EX4200-24P
+slug: juniper-ex4200-24p
+u_height: 1
+is_full_depth: true
+weight: 7.8
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/1
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/2
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/3
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/4
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/5
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/6
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/7
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/8
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/9
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/10
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/11
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/12
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/13
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/14
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/15
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/16
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/17
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/18
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/19
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/20
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/21
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/22
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/23
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-24PX.yaml b/device-types/Juniper/EX4200-24PX.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..25ab616f95550eb519543146ae41bf3d46de12c4
--- /dev/null
+++ b/device-types/Juniper/EX4200-24PX.yaml
@@ -0,0 +1,124 @@
+---
+manufacturer: Juniper
+model: EX4200-24PX
+slug: juniper-ex4200-24px
+u_height: 1
+is_full_depth: true
+weight: 8.16
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/1
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/2
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/3
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/4
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/5
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/6
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/7
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/8
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/9
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/10
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/11
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/12
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/13
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/14
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/15
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/16
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/17
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/18
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/19
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/20
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/21
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/22
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/23
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-24T.yaml b/device-types/Juniper/EX4200-24T.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a9a1adfb50c1acb311ea939cd36ad72f9a13fd38
--- /dev/null
+++ b/device-types/Juniper/EX4200-24T.yaml
@@ -0,0 +1,88 @@
+---
+manufacturer: Juniper
+model: EX4200-24T
+slug: juniper-ex4200-24t
+u_height: 1
+is_full_depth: true
+weight: 7.5
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/1
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/2
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/3
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/4
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/5
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/6
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/7
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/8
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/9
+    type: 1000base-t
+  - name: ge-0/0/10
+    type: 1000base-t
+  - name: ge-0/0/11
+    type: 1000base-t
+  - name: ge-0/0/12
+    type: 1000base-t
+  - name: ge-0/0/13
+    type: 1000base-t
+  - name: ge-0/0/14
+    type: 1000base-t
+  - name: ge-0/0/15
+    type: 1000base-t
+  - name: ge-0/0/16
+    type: 1000base-t
+  - name: ge-0/0/17
+    type: 1000base-t
+  - name: ge-0/0/18
+    type: 1000base-t
+  - name: ge-0/0/19
+    type: 1000base-t
+  - name: ge-0/0/20
+    type: 1000base-t
+  - name: ge-0/0/21
+    type: 1000base-t
+  - name: ge-0/0/22
+    type: 1000base-t
+  - name: ge-0/0/23
+    type: 1000base-t
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-48P.yaml b/device-types/Juniper/EX4200-48P.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b24abae7939ed457ed234458593de8bf792091c5
--- /dev/null
+++ b/device-types/Juniper/EX4200-48P.yaml
@@ -0,0 +1,220 @@
+---
+manufacturer: Juniper
+model: EX4200-48P
+slug: juniper-ex4200-48p
+u_height: 1
+is_full_depth: true
+weight: 8.3
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/1
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/2
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/3
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/4
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/5
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/6
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/7
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/8
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/9
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/10
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/11
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/12
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/13
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/14
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/15
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/16
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/17
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/18
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/19
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/20
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/21
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/22
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/23
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/24
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/25
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/26
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/27
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/28
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/29
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/30
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/31
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/32
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/33
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/34
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/35
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/36
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/37
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/38
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/39
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/40
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/41
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/42
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/43
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/44
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/45
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/46
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: ge-0/0/47
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
+  - name: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-48PX.yaml b/device-types/Juniper/EX4200-48PX.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..00d545ba8350576e8aa3f1ee9901efe2c312951d
--- /dev/null
+++ b/device-types/Juniper/EX4200-48PX.yaml
@@ -0,0 +1,220 @@
+---
+manufacturer: Juniper
+model: EX4200-48PX
+slug: juniper-ex4200-48px
+u_height: 1
+is_full_depth: true
+weight: 8.61
+weight_unit: kg
+comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/1
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/2
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/3
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/4
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/5
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/6
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/7
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/8
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/9
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/10
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/11
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/12
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/13
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/14
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/15
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/16
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/17
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/18
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/19
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/20
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/21
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/22
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/23
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/24
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/25
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/26
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/27
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/28
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/29
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/30
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/31
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/32
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/33
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/34
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/35
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/36
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/37
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/38
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/39
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/40
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/41
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/42
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/43
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/44
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/45
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/46
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: ge-0/0/47
+    type: 1000base-t
+    poe_mode: pse
+    poe_type: type2-ieee802.3at
+  - name: vcp-0
+    label: Virtual Chassis Port 0
+    type: other
+  - name: vcp-1
+    label: Virtual Chassis Port 1
+    type: other
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/EX4200-48T.yaml b/device-types/Juniper/EX4200-48T.yaml
index 5b40f5b948467b49610d6bbacc603b92f1dfbc9d..1a88d39ac7b705a28b3014c09c1a18ecf3b4bc78 100644
--- a/device-types/Juniper/EX4200-48T.yaml
+++ b/device-types/Juniper/EX4200-48T.yaml
@@ -4,6 +4,8 @@ model: EX4200-48T
 slug: juniper-ex4200-48t
 u_height: 1
 is_full_depth: true
+weight: 7.8
+weight_unit: kg
 comments: '[Juniper EX4200 Data Sheet](https://www.juniper.net/assets/us/en/local/pdf/datasheets/1000215-en.pdf)'
 console-ports:
   - name: Console
@@ -11,22 +13,40 @@ console-ports:
 interfaces:
   - name: ge-0/0/0
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/1
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/2
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/3
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/4
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/5
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/6
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/7
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/8
     type: 1000base-t
+    poe_mode: pse
+    poe_type: type1-ieee802.3af
   - name: ge-0/0/9
     type: 1000base-t
   - name: ge-0/0/10
@@ -105,18 +125,12 @@ interfaces:
     type: 1000base-t
   - name: ge-0/0/47
     type: 1000base-t
-  - name: et-0/1/0
-    type: 40gbase-x-qsfpp
-  - name: et-0/1/1
-    type: 40gbase-x-qsfpp
-  - name: et-0/1/2
-    type: 40gbase-x-qsfpp
-  - name: et-0/1/3
-    type: 40gbase-x-qsfpp
-power-ports:
-  - name: PSU0
-    type: iec-60320-c14
-    maximum_draw: 350
-  - name: PSU1
-    type: iec-60320-c14
-    maximum_draw: 350
+module-bays:
+  - name: Power Supply 0
+    label: PSU 0
+    position: PSU0
+  - name: Power Supply 1
+    label: PSU 1
+    position: PSU1
+  - name: Uplink Module
+    position: '1'
diff --git a/device-types/Juniper/MX10.yaml b/device-types/Juniper/MX10.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..11abbfd9b94ed8adf4593c6609413900b9a71b41
--- /dev/null
+++ b/device-types/Juniper/MX10.yaml
@@ -0,0 +1,38 @@
+---
+manufacturer: Juniper
+model: MX10
+slug: juniper-mx10
+airflow: front-to-rear
+weight: 13.6
+weight_unit: kg
+is_full_depth: true
+u_height: 2
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-x-xfp
+  - name: xe-0/0/1
+    type: 10gbase-x-xfp
+  - name: xe-0/0/2
+    type: 10gbase-x-xfp
+  - name: xe-0/0/3
+    type: 10gbase-x-xfp
+power-ports:
+  - name: PEM0
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+  - name: PEM1
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: MIC0
+    position: '1'
+  - name: MIC1
+    position: '2'
diff --git a/device-types/Juniper/MX240.yaml b/device-types/Juniper/MX240.yaml
index ca165f89ce80cc232094bd85f938f5ada4a61989..5dda735f77c062d2fd932c2b2ec36f5841a3c2ec 100644
--- a/device-types/Juniper/MX240.yaml
+++ b/device-types/Juniper/MX240.yaml
@@ -2,15 +2,31 @@
 manufacturer: Juniper
 model: MX240
 slug: juniper-mx240
+comments: '[Juniper MX240 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx240/)'
 u_height: 5
 is_full_depth: true
-comments: '[Juniper MX240 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx240/)'
 module-bays:
-  - name: PSU0
+  - name: PEM0
+    label: PSU 0
+    position: PSU0
+  - name: PEM1
+    label: PSU 1
+    position: PSU1
+  - name: PEM2
+    label: PSU 2
+    position: PSU2
+  - name: PEM3
+    label: PSU 3
+    position: PSU3
+  - name: CB0
+    label: Routing Engine 0
+    position: re0
+  - name: CB1
+    label: Routing Engine 1
+    position: re1
+  - name: FPC 0
     position: '0'
-  - name: PSU1
+  - name: FPC 1
     position: '1'
-  - name: PSU2
+  - name: FPC 2
     position: '2'
-  - name: PSU3
-    position: '3'
diff --git a/device-types/Juniper/MX40.yaml b/device-types/Juniper/MX40.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d3a9eabbd001fed68c9a9b537d3bb62097fdbea5
--- /dev/null
+++ b/device-types/Juniper/MX40.yaml
@@ -0,0 +1,38 @@
+---
+manufacturer: Juniper
+model: MX40
+slug: juniper-mx40
+airflow: front-to-rear
+weight: 13.6
+weight_unit: kg
+is_full_depth: true
+u_height: 2
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-x-xfp
+  - name: xe-0/0/1
+    type: 10gbase-x-xfp
+  - name: xe-0/0/2
+    type: 10gbase-x-xfp
+  - name: xe-0/0/3
+    type: 10gbase-x-xfp
+power-ports:
+  - name: PEM0
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+  - name: PEM1
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: MIC0
+    position: '1'
+  - name: MIC1
+    position: '2'
diff --git a/device-types/Juniper/MX480.yaml b/device-types/Juniper/MX480.yaml
index 1a51dd0024bea45dce13c8703c554aa45713d91d..0384eccecd4e6b2c779e2b66035d36af1bbbbb9b 100644
--- a/device-types/Juniper/MX480.yaml
+++ b/device-types/Juniper/MX480.yaml
@@ -2,15 +2,39 @@
 manufacturer: Juniper
 model: MX480
 slug: juniper-mx480
+airflow: front-to-rear
+weight: 29.7
+weight_unit: kg
 u_height: 8
 is_full_depth: true
-comments: '[Juniper MX480 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx480/)'
 module-bays:
-  - name: PSU0
+  - name: PEM0
+    label: PSU 0
+    position: PSU0
+  - name: PEM1
+    label: PSU 1
+    position: PSU1
+  - name: PEM2
+    label: PSU 2
+    position: PSU2
+  - name: PEM3
+    label: PSU 3
+    position: PSU3
+  - name: CB0
+    label: Routing Engine 0
+    position: re0
+  - name: CB1
+    label: Routing Engine 1
+    position: re1
+  - name: FPC 0
     position: '0'
-  - name: PSU1
+  - name: FPC 1
     position: '1'
-  - name: PSU2
+  - name: FPC 2
     position: '2'
-  - name: PSU3
+  - name: FPC 3
     position: '3'
+  - name: FPC 4
+    position: '4'
+  - name: FPC 5
+    position: '5'
diff --git a/device-types/Juniper/MX5.yaml b/device-types/Juniper/MX5.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..8bfd11cfec23226c46ce52d78f405de87f4d2343
--- /dev/null
+++ b/device-types/Juniper/MX5.yaml
@@ -0,0 +1,38 @@
+---
+manufacturer: Juniper
+model: MX5
+slug: juniper-mx5
+airflow: front-to-rear
+weight: 13.6
+weight_unit: kg
+is_full_depth: true
+u_height: 2
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: xe-0/0/0
+    type: 10gbase-x-xfp
+  - name: xe-0/0/1
+    type: 10gbase-x-xfp
+  - name: xe-0/0/2
+    type: 10gbase-x-xfp
+  - name: xe-0/0/3
+    type: 10gbase-x-xfp
+power-ports:
+  - name: PEM0
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+  - name: PEM1
+    type: iec-60320-c14
+    maximum_draw: 500
+    allocated_draw: 365
+console-ports:
+  - name: Console
+    type: rj-45
+module-bays:
+  - name: MIC0
+    position: '1'
+  - name: MIC1
+    position: '2'
diff --git a/device-types/Juniper/MX80.yaml b/device-types/Juniper/MX80.yaml
index 2f69dd781e5598ca4a81bfdd04bb4d1db2e18a0a..d80ccd7a1498d4d14d1d3f53da0c2c16c8ded186 100644
--- a/device-types/Juniper/MX80.yaml
+++ b/device-types/Juniper/MX80.yaml
@@ -2,6 +2,9 @@
 manufacturer: Juniper
 model: MX80
 slug: juniper-mx80
+airflow: front-to-rear
+weight: 13.6
+weight_unit: kg
 is_full_depth: true
 u_height: 2
 interfaces:
diff --git a/device-types/Juniper/MX960-With-Cable-Management.yaml b/device-types/Juniper/MX960-With-Cable-Management.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..4be1545c7bc6bbb6a6a202a4a50f1a3e146dbbf8
--- /dev/null
+++ b/device-types/Juniper/MX960-With-Cable-Management.yaml
@@ -0,0 +1,56 @@
+---
+manufacturer: Juniper
+model: MX960 With Cable Management
+slug: juniper-mx960-cm
+airflow: front-to-rear
+weight: 78.93
+weight_unit: kg
+comments: MX960 with extended cable management installed
+u_height: 20
+is_full_depth: true
+module-bays:
+  - name: PEM0
+    label: PSU 0
+    position: PSU0
+  - name: PEM1
+    label: PSU 1
+    position: PSU1
+  - name: PEM2
+    label: PSU 2
+    position: PSU2
+  - name: PEM3
+    label: PSU 3
+    position: PSU3
+  - name: FPC 0
+    position: '0'
+  - name: FPC 1
+    position: '1'
+  - name: FPC 2
+    position: '2'
+  - name: FPC 3
+    position: '3'
+  - name: FPC 4
+    position: '4'
+  - name: FPC 5
+    position: '5'
+  - name: CB0
+    label: Routing Engine 0
+    position: re0
+  - name: CB1
+    label: Routing Engine 1
+    position: re1
+  - name: CB2
+    label: Routing Engine 2
+    position: re2
+  - name: FPC 6
+    position: '6'
+  - name: FPC 7
+    position: '7'
+  - name: FPC 8
+    position: '8'
+  - name: FPC 9
+    position: '9'
+  - name: FPC 10
+    position: '10'
+  - name: FPC 11
+    position: '11'
diff --git a/device-types/Juniper/MX960.yaml b/device-types/Juniper/MX960.yaml
index a455331cd1cc977016bcd5630f2af9ca4ec57e23..3dc22594cced21b364ebb187e9253cc24d435ca5 100644
--- a/device-types/Juniper/MX960.yaml
+++ b/device-types/Juniper/MX960.yaml
@@ -2,15 +2,55 @@
 manufacturer: Juniper
 model: MX960
 slug: juniper-mx960
+airflow: front-to-rear
+weight: 68.04
+weight_unit: kg
+comments: '[Juniper MX960 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx960/)'
 u_height: 16
 is_full_depth: true
-comments: '[Juniper MX960 Data Sheet](https://www.juniper.net/us/en/products-services/routing/mx-series/mx960/)'
 module-bays:
-  - name: PSU0
+  - name: PEM0
+    label: PSU 0
+    position: PSU0
+  - name: PEM1
+    label: PSU 1
+    position: PSU1
+  - name: PEM2
+    label: PSU 2
+    position: PSU2
+  - name: PEM3
+    label: PSU 3
+    position: PSU3
+  - name: FPC 0
     position: '0'
-  - name: PSU1
+  - name: FPC 1
     position: '1'
-  - name: PSU2
+  - name: FPC 2
     position: '2'
-  - name: PSU3
+  - name: FPC 3
     position: '3'
+  - name: FPC 4
+    position: '4'
+  - name: FPC 5
+    position: '5'
+  - name: CB0
+    label: Routing Engine 0
+    position: re0
+  - name: CB1
+    label: Routing Engine 1
+    position: re1
+  - name: CB2
+    label: Routing Engine 2
+    position: re2
+  - name: FPC 6
+    position: '6'
+  - name: FPC 7
+    position: '7'
+  - name: FPC 8
+    position: '8'
+  - name: FPC 9
+    position: '9'
+  - name: FPC 10
+    position: '10'
+  - name: FPC 11
+    position: '11'
diff --git a/module-types/Juniper/DPC-R-40GE-SFP-B.yaml b/module-types/Juniper/DPC-R-40GE-SFP-B.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..bfb2b241ee0b9b49e53ee4f3acaf2106e8114e63
--- /dev/null
+++ b/module-types/Juniper/DPC-R-40GE-SFP-B.yaml
@@ -0,0 +1,93 @@
+---
+manufacturer: Juniper
+model: DPC-R-40GE-SFP-B
+part_number: DPC-R-40GE-SFP-B
+interfaces:
+  - name: ge-{module}/0/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/10
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/DPCE-R-40GE-TX-A.yaml b/module-types/Juniper/DPCE-R-40GE-TX-A.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..bd4aa19d6909e2a8c6af09e1c1cb517bd7bcd233
--- /dev/null
+++ b/module-types/Juniper/DPCE-R-40GE-TX-A.yaml
@@ -0,0 +1,93 @@
+---
+manufacturer: Juniper
+model: DPCE-R-40GE-TX-A
+part_number: DPCE-R-40GE-TX-A
+interfaces:
+  - name: ge-{module}/0/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/10
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/10
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/EX-PWR-320-AC.yml b/module-types/Juniper/EX-PWR-320-AC.yml
new file mode 100644
index 0000000000000000000000000000000000000000..4252a5065d31481edda6e83632c1521ca0c5cdbb
--- /dev/null
+++ b/module-types/Juniper/EX-PWR-320-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: EX-PWR-320-AC
+part_number: 740-020957
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 320
diff --git a/module-types/Juniper/EX-PWR-600-AC.yml b/module-types/Juniper/EX-PWR-600-AC.yml
new file mode 100644
index 0000000000000000000000000000000000000000..12fae40ab6fc892df183efa4ec38d580b8c8334c
--- /dev/null
+++ b/module-types/Juniper/EX-PWR-600-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: EX-PWR-600-AC
+part_number: EX-PWR-600-AC
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 600
diff --git a/module-types/Juniper/EX-PWR-930-AC.yml b/module-types/Juniper/EX-PWR-930-AC.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c092db709d41138aac9dcc436d796f097471e07e
--- /dev/null
+++ b/module-types/Juniper/EX-PWR-930-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: EX-PWR-930-AC
+part_number: 740-020959
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 930
diff --git a/module-types/Juniper/EX-UM-2XFP.yaml b/module-types/Juniper/EX-UM-2XFP.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..eb3529f8cd914f63a3fcedacc688ed5da385d209
--- /dev/null
+++ b/module-types/Juniper/EX-UM-2XFP.yaml
@@ -0,0 +1,9 @@
+---
+manufacturer: Juniper
+model: EX-UM-2XFP
+part_number: EX-UM-2XFP
+interfaces:
+  - name: et-{module}/0/0
+    type: 10gbase-x-xfp
+  - name: et-{module}/0/1
+    type: 10gbase-x-xfp
diff --git a/module-types/Juniper/MPC3E-2x-MIC-3D-20GE-SFP.yaml b/module-types/Juniper/MPC3E-2x-MIC-3D-20GE-SFP.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..933945a4f047b6ef92f50d3c8cdab00513440753
--- /dev/null
+++ b/module-types/Juniper/MPC3E-2x-MIC-3D-20GE-SFP.yaml
@@ -0,0 +1,85 @@
+---
+manufacturer: Juniper
+model: MPC3E with 2x MIC-3D-20GE-SFP
+part_number: MPC3E-2x-MIC-3D-20GE-SFP
+interfaces:
+  - name: ge-{module}/0/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/2/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/3/9
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/MPC3E-MIC-3D-20GE-SFP.yaml b/module-types/Juniper/MPC3E-MIC-3D-20GE-SFP.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e11de47baeb46e3127b4d1392acafdfdafec0824
--- /dev/null
+++ b/module-types/Juniper/MPC3E-MIC-3D-20GE-SFP.yaml
@@ -0,0 +1,45 @@
+---
+manufacturer: Juniper
+model: MPC3E with MIC-3D-20GE-SFP
+part_number: MPC3E-MIC-3D-20GE-SFP
+interfaces:
+  - name: ge-{module}/0/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/0/9
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/0
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/1
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/2
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/3
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/4
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/5
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/6
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/7
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/8
+    type: 1000base-x-sfp
+  - name: ge-{module}/1/9
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/MPC4E-3D-32XGE-SFPP.yaml b/module-types/Juniper/MPC4E-3D-32XGE-SFPP.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d7fa084946d649f6f3f6ac656d771ddb908689f1
--- /dev/null
+++ b/module-types/Juniper/MPC4E-3D-32XGE-SFPP.yaml
@@ -0,0 +1,69 @@
+---
+manufacturer: Juniper
+model: MPC4E-3D-32XGE-SFPP
+part_number: 750-037358
+interfaces:
+  - name: xe-{module}/0/0
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/1
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/2
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/3
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/4
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/5
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/6
+    type: 1000base-x-sfp
+  - name: xe-{module}/0/7
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/0
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/1
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/2
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/3
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/4
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/5
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/6
+    type: 1000base-x-sfp
+  - name: xe-{module}/1/7
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/0
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/1
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/2
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/3
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/4
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/5
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/6
+    type: 1000base-x-sfp
+  - name: xe-{module}/2/7
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/0
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/1
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/2
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/3
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/4
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/5
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/6
+    type: 1000base-x-sfp
+  - name: xe-{module}/3/7
+    type: 1000base-x-sfp
diff --git a/module-types/Juniper/MPC7E-MRATE.yaml b/module-types/Juniper/MPC7E-MRATE.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f0cf12779c8731ac6344aad1c322828c46fd388b
--- /dev/null
+++ b/module-types/Juniper/MPC7E-MRATE.yaml
@@ -0,0 +1,29 @@
+---
+manufacturer: Juniper
+model: MPC7E-MRATE
+part_number: 750-056519
+interfaces:
+  - name: et-{module}/0/0
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/0/1
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/0/2
+    type: 100gbase-x-qsfp28
+  - name: et-{module}/0/3
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/0/4
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/0/5
+    type: 100gbase-x-qsfp28
+  - name: et-{module}/1/0
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/1/1
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/1/2
+    type: 100gbase-x-qsfp28
+  - name: et-{module}/1/3
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/1/4
+    type: 40gbase-x-qsfpp
+  - name: et-{module}/1/5
+    type: 100gbase-x-qsfp28
diff --git a/module-types/Juniper/PWR-MX480-1200-AC.yml b/module-types/Juniper/PWR-MX480-1200-AC.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8ceca971f8bff343543e391efdb03a3df77adbf1
--- /dev/null
+++ b/module-types/Juniper/PWR-MX480-1200-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: PWR-MX480-1200-AC
+part_number: 740-022697
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 1590
diff --git a/module-types/Juniper/PWR-MX480-2520-AC.yml b/module-types/Juniper/PWR-MX480-2520-AC.yml
new file mode 100644
index 0000000000000000000000000000000000000000..005debe80b3160155e4fe8e98dd2fb13e77a6809
--- /dev/null
+++ b/module-types/Juniper/PWR-MX480-2520-AC.yml
@@ -0,0 +1,8 @@
+---
+manufacturer: Juniper
+model: PWR-MX480-2520-AC
+part_number: PWR-MX480-2520-AC
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 2050
diff --git a/module-types/Juniper/PWR-MX80-AC-S-B.yml b/module-types/Juniper/PWR-MX80-AC-S-B.yml
new file mode 100644
index 0000000000000000000000000000000000000000..74ece17e0c0fda6db931f405e2da5834a3fcbd40
--- /dev/null
+++ b/module-types/Juniper/PWR-MX80-AC-S-B.yml
@@ -0,0 +1,11 @@
+---
+manufacturer: Juniper
+model: PWR-MX80-AC-S-B
+part_number: COUPAFAEAB
+comments: PSU for MX5, MX10, MX40, MX80
+weight: 1.18
+weight_unit: kg
+power-ports:
+  - name: PSU {module}
+    type: iec-60320-c14
+    maximum_draw: 500
diff --git a/module-types/Juniper/RE-S-1300-2048.yaml b/module-types/Juniper/RE-S-1300-2048.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6e38bad94fe1728dbb995897cb9dd6092cd6cd19
--- /dev/null
+++ b/module-types/Juniper/RE-S-1300-2048.yaml
@@ -0,0 +1,13 @@
+---
+manufacturer: Juniper
+model: RE-S-1300-2048
+part_number: RE-S-1300-2048
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: AUX
+    type: rj-45
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
diff --git a/module-types/Juniper/RE-S-2000-4096.yaml b/module-types/Juniper/RE-S-2000-4096.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..caa06fe8984cfbafcaa07b48ba44c6bad5cb14f7
--- /dev/null
+++ b/module-types/Juniper/RE-S-2000-4096.yaml
@@ -0,0 +1,13 @@
+---
+manufacturer: Juniper
+model: RE-S-2000-4096
+part_number: RE-S-2000-4096
+console-ports:
+  - name: Console
+    type: rj-45
+  - name: AUX
+    type: rj-45
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true