diff --git a/BeckmanComms.Api.DataTransferObjects/V2/Cafe/CafeAnnouncementDto.cs b/BeckmanComms.Api.DataTransferObjects/V2/Cafe/CafeAnnouncementDto.cs
new file mode 100644
index 0000000000000000000000000000000000000000..9a32b26871c0268c8383ec56151176336dec5c9e
--- /dev/null
+++ b/BeckmanComms.Api.DataTransferObjects/V2/Cafe/CafeAnnouncementDto.cs
@@ -0,0 +1,20 @@
+using System;
+
+namespace BeckmanComms.Api.DataTransferObjects.V2.Cafe
+{
+    /// <summary>
+    /// Data Transfer Object representing a cafe announcement.
+    /// </summary>
+    public class CafeAnnouncementDto
+    {
+        /// <summary>
+        /// Date to post the announcement.
+        /// </summary>
+        public DateTime Date { get; set; }
+
+        /// <summary>
+        /// Message to be displayed in the announcement.
+        /// </summary>
+        public string Message { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/BeckmanComms.Api.DataTransferObjects/V2/Cafe/DishDto.cs b/BeckmanComms.Api.DataTransferObjects/V2/Cafe/DishDto.cs
new file mode 100644
index 0000000000000000000000000000000000000000..f51e2d0cc20e20219cacef58ab21b5665dd9c610
--- /dev/null
+++ b/BeckmanComms.Api.DataTransferObjects/V2/Cafe/DishDto.cs
@@ -0,0 +1,68 @@
+using System.Collections.Generic;
+
+namespace BeckmanComms.Api.DataTransferObjects.V2.Cafe
+{
+    /// <summary>
+    /// Data Transfer Object representing a
+    /// </summary>
+    public class DishDto
+    {
+        /// <summary>
+        /// The name of the dish.
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// The category of the dish (e.g., Soup, Sandwich, Salad).
+        /// </summary>
+        public string Category { get; set; }
+
+        /// <summary>
+        /// The description of the dish.
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// The path to the image of the dish.
+        /// </summary>
+        public string Image { get; set; }
+
+        /// <summary>
+        /// The description of the image of the dish, suitable for use as alt text.
+        /// </summary>
+        public string ImageDescription { get; set; }
+
+        /// <summary>
+        /// The standard price of the dish.
+        /// </summary>
+        public double StandardPrice { get; set; }
+
+        /// <summary>
+        /// The price of a half-order of the dish, when available.
+        /// </summary>
+        public double? HalfPrice { get; set; }
+
+        /// <summary>
+        /// Indicates whether the item is available every day (<c>DishDto.Specialty == false</c>) or
+        /// as an occasional specialty item (<c>DishDto.Specialty == true</c>).
+        /// </summary>
+        public bool Specialty { get; set; }
+
+        /// <summary>
+        /// Indicates whether the item is in-stock (<c>DishDto.SoldOut == false</c>) or
+        /// sold-out (<c>DishDto.SoldOut == true</c>).
+        /// </summary>
+        public bool SoldOut { get; set; }
+
+        /// <summary>
+        /// Indicates whether the item should not be displayed as a featured item (<c>DishDto.Featured == false</c>) or
+        /// should be displayed as a featured item (<c>DishDto.SoldOut == true</c>).
+        /// </summary>
+        public bool Featured { get; set; }
+
+        /// <summary>
+        /// The qualities of a dish (e.g., Vegetarian, Vegan, Gluten Free).
+        /// </summary>
+        public IEnumerable<DishQualityDto> DishQualities { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/BeckmanComms.Api.DataTransferObjects/V2/Cafe/DishQualityDto.cs b/BeckmanComms.Api.DataTransferObjects/V2/Cafe/DishQualityDto.cs
new file mode 100644
index 0000000000000000000000000000000000000000..6de39b577fe9c74a0993c40207c4e7f9f31c8c55
--- /dev/null
+++ b/BeckmanComms.Api.DataTransferObjects/V2/Cafe/DishQualityDto.cs
@@ -0,0 +1,26 @@
+namespace BeckmanComms.Api.DataTransferObjects.V2.Cafe
+{
+    /// <summary>
+    /// Data Transfer Object representing a dish quality.
+    /// </summary>
+    /// <example>Gluten Free</example>
+    /// <example>Spicy</example>
+    /// <example>Vegan</example>
+    public class DishQualityDto
+    {
+        /// <summary>
+        /// The name of the dish quality.
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// The icon representing the dish quality.
+        /// </summary>
+        public string Icon { get; set; }
+
+        /// <summary>
+        /// The description of the icon representing the dish quality.
+        /// </summary>
+        public string IconDescription { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/BeckmanComms.Api.DataTransferObjects/V2/Cafe/MenuDto.cs b/BeckmanComms.Api.DataTransferObjects/V2/Cafe/MenuDto.cs
new file mode 100644
index 0000000000000000000000000000000000000000..afc5d0d84bbca352cff7baf0a765fed9bfc16725
--- /dev/null
+++ b/BeckmanComms.Api.DataTransferObjects/V2/Cafe/MenuDto.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+
+namespace BeckmanComms.Api.DataTransferObjects.V2.Cafe
+{
+    /// <summary>
+    /// Data Transfer Object containing combined menu database fields.
+    /// </summary>
+    public class MenuDto
+    {
+        /// <summary>
+        /// Menu date in a human-readable format.
+        /// </summary>
+        public string Title { get; set; }
+
+        /// <summary>
+        /// Menu date.
+        /// </summary>
+        public DateTime Date { get; set; }
+
+        /// <summary>
+        /// Collection containing dishes that belong to this menu.
+        /// </summary>
+        public IEnumerable<DishDto> Dishes { get; set; }
+    }
+}
\ No newline at end of file