diff --git a/src/Speckle.Objects/Data/ArchicadObject.cs b/src/Speckle.Objects/Data/ArchicadObject.cs
new file mode 100644
index 00000000..d243ba25
--- /dev/null
+++ b/src/Speckle.Objects/Data/ArchicadObject.cs
@@ -0,0 +1,19 @@
+using Speckle.Sdk.Models;
+
+namespace Speckle.Objects.Data;
+
+///
+/// Represents a base class object in Archicad
+///
+[SpeckleType("Objects.Data.ArchicadObject")]
+public class ArchicadObject : DataObject, IArchicadObject
+{
+ public required string type { get; set; }
+
+ public required string level { get; set; }
+
+ [DetachProperty]
+ public required List elements { get; set; }
+
+ IReadOnlyList IArchicadObject.elements => elements;
+}
diff --git a/src/Speckle.Objects/Interfaces.cs b/src/Speckle.Objects/Interfaces.cs
index 43f6d52f..b2df1903 100644
--- a/src/Speckle.Objects/Interfaces.cs
+++ b/src/Speckle.Objects/Interfaces.cs
@@ -167,6 +167,15 @@ public interface IGisObject : IDataObject
string type { get; }
}
+public interface IArchicadObject : IDataObject
+{
+ string type { get; }
+
+ string level { get; }
+
+ IReadOnlyList elements { get; }
+}
+
public interface INavisworksObject : IDataObject { }