Expose the API Dump through in-engine API

As a Roblox developer, it is currently too hard to get and access information contained inside the API Dump. In order for them to function, plugins that rely upon knowing the API members or API tags of an Instance have to have HTTP requests turned on. This is problematic because there is currently no granular permission system for plugins, so enabling HTTP requests for one enables it for all of them, potentially allowing bad actors to do whatever they wish. It’s also inconvenient to have to rely upon a third party to get the API dump, as requests to Roblox’s site are blocked.

It would be incredibly convenient and overall safer if Roblox would grant some form of access to the API dump’s information from in-engine without relying upon HTTP requests. This would personally make my plugin (an Instance serializer) much easier to produce and would undoubtedly make other plugins that rely upon the API dump easier to write and maintain.

Both members and the tags contained in the API dump should be available, because they’re both useful information to have; as an example, being able to tell if an Instance is a Service or not would be trivial if Instance tags were available to developers, and mass-changes could be made to Instances just by checking if they had a certain property of not. This would be particularly useful for GuiObjects which don’t always inherit from the same class despite having very similiar properties.

39 Likes

This feature would also be very useful in the creation of instance converter plugins which are up-to-date with the current API. The most popular plugins of that kind available in the library right now rely on fetching the current API dump through a web request, which, as highlighted in the main post, requires HTTP requests to be globally turned on in the place (risky).

Verifying whether an instance has a specific property or method would also be made more cleaner: our current methods for doing this are either maintaining a serialized copy of the API dump and cross-comparing instances with it; using IsA/ClassName, which sometimes requires multiple checks if the classes don’t have common ancestors, and its usage obscures the purpose of code which was designed to check if a property exists; or local success, result = pcall(function() local _ = Instance[property] end), which feels very much like a hack.

6 Likes

This is a huge factor for supporting this IMO. Having access to API dump is super useful for various plugins, but keeping it up-to-date imposes risk to the user.

7 Likes

Bumping this since I have been making my own properties & explorer panel. I want to have a nicer interface and the possibility of a very custom view for what I do data-wise for our game. There have been several issues related to this exact feature not being available:

  • Fetching an up to date version of the API dump significantly increases initial load time, which is not good for the explorer view especially.
  • There is no easy way to get the API dump for the client while playtesting since all HTTP requests by plugins are blocked. I have to send the entire dump through a RemoteEvent which freezes the game for a solid 4 or 5 seconds.
  • I’m very reluctant to make the plugin public and possibly selling it because of aforementioned issues, even though it has some features that many would likely consider useful for their general studio workflow.

Also, it seems like studio can already natively export this data by simply running RobloxStudioBeta.exe -API filename.json? Giving developers the exact same data using StudioService or something similar would be all that is needed.

2 Likes

Huge apologies for the bump but I need to inform users, that HTTP requests by plugins are now allowed* ( Introducing Plugin HTTP Permissions )

1 Like