Announcing Datastore APIs for Open Cloud

I never said I was annoyed with this update. In fact, I’m all for it. I was merely stating the extra measures that may need to be taken to protect data in the event one is leaked.

This doesn’t address my point at all. It ignores the fact that other team members will be able to eventually and that with big teams this may lead to some being leaked if not careful.

That’s not a solution in any way. Yes, you don’t need to worry if you haven’t created one, but what about the people who have?

Hi, can you talk more about the use cases for such info? I’m especially interested in user info. Thx!

1 Like

I keep having problems on the Creator Dashboard not loading the list of datastores that I have for a game. It’s been happening the past couple of days, it used to load for me but not anymore.

1 Like

Sorry for the inconvenience, we will take a look at this issue!

Edit: this should now be resolved, please let us know if it works for you aswell! :smiley:

1 Like

I’m having some trouble creating API keys for group games despite the “Create group API keys” and “Administer all group API keys” permissions being enabled for my role in said group.

Even though “Creator” is set to Boba, I am still only getting my personal games under “Search for an experience”.


Am I misunderstanding the way API keys are created for groups or is this a bug? According to the tutorial on the creator website, users with the permissions I listed above should be able to create and modify API keys for group games:

Edit: It appears to be showing some group games now however the one I am looking for (the main game) is not showing up, only private games that have been unused for years.
image

1 Like

Sorry about the delay. You should be able to search for your game by typing in the search bar and pressing enter. The games that show up in the drop down isn’t in any particular order, it is just how the list of games gets paginated.

Also just to double check, are you seeing both group and personal games under the experience tab? You should only be able to see group games when you’re under Boba and you should only see your personal games when you’re under your personal account.

No worries – it looks like the issue related to my personal games showing while creator was set to Boba was a one-time issue, the only problem I am seeing now is that when I type in the full name of an experience, it does not show up: (the desired game’s name is " :rabbit: Boba Cafe :egg:")
image

If I just type “cafe”, however, the game does show up. This isn’t an issue for me anymore after I was able to get the game by typing a less specific set of characters, but thought I’d post this here anyways.
image

This is very exciting!
Thank you so much for this feature!

With this, I keep getting two or three different types of errors.

Error 1
ContentTypeError: 0, message='Attempt to decode JSON with unexpected mimetype: ', url=URL('https://apis.roblox.com/datastores/v1/universes/2806753119/standard-datastores/datastore/entries/entry?datastoreName=banData&entryKey=1356185892%27)

Error 2
AttributeError: 'ClientResponse' object has no attribute 'keys'

Code

async def create_key_json(self,datastore:str,key:str,data:dict,scope=None):
		params = {"datastoreName":datastore,'entryKey':key}
		if scope:
			params["scope"] = scope
		paramss = json.dumps(params)
		encoded = str.encode(paramss)
		jsonData = json.dumps(data)
		checksum = hashlib.md5(jsonData).digest()
		checksum = base64.b64encode(checksum)

		print(checksum,"md5")
		print(type(checksum))
		
		headers = self._H()
		headers["Content-MD5"] = str(checksum)
		#headers["Content-Type"] = 'application/json'

	
		
		CS  = aiohttp.ClientSession(headers=headers)
		req = await CS.post(self._objects_url,params=params,json=data)
		req = await req.json()
		await CS.close()
		return req

Is there a way to fix this? Been getting this type of errors for 2 weeks.

Hi, I think there might be an issue with how you’re converting the data to json. Try something like this

encoded = str.encode(json.dumps(data)) → send this as data to your post request like requests.post(self._objects_url, data=encoded , ...) instead of json=data

for checksum, you need to do something like this

encoded = str.encode(json.dumps(data))
checksum = hashlib.md5(encoded).digest()
checksum = base64.b64encode(checksum)

Let me know if this works :smiley: !

1 Like

Alright it seems to have work thank you. Just one more thing, I am now getting this error:

<ClientResponse(https://apis.roblox.com/datastores/v1/universes/2806753119/standard-datastores/datastore/entries/entry?datastoreName=banData&entryKey=1356185892) [500 Internal Server Error]>
<CIMultiDictProxy('Content-Length': '0', 'Date': 'Tue, 17 May 2022 23:57:19 GMT', 'Server': 'envoy', 'strict-transport-security': 'max-age=3600', 'x-envoy-upstream-service-time': '35', 'report-to': '{"group":"network-errors","max_age":604800,"endpoints":[{"url":"https://ncs.roblox.com/upload"}]}', 'nel': '{"report_to":"network-errors","max_age":604800,"success_fraction":0.001,"failure_fraction":1}')>

With code:

async def create_key_json(self,datastore:str,key:str,data:dict,scope=None):
		params = {"datastoreName":datastore,'entryKey':key}
		if scope:
			params["scope"] = scope
		encoded = str.encode(json.dumps(data))
		checksum = hashlib.md5(encoded).digest()
		checksum = base64.b64encode(checksum)

		#print(checksum,"md5")
		#print(type(checksum))
		
		headers = self._H()
		headers["Content-MD5"] = str(checksum)
		headers["Content-Type"] = 'application/json'

	
		
		CS  = aiohttp.ClientSession(headers=headers)
		req = await CS.post(self._objects_url,params=params,data=encoded)
		try:
			req = await req.json()
		except Exception as e:
			#print(e, "exception")
			req = req
		await CS.close()
		return req

I’m still not sure why it refuses to post my data? Is there like anything I’m doing wrong here?

(Using aiohttp also)

1 Like

Hmm, just out of curiousity and you can PM me or let me know if its sensitive information but what are data are you sending? Your content-length is 0 and that is making it run into some issues.

oh also is it a file that you’re sending? If so what type of file is it?

Can we please get CORS accessibility on these services. Web apps cannot currently use the Roblox APIs at all (without proxying). Even Chrome developers recommend that publically accessible sites should allow it (Cross-origin fetches - HTTP 203 - YouTube)

1 Like

I keep getting a 401 Unauthorized. In the docs, it says 403 Unauthorized, anyone know what happened?

I’m also getting this for whatever reason

they sunsetted api.roblox.com, however moved to content.roblox.com i think

1 Like

ApiGateway (apis.roblox.com) doesn’t have an index or public docs. If for whatever reason you want an example page from it: https://apis.roblox.com/health

2 Likes

Will there eventually be support for messaging service? I feel like a lot of opportunities could arise by letting developers preform publish async calls through third party programs

What libraries on node.js could I use to replicate this?


I have been trying to use different libraries but I haven’t been able to replicate what the .digest() function does

Are we ever going to get official support for creating developer products, currently we have to use the client API to do this which does not work very well especially when it involves the usage of cookies.

Repost from Recent and Upcoming Changes to Roblox Web APIs - #36 by parker02311