diff --git a/device-types/Juniper/EX4600-40F.yaml b/device-types/Juniper/EX4600-40F.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e7d1028c59b60c0ea6bc45d3a56b573832fedb65
--- /dev/null
+++ b/device-types/Juniper/EX4600-40F.yaml
@@ -0,0 +1,144 @@
+---
+manufacturer: Juniper
+model: EX4600-40F
+slug: juniper-ex4600-40f
+part_number: EX4600-40F
+u_height: 1
+is_full_depth: true
+airflow: front-to-rear
+weight: 9.84
+weight_unit: kg
+comments: '[Juniper EX4600 Data Sheet](https://www.juniper.net/content/dam/www/assets/datasheets/us/en/switches/ex4600-ethernet-switch-datasheet.pdf)'
+interfaces:
+  - name: ge-0/0/0
+    type: 1000base-x-sfp
+  - name: ge-0/0/1
+    type: 1000base-x-sfp
+  - name: ge-0/0/2
+    type: 1000base-x-sfp
+  - name: ge-0/0/3
+    type: 1000base-x-sfp
+  - name: ge-0/0/4
+    type: 1000base-x-sfp
+  - name: ge-0/0/5
+    type: 1000base-x-sfp
+  - name: ge-0/0/6
+    type: 1000base-x-sfp
+  - name: ge-0/0/7
+    type: 1000base-x-sfp
+  - name: ge-0/0/8
+    type: 1000base-x-sfp
+  - name: ge-0/0/9
+    type: 1000base-x-sfp
+  - name: ge-0/0/10
+    type: 1000base-x-sfp
+  - name: ge-0/0/11
+    type: 1000base-x-sfp
+  - name: ge-0/0/12
+    type: 1000base-x-sfp
+  - name: ge-0/0/13
+    type: 1000base-x-sfp
+  - name: ge-0/0/14
+    type: 1000base-x-sfp
+  - name: ge-0/0/15
+    type: 1000base-x-sfp
+  - name: ge-0/0/16
+    type: 1000base-x-sfp
+  - name: ge-0/0/17
+    type: 1000base-x-sfp
+  - name: ge-0/0/18
+    type: 1000base-x-sfp
+  - name: ge-0/0/19
+    type: 1000base-x-sfp
+  - name: ge-0/0/20
+    type: 1000base-x-sfp
+  - name: ge-0/0/21
+    type: 1000base-x-sfp
+  - name: ge-0/0/22
+    type: 1000base-x-sfp
+  - name: ge-0/0/23
+    type: 1000base-x-sfp
+  - name: xe-0/0/0
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/1
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/2
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/3
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/4
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/5
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/6
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/7
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/8
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/9
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/10
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/11
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/12
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/13
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/14
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/15
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/16
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/17
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/18
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/19
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/20
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/21
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/22
+    type: 10gbase-x-sfpp
+  - name: xe-0/0/23
+    type: 10gbase-x-sfpp
+  - name: et-0/0/24
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/25
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/26
+    type: 40gbase-x-qsfpp
+  - name: et-0/0/27
+    type: 40gbase-x-qsfpp
+  - name: em0
+    type: 1000base-t
+    mgmt_only: true
+  - name: em1
+    type: 1000base-t
+    mgmt_only: true
+module-bays:
+  - name: PIC 1
+    position: '1'
+  - name: PIC 2
+    position: '2'
+  - name: Power Supply 0
+    position: '0'
+  - name: Power Supply 1
+    position: '1'
+  - name: Fan tray 0
+    position: '0'
+  - name: Fan tray 1
+    position: '1'
+  - name: Fan tray 2
+    position: '2'
+  - name: Fan tray 3
+    position: '3'
+  - name: Fan tray 4
+    position: '4'
+console-ports:
+  - name: Console
+    type: rj-45
diff --git a/device-types/Juniper/MX80-48T.yaml b/device-types/Juniper/MX80-48T.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..527d7b7d74c344e7e503aac77c2be072f4b9e129
--- /dev/null
+++ b/device-types/Juniper/MX80-48T.yaml
@@ -0,0 +1,129 @@
+---
+manufacturer: Juniper
+model: MX80-48T
+slug: juniper-mx80-48t
+u_height: 2
+part_number: MX80-48T
+is_full_depth: true
+airflow: front-to-rear
+weight: 13.6
+weight_unit: kg
+comments: Data sheet not available, device is EOL
+console-ports:
+  - name: Console
+    type: rj-45
+interfaces:
+  - name: fxp0
+    type: 1000base-t
+    mgmt_only: true
+  - name: ge-1/0/0
+    type: 1000base-t
+  - name: ge-1/0/1
+    type: 1000base-t
+  - name: ge-1/0/2
+    type: 1000base-t
+  - name: ge-1/0/3
+    type: 1000base-t
+  - name: ge-1/0/4
+    type: 1000base-t
+  - name: ge-1/0/5
+    type: 1000base-t
+  - name: ge-1/0/6
+    type: 1000base-t
+  - name: ge-1/0/7
+    type: 1000base-t
+  - name: ge-1/0/8
+    type: 1000base-t
+  - name: ge-1/0/9
+    type: 1000base-t
+  - name: ge-1/0/10
+    type: 1000base-t
+  - name: ge-1/0/11
+    type: 1000base-t
+  - name: ge-1/1/0
+    type: 1000base-t
+  - name: ge-1/1/1
+    type: 1000base-t
+  - name: ge-1/1/2
+    type: 1000base-t
+  - name: ge-1/1/3
+    type: 1000base-t
+  - name: ge-1/1/4
+    type: 1000base-t
+  - name: ge-1/1/5
+    type: 1000base-t
+  - name: ge-1/1/6
+    type: 1000base-t
+  - name: ge-1/1/7
+    type: 1000base-t
+  - name: ge-1/1/8
+    type: 1000base-t
+  - name: ge-1/1/9
+    type: 1000base-t
+  - name: ge-1/1/10
+    type: 1000base-t
+  - name: ge-1/1/11
+    type: 1000base-t
+  - name: ge-1/2/0
+    type: 1000base-t
+  - name: ge-1/2/1
+    type: 1000base-t
+  - name: ge-1/2/2
+    type: 1000base-t
+  - name: ge-1/2/3
+    type: 1000base-t
+  - name: ge-1/2/4
+    type: 1000base-t
+  - name: ge-1/2/5
+    type: 1000base-t
+  - name: ge-1/2/6
+    type: 1000base-t
+  - name: ge-1/2/7
+    type: 1000base-t
+  - name: ge-1/2/8
+    type: 1000base-t
+  - name: ge-1/2/9
+    type: 1000base-t
+  - name: ge-1/2/10
+    type: 1000base-t
+  - name: ge-1/2/11
+    type: 1000base-t
+  - name: ge-1/3/0
+    type: 1000base-t
+  - name: ge-1/3/1
+    type: 1000base-t
+  - name: ge-1/3/2
+    type: 1000base-t
+  - name: ge-1/3/3
+    type: 1000base-t
+  - name: ge-1/3/4
+    type: 1000base-t
+  - name: ge-1/3/5
+    type: 1000base-t
+  - name: ge-1/3/6
+    type: 1000base-t
+  - name: ge-1/3/7
+    type: 1000base-t
+  - name: ge-1/3/8
+    type: 1000base-t
+  - name: ge-1/3/9
+    type: 1000base-t
+  - name: ge-1/3/10
+    type: 1000base-t
+  - name: ge-1/3/11
+    type: 1000base-t
+  - 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
+module-bays:
+  - name: Power Supply 0
+    position: '0'
+  - name: Power Supply 1
+    position: '1'
+  - name: Fan tray 0
+    position: '0'
diff --git a/module-types/Juniper/EX4600-EM-8F.yaml b/module-types/Juniper/EX4600-EM-8F.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..06ad65dff1206a90abbf60990d33563841477aba
--- /dev/null
+++ b/module-types/Juniper/EX4600-EM-8F.yaml
@@ -0,0 +1,21 @@
+---
+manufacturer: Juniper
+model: EX4600-EM-8F
+part_number: EX4600-EM-8F
+interfaces:
+  - name: xe-{module}/0/0
+    type: 10gbase-x-sfpp
+  - name: xe-{module}/0/1
+    type: 10gbase-x-sfpp
+  - name: xe-{module}/0/2
+    type: 10gbase-x-sfpp
+  - name: xe-{module}/0/3
+    type: 10gbase-x-sfpp
+  - name: xe-{module}/0/4
+    type: 10gbase-x-sfpp
+  - name: xe-{module}/0/5
+    type: 10gbase-x-sfpp
+  - name: xe-{module}/0/6
+    type: 10gbase-x-sfpp
+  - name: xe-{module}/0/7
+    type: 10gbase-x-sfpp
diff --git a/module-types/Juniper/QFX-EM-4Q.yaml b/module-types/Juniper/QFX-EM-4Q.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..b31a0d784559bfebc330886ac0fad3bc9d909ce1
--- /dev/null
+++ b/module-types/Juniper/QFX-EM-4Q.yaml
@@ -0,0 +1,13 @@
+---
+manufacturer: Juniper
+model: QFX-EM-4Q
+part_number: QFX-EM-4Q
+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: 40gbase-x-qsfpp
+  - name: et-{module}/0/3
+    type: 40gbase-x-qsfpp