All instance names with their members are listed in this module! (ROBLOX API DUMP)

Are you looking for a list of constructible instances and their members? Maybe… something like this:

If that’s the case, you’re in the right spot! I have that lua file here for you.
Download for your own usage here

:warning: This API dump is truncated to only include constructable instances with their non-deprecated members. Non-constructable instances, such as services, will not be reflected here.

If you ever want to dump this API yourself using Roblox’s reflection metadata, check out the source code used to compile this module:

Compiler Source Code
local ServerScriptService = game:GetService("ServerScriptService")

local ApiMain = require(ServerScriptService.API)
local Reflection = ApiMain.ReflectionMetadata

local Module = Instance.new("ModuleScript", ServerScriptService)
Module.Name = "==DUMP"

type RawClass = {Members : {[number] : string}, IsUsable : boolean}

local Start = os.clock()

local Classes = {}
local ConstructableInstances = {}

local function Crop(... : string) : string
	return ((...) :: string):gsub("[%[%]=+]", "") :: string
end

local function TransformBoolean(... : string) : boolean
	return #({...}) > 0 and (if (Crop(...) :: string) == "true" then true else false) or false
end

local function Cooldown()
	if os.clock() - Start > 0.05 then
		Start = os.clock()
		task.wait()
	end
end

local function IsUsableClass(ClassName : string)
	return pcall(function()
		Instance.new(ClassName, nil)
	end)
end

local function IsA(SubClass : string, ParentClass : string)
	local Success, Value = pcall(function()
		local PointerInstance : Instance = Instance.new(SubClass, nil)

		return PointerInstance:IsA(ParentClass)
	end)
	
	return if Success then Value else false
end

local function IncludeMembers(InclusiveMembers, ClassMembers)
	for _, Member in ClassMembers do
		InclusiveMembers[#InclusiveMembers + 1] = Member
	end
end

local function SourceConcat(SourceTable : {[any] : any})
	local Content = "{%s}"
	
	for Index, Value in SourceTable do
		local ConvertedValue : string = nil
		
		if typeof(Value) == "table" then
			local ConcatValue : string = SourceConcat(Value)
			local NewValue = ConcatValue:sub(2, ConcatValue:len() - 1)
			
			ConvertedValue = ("\t['%s'] = %s"):format(Index, NewValue)
		else
			if typeof(Index) == "number" then
				ConvertedValue = ("\t'%s'"):format(Value)
			elseif typeof(Index) == "string" then
				ConvertedValue = ("\t['%s'] = '%s'"):format(Index, Value)
			end
		end
		
		Content = Content:sub(1, Content:len() - 1):format(ConvertedValue:sub(2, ConvertedValue:len()) .. ";\n%s") .. Content:sub(Content:len(), Content:len())
	end
	
	return "\t" .. Content:gsub("%%s", "") .. "\n"
end

for _, Class in Reflection.Classes do
	if TransformBoolean(Class.Deprecated) == true then
		continue
	else
		local Name = Crop(Class.Name)
		local Members = {}
		local IsUsable = IsUsableClass(Name)
		
		for _, Member in Class.Members do
			if TransformBoolean(Member.Deprecated) then
				continue
			else
				Members[#Members + 1] = Crop(Member.Name)
			end
		end
		
		Classes[Name] = {
			Members = Members,
			IsUsable = IsUsable
		}
		
		Cooldown()
	end
end

for ClassName, ClassData : RawClass in pairs(Classes) do
	if ClassData.IsUsable then
		local InclusiveMembers = {}
		
		for ParentClassName, ParentClassData : RawClass in pairs(Classes) do
			if IsA(ClassName, ParentClassName) then
				IncludeMembers(InclusiveMembers, ParentClassData.Members)
			end
		end
		
		ConstructableInstances[ClassName] = InclusiveMembers
		
		Cooldown()
	end
end

Module.Source = SourceConcat(ConstructableInstances):gsub("};", "};\n")

That’s all! Have a great day folks :dizzy:

8 Likes

If you just want a certain member type, refer to this function:

local function IsMemberProperty(ClassName, MemberName) : boolean
	local Success, Value = pcall(function()
		return if typeof(Instance.new(ClassName, nil)[MemberName]) == "function" then false else true
	end)
	
	return (if Success then Value :: boolean else false) :: boolean
end

print("MoveTo", IsMemberProperty("Humanoid", "MoveTo")) -- false
print("WalkSpeed", IsMemberProperty("Humanoid", "WalkSpeed")) -- true
print("JumpPower", IsMemberProperty("Humanoid", "JumpPower")) -- true

It’s always welcome to see more variants of similar things, but I just wanted to mention that I’ve already done something similar a while back:

1 Like

Gotcha, your module is really great for general usage! However, my variant is more appropriate for reading constructible instances and their non-deprecated members.

I’ll be sure to use both of our resources, depending on the circumstance :star_struck:

1 Like

At least I can get properties easily by just coding :slight_smile:

Also I need the model URL instead of downloading a .lua as I have like 750 MB of storage in C:

Ive waited for this for very long and only now it exists, thank you very much. I wanted an efficient solution to store parts to a datastore without using httpService to get the API dump and here it is.

One thing, Does the “compiler” script allow blacklisting and whitelisting? I would like to save some space.

1 Like

The lua file is only just over 70kb

1 Like

The compiler script was used to create this module, so that means it could likely be modified to how you would like it.

uuhh there’s over 4,000 lines of code, how much effort and hard work you did, is just soo insane

2 Likes