# rblx-open-cloud
[](https://discord.gg/4CSc9E5uQy)
[](https://devforum.roblox.com/t/1991959)
[](https://pypi.org/project/rblx-open-cloud)
rblx-open-cloud is a Python API wrapper for [Roblox Open Cloud](https://create.roblox.com/docs/cloud/open-cloud).
### Key Features
- Support for most endpoints, including the OAuth2 flow and authentication.
- Allows both syncronous and asyncronous usage.
- Logic for operation polling and internal error retrying.
**Documentation: https://rblx-open-cloud.readthedocs.io/en/latest/**
## Quickstart
### Getting Started
1. Install the library with pip in your terminal.
```sh
# Stable (PyPi, recommended)
pip install rblx-open-cloud~=2.0
# Development (GitHub)
pip install "rblx-open-cloud @ git+https://github.com/treeben77/rblx-open-cloud@main"
```
2. Create an API key from the [Creator Dashboard](https://create.roblox.com/credentials). You can read [Managing API Keys](https://create.roblox.com/docs/open-cloud/managing-api-keys) for help.
You've got the basics down, below are examples for some of the APIs.
### Accessing Data Stores
```py
import rblxopencloud
# create an Experience object with your experience ID and your api key
# TODO: replace '13058' with your experience ID
experience = rblxopencloud.Experience(13058, api_key="api-key-from-step-2")
# get the data store, using the data store name and scope (defaults to global)
datastore = experience.get_data_store("data-store-name", scope="global")
# sets the key 'key-name' to 68 and provides users and metadata
# DataStore.set does not return the value or an EntryInfo object, instead it returns a EntryVersion object.
datastore.set("key-name", 68, users=[287113233], metadata={"key": "value"})
# get the value with the key 'number'
# info is a EntryInfo object which contains data like the version code, metadata, userids and timestamps.
value, info = datastore.get("key-name")
print(value, info)
# increments the key 'key-name' by 1 and ensures to keep the old users and metadata
# DataStore.increment retuens a value and info pair, just like DataStore.get and unlike DataStore.set
value, info = datastore.increment("key-name", 1, users=info.users, metadata=info.metadata)
print(value, info)
# deletes the key
datastore.remove("key-name")
```
### Publishing To Message Service
**NOTE: Messages published with Open Cloud only arrive in live game servers and not in Studio.**
```py
import rblxopencloud
# create an Experience object with your experience ID and your api key
# TODO: replace '13058' with your experience ID
experience = rblxopencloud.Experience(13058, api_key="api-key-from-step-2")
# publish a message with the topic 'topic-name'
experience.publish_message("topic-name", "Hello World!")
```
### Uploading Assets
**NOTE: Only `Decal`, `Audio`, and `Model` (fbx) are supported right now.**
```py
import rblxopencloud
# create an User object with your user ID and your api key
# TODO: replace '13058' with your user ID
user = rblxopencloud.User(13058, api_key="api-key-from-step-2")
# or, create a Group object:
group = rblxopencloud.Group(13058, api_key="api-key-from-step-2")
# this example is for uploading a decal:
with open("path/to/file.png", "rb", encoding="utf-8") as file:
asset = user.upload_asset(file, rblxopencloud.AssetType.Decal, "name", "description").wait()
print(asset.id)
```
Examples for more APIs are avalible in the [examples](/examples/) directory.
Raw data
{
"_id": null,
"home_page": "https://github.com/treeben77/rblx-open-cloud",
"name": "rblx-open-cloud",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9.0",
"maintainer_email": null,
"keywords": "roblox, open-cloud, data-store, place-publishing, mesageing-service",
"author": "treeben77",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/3e/a6/b028db86ba421cac997af106371e5ef408297b81750ae4301616c47917d6/rblx_open_cloud-2.2.4.tar.gz",
"platform": null,
"description": "# rblx-open-cloud\n\n[](https://discord.gg/4CSc9E5uQy)\n[](https://devforum.roblox.com/t/1991959)\n[](https://pypi.org/project/rblx-open-cloud)\n\nrblx-open-cloud is a Python API wrapper for [Roblox Open Cloud](https://create.roblox.com/docs/cloud/open-cloud).\n\n### Key Features\n- Support for most endpoints, including the OAuth2 flow and authentication.\n- Allows both syncronous and asyncronous usage.\n- Logic for operation polling and internal error retrying.\n\n**Documentation: https://rblx-open-cloud.readthedocs.io/en/latest/**\n\n## Quickstart\n\n### Getting Started\n\n1. Install the library with pip in your terminal.\n\n```sh\n# Stable (PyPi, recommended)\npip install rblx-open-cloud~=2.0\n\n# Development (GitHub)\npip install \"rblx-open-cloud @ git+https://github.com/treeben77/rblx-open-cloud@main\"\n```\n\n2. Create an API key from the [Creator Dashboard](https://create.roblox.com/credentials). You can read [Managing API Keys](https://create.roblox.com/docs/open-cloud/managing-api-keys) for help.\n\nYou've got the basics down, below are examples for some of the APIs.\n\n### Accessing Data Stores\n\n```py\nimport rblxopencloud\n\n# create an Experience object with your experience ID and your api key\n# TODO: replace '13058' with your experience ID\nexperience = rblxopencloud.Experience(13058, api_key=\"api-key-from-step-2\")\n\n# get the data store, using the data store name and scope (defaults to global)\ndatastore = experience.get_data_store(\"data-store-name\", scope=\"global\")\n\n# sets the key 'key-name' to 68 and provides users and metadata\n# DataStore.set does not return the value or an EntryInfo object, instead it returns a EntryVersion object.\ndatastore.set(\"key-name\", 68, users=[287113233], metadata={\"key\": \"value\"})\n\n# get the value with the key 'number'\n# info is a EntryInfo object which contains data like the version code, metadata, userids and timestamps.\nvalue, info = datastore.get(\"key-name\")\n\nprint(value, info)\n\n# increments the key 'key-name' by 1 and ensures to keep the old users and metadata\n# DataStore.increment retuens a value and info pair, just like DataStore.get and unlike DataStore.set\nvalue, info = datastore.increment(\"key-name\", 1, users=info.users, metadata=info.metadata)\n\nprint(value, info)\n\n# deletes the key\ndatastore.remove(\"key-name\")\n```\n\n### Publishing To Message Service\n\n**NOTE: Messages published with Open Cloud only arrive in live game servers and not in Studio.**\n\n```py\nimport rblxopencloud\n\n# create an Experience object with your experience ID and your api key\n# TODO: replace '13058' with your experience ID\nexperience = rblxopencloud.Experience(13058, api_key=\"api-key-from-step-2\")\n\n# publish a message with the topic 'topic-name'\nexperience.publish_message(\"topic-name\", \"Hello World!\")\n```\n\n### Uploading Assets\n\n**NOTE: Only `Decal`, `Audio`, and `Model` (fbx) are supported right now.**\n\n```py\nimport rblxopencloud\n\n# create an User object with your user ID and your api key\n# TODO: replace '13058' with your user ID\nuser = rblxopencloud.User(13058, api_key=\"api-key-from-step-2\")\n# or, create a Group object:\ngroup = rblxopencloud.Group(13058, api_key=\"api-key-from-step-2\")\n\n# this example is for uploading a decal:\nwith open(\"path/to/file.png\", \"rb\", encoding=\"utf-8\") as file:\n asset = user.upload_asset(file, rblxopencloud.AssetType.Decal, \"name\", \"description\").wait()\n\nprint(asset.id)\n```\n\nExamples for more APIs are avalible in the [examples](/examples/) directory.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "API wrapper for Roblox Open Cloud",
"version": "2.2.4",
"project_urls": {
"Homepage": "https://github.com/treeben77/rblx-open-cloud"
},
"split_keywords": [
"roblox",
" open-cloud",
" data-store",
" place-publishing",
" mesageing-service"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6ed113884491074b5a38d4a3d4e59231c66ebf4d25bc90301a66446135cc772f",
"md5": "6205e41ea1ae80c740fe785432dfa288",
"sha256": "1096b7673eb0e17a74c7f1d0bdb54164d74e6033ec660c8aa86741c8968beb3f"
},
"downloads": -1,
"filename": "rblx_open_cloud-2.2.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6205e41ea1ae80c740fe785432dfa288",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9.0",
"size": 116753,
"upload_time": "2025-01-24T03:50:52",
"upload_time_iso_8601": "2025-01-24T03:50:52.816498Z",
"url": "https://files.pythonhosted.org/packages/6e/d1/13884491074b5a38d4a3d4e59231c66ebf4d25bc90301a66446135cc772f/rblx_open_cloud-2.2.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3ea6b028db86ba421cac997af106371e5ef408297b81750ae4301616c47917d6",
"md5": "3a8ec0dce64f00b4cb49210f58107950",
"sha256": "1e98c23db41069c8504983beff6db8a8c6c6b3e4899e2254ab5c39992e2d8623"
},
"downloads": -1,
"filename": "rblx_open_cloud-2.2.4.tar.gz",
"has_sig": false,
"md5_digest": "3a8ec0dce64f00b4cb49210f58107950",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9.0",
"size": 89658,
"upload_time": "2025-01-24T03:50:54",
"upload_time_iso_8601": "2025-01-24T03:50:54.055942Z",
"url": "https://files.pythonhosted.org/packages/3e/a6/b028db86ba421cac997af106371e5ef408297b81750ae4301616c47917d6/rblx_open_cloud-2.2.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-24 03:50:54",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "treeben77",
"github_project": "rblx-open-cloud",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "requests",
"specs": []
},
{
"name": "aiohttp",
"specs": []
},
{
"name": "cryptography",
"specs": []
},
{
"name": "pyjwt",
"specs": []
},
{
"name": "python-dateutil",
"specs": []
},
{
"name": "PyNaCl",
"specs": []
}
],
"lcname": "rblx-open-cloud"
}