Index: TFP-WebServer/WebServer/src/WebAPI/APIs/GameData/EntityClass.cs
===================================================================
--- TFP-WebServer/WebServer/src/WebAPI/APIs/GameData/EntityClass.cs	(revision 485)
+++ TFP-WebServer/WebServer/src/WebAPI/APIs/GameData/EntityClass.cs	(revision 485)
@@ -0,0 +1,64 @@
+﻿using JetBrains.Annotations;
+using Utf8Json;
+using Webserver.Permissions;
+
+namespace Webserver.WebAPI.APIs.GameData {
+	[UsedImplicitly]
+	internal class EntityClass : AbsRestApi {
+		private static readonly byte[] jsonKeyName = JsonWriter.GetEncodedPropertyNameWithBeginObject ("name");
+		private static readonly byte[] jsonKeyId = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("id");
+		private static readonly byte[] jsonKeyCommandIndex = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("commandId");
+		private static readonly byte[] jsonKeyManualSpawnType = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("manualSpawnType");
+
+		private readonly byte[] allClassesSerialized;
+
+		public EntityClass (Web _parent) {
+			JsonWriter writer = new JsonWriter ();
+			
+			writer.WriteBeginArray ();
+
+			int written = 0;
+			int iCommandIndex = 0;
+			foreach ((int id, global::EntityClass entityClass) in global::EntityClass.list.Dict) {
+				if (written > 0) {
+					writer.WriteValueSeparator ();
+				}
+
+				written++;
+
+				string name = entityClass.entityClassName;
+				global::EntityClass.UserSpawnType spawnType = entityClass.userSpawnType;
+				
+				writer.WriteRaw (jsonKeyName);
+				writer.WriteString (name);
+
+				writer.WriteRaw (jsonKeyId);
+				writer.WriteInt32 (id);
+
+				if (entityClass.userSpawnType != global::EntityClass.UserSpawnType.None) {
+					iCommandIndex++;
+			
+					writer.WriteRaw (jsonKeyCommandIndex);
+					writer.WriteInt32 (iCommandIndex);
+				}
+
+				writer.WriteRaw (jsonKeyManualSpawnType);
+				writer.WriteString (spawnType.ToStringCached ());
+				
+				writer.WriteEndObject ();
+			}
+
+			writer.WriteEndArray ();
+
+			allClassesSerialized = writer.ToUtf8ByteArray ();
+		}
+
+		protected override void HandleRestGet (RequestContext _context) {
+			PrepareEnvelopedResult (out JsonWriter writer);
+			writer.WriteRaw (allClassesSerialized);
+			SendEnvelopedResult (_context, ref writer);
+		}
+
+		public override int DefaultPermissionLevel () => AdminWebModules.PermissionLevelGuest;
+	}
+}
Index: TFP-WebServer/WebServer/src/WebAPI/APIs/GameData/EntityClass.openapi.yaml
===================================================================
--- TFP-WebServer/WebServer/src/WebAPI/APIs/GameData/EntityClass.openapi.yaml	(revision 485)
+++ TFP-WebServer/WebServer/src/WebAPI/APIs/GameData/EntityClass.openapi.yaml	(revision 485)
@@ -0,0 +1,62 @@
+openapi: 3.1.0
+info:
+  title: EntityClass
+  version: '1'
+
+components:
+  schemas:
+    EntityClassElement:
+      type: object
+      properties:
+        name:
+          type: string
+          examples:
+            - zombieArlene
+        id:
+          type: integer
+          examples:
+            - -1440238285
+        commandId:
+          type: integer
+          examples:
+            - 1
+        manualSpawnType:
+          type: string
+          examples:
+            - None
+            - Console
+            - Menu
+      required:
+        - name
+        - id
+        - manualSpawnType
+
+    EntityClassList:
+      type: array
+      items:
+        $ref: '#/components/schemas/EntityClassElement'
+
+
+paths:
+  /api/entityclass:
+    get:
+      tags:
+        - GameData
+      summary: EntityClass list
+      description: Fetch a list of defined EntityClasses
+      operationId: entityclass.get
+      responses:
+        200:
+          description: List of EntityClasses
+          content:
+            application/json:
+              schema:
+                type: object
+                properties:
+                  data:
+                    $ref: '#/components/schemas/EntityClassList'
+                  meta:
+                    $ref: './openapi.yaml#/components/schemas/ResultEnvelopeMeta'
+                required:
+                  - data
+                  - meta
