Jsonstore.io Module

Hi guys. I recently created a module which allows easier communication with your jsonstore.io endpoints. It’s really simple to use, so thought I’d share it with the community, rather than keeping it to myself.

You can grab a copy here: https://www.roblox.com/library/2756363731/jsonstore-API

I’ve also added RoDocs support, so all available methods can be viewed from your documentation viewer. Here they are in case you don’t have this plugin.

Methods

Summary
<string> JsonStore.GenerateEndpoint()
<table> JsonStore.new(<string> Token)
<boolean> JsonStore:Ping()
<table> JsonStore:GET(<string|nil> Path)
<boolean> JsonStore:DELETE(<string|nil> Path)
<table> JsonStore:PUT(<string> Path, <table> Content)
<table> JsonStore:POST(<string> Path, <table> Content)

JsonStore.GenerateEndpoint()
Generates a new endpoint token.

Returns
<string> Token to access the new jsonstore.io endpoint.


JsonStore.new(Token)
Instantiates a new JsonStore.

Parameter Description Data Type
Token The token for your jsonstore.io endpoint string

Returns
<table> API ready to communicate with your endpoint.


JsonStore:Ping()
Returns true if HTTP requests are enabled, and server is online.

Returns
<boolean> True if server is online.


JsonStore:GET(Path)
Send a GET request to your endpoint. Path can be nil if no path is required.

Parameter Description Data Type
Path Path to perform GET request to. `string

Returns
<table> Data returned from database.


JsonStore:DELETE(Path)
Send a DELETE request to your endpoint. Path can be nil if no path is required.

Parameter Description Data Type
Path Path to perform DELETE request to. `string

Returns
<boolean> true if DELETE request was successful.


JsonStore:PUT(Path, Content)
Send a PUT request to your endpoint. Path can be nil if no path is required.

Parameter Description Data Type
Path Path to perform PUT request to. `string
Content Data to PUT into the database. table

Returns
<table> The content PUT into the database.

- on error -
<nil>, <string> Error message.


JsonStore:POST(Path, Content)
Send a POST request to your endpoint. Path can be nil if no path is required.

Parameter Description Data Type
Path Path to perform POST request to. `string
Content Data to POST to the database. table

Returns
<table> The content POST’ed to the database.

- on error -
<nil>, <string> Error message.


Side note;
I’m pretty sure jsonstore.io’s PUT and POST methods handle the request in exactly the same way. The entire document is overwritten regardless of which of these methods you choose. Perform a GET request and update the necessary key/value pairs, then PUT or POST the data back to the endpoint if you need to update a document.

30 Likes

What is this exactly? A SQL Database but in Roblox? :thinking: Cool.

I just never heard of jsonstore.io before, I thought it was an IO game for a second.:roll_eyes:

7 Likes

jsonstore.io is basically a free, open-source, JSON-based, datastore created by @bluzi. It’s intended for small projects, but allows for free and secure storage without having to sign up or give any details. The endpoint displayed on the homepage is only generated once, so make sure you save this URL somewhere, as you will need it to access the datastore again in future.

Sounds cool! Doesn’t exactly say how small or large one can hold data on their servers so I hope that this could possibly help as a backup when DataStores break down if they decide to break down again (hopefully they don’t! :crossed_fingers:)

I believe the limit is 100kb per-request, due to body-parser’s default limit; however, they claim not to set a limit, and that you can buy storage from another provider, should you require a full cloud solution, as this is intended for small projects that just require a quick datastore.

Edit: Just added a method to generate new endpoint token. See JsonStore.GenerateEndpoint().

I’d like to try looking into this as an alternative to DataStores, however I still have faith in good old DataStores and potential improvements in the future as well as with the help of feature requests and bug reports. Thanks for sharing, this is definitely a resource I’ll have to look into. Bookmarked for the future.

1 Like

Awesome module, and thanks for making me aware of this tool :slightly_smiling_face:

Only downside I would say for this is that if you don’t efficiently store data (e.g storing everything in one object), eventually you could possibly face larger data loading times, which could be a hinderance. Anyone wanting to make use of this should consider the above before working with it.

3 Likes

Would you mind if I rewrote this for @Validark’s RoStrap? He said he’d be happy to have it in there if I made a few changes.

Edit: Well, I already did it, I just am asking permission before I send him it.

3 Likes

Please, be my guest. I’m merely providing you a basic wrapper to the API. Could be updated to include more powerful methods, such as refining and filtering of data

2 Likes

Interesting, I might give it a try when I get back on my PC.

Sorry for the like giant bump, but I found this really interesting since it’s a free service and a alternative to normal datastores (ew)

But I think this service is down right? It doesn’t lead to anything; unless it’s like just a very different thing but I’m not sure;

If this doesn’t work now, at least it was a great module in the past

Yes, you’re correct. The maintainer of the service unfortunately stopped maintaining it, and the site is now offline. However, someone else created an alternative service which you can find here:

https://jsonbox.io/

The catch with this version is that data only persists for 30 days (unless updated), so it should ideally only be used where you intend to store temporary data for a short period of time. I’m sure you could find an alternative somewhere else (or even self-hosted) if you need a more permanent solution!

2 Likes

Yeah I’mma look into that, It can be useful for less important data like player settings or whatever.

1 Like

Update: jsonbox.io is being closed.