{ "openapi": "3.0.1", "info": { "title": "Standard data stores", "description": "This page includes reference documentation for working with the Open Cloud v1 API for standard data stores. For information on using the v2 API, see the [usage guide](/cloud/guides/data-stores/index.md).", "version": "v1", "x-roblox-extensions-version": "1.0.0" }, "servers": [ { "url": "https://apis.roblox.com/datastores" } ], "paths": { "/v1/universes/{universeId}/standard-datastores": { "get": { "tags": ["Datastores"], "summary": "List data stores in an experience", "description": "Returns a list of an experience's data stores.", "operationId": "Datastores_ListDatastoresAsync", "x-roblox-cloud-api-operation-name": "List Data Stores", "x-roblox-stability": "BETA", "parameters": [ { "name": "universeId", "in": "path", "required": true, "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.", "schema": { "type": "integer", "format": "int64" } }, { "name": "cursor", "in": "query", "description": "Provide to request the next set of data.", "schema": { "type": "string", "nullable": true } }, { "name": "limit", "in": "query", "description": "The maximum number of items to return. Each call only reads one partition, so it can return fewer than the given value when running out of objectives on one partition.", "schema": { "type": "integer", "format": "int32", "default": 1 } }, { "name": "prefix", "in": "query", "description": "Provide to return only data stores with this prefix. ", "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "data": { "type": "array", "description": "An array of data stores in the target experience.", "items": { "$ref": "#/components/schemas/DataStore" } }, "nextPageCursor": { "type": "string", "nullable": true, "description": "Indicates that there is more data available in the requested result set." } }, "example": "{\n \"datastores\": [\n {\n \"name\": \"PlayerInventory\",\n \"createdTime\": \"2022-02-18T22:38:59.9244932Z\"\n },\n {\n \"name\": \"PlayerExperience\",\n \"createdTime\": \"2022-02-18T23:00:10.4773508Z\"\n },\n {\n \"name\": \"PlayerWeapons\",\n \"createdTime\": \"2022-02-18T23:00:22.3725681Z\"\n },\n {\n \"name\": \"PlayerArmor\",\n \"createdTime\": \"2022-02-18T22:59:33.8472882Z\"\n },\n {\n \"name\": \"PlayerHP\",\n \"createdTime\": \"2022-02-18T22:58:47.6904028Z\"\n }\n ],\n \"nextPageCursor\": \"...\"\n}\n" }, "encoding": { "metadata": { "contentType": "application/json; charset=utf-8; content-length=388;" } } } } } }, "security": [ { "roblox-api-key": ["universe-datastores.control:list"] } ], "x-roblox-scopes": [{ "name": "universe-datastores.control:list" }], "x-roblox-cloud-api-operation": true, "x-roblox-lua-equivalent": "DataStoreService:ListDataStoresAsync", "x-roblox-cloud-api-operation-code-samples": [ { "language": "curl", "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"prefix=Player\" \\\n-d \"limit=5\"" } ], "x-roblox-rate-limits": { "description": "See [Throttling](/cloud/guides/data-stores/throttling.md)." }, "x-roblox-recommended-alternatives": [ { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores", "httpMethod": "GET" } ] } }, "/v1/universes/{universeId}/standard-datastores/datastore/entries": { "get": { "tags": ["Entries"], "summary": "List entries", "description": "Returns a list of entry keys within a data store.\n\n Entries marked deleted with a tombstone version are still included in the response if they have yet to be permanently deleted.", "operationId": "Entries_ListKeysAsync", "x-roblox-cloud-api-operation-name": "List Entries", "x-roblox-stability": "BETA", "parameters": [ { "name": "universeId", "in": "path", "required": true, "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.", "schema": { "type": "integer", "format": "int64" } }, { "name": "datastoreName", "in": "query", "description": "The name of the data store.", "schema": { "type": "string", "nullable": true } }, { "name": "scope", "in": "query", "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).", "schema": { "type": "string", "nullable": true } }, { "name": "allScopes", "in": "query", "description": "Set to true to return keys from all scopes.", "schema": { "type": "boolean", "default": false } }, { "name": "prefix", "in": "query", "description": "Provide to return only keys with this prefix.", "schema": { "type": "string", "nullable": true } }, { "name": "cursor", "in": "query", "description": "Provide to request the next set of data.", "schema": { "type": "string", "nullable": true } }, { "name": "limit", "in": "query", "description": "The maximum number of items to return. Each call only reads one partition, so it can return fewer than the given value when running out of objectives on one partition.", "schema": { "type": "integer", "format": "int32", "default": 16 } } ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { "keys": { "type": "array", "description": "An array of entry keys within the target data store.", "items": { "type": "string" } }, "nextPageCursor": { "type": "string", "nullable": true, "description": "Indicates that there is more data available in the requested result set." } }, "example": "{\n \"keys\": [\n {\n \"key\": \"269323\"\n }\n ],\n \"nextPageCursor\": \"eyJ2ZXJzaW9uIjoxLCJjdXJzb3IiOiIzIyJ9\"\n}\n" }, "encoding": { "metadata": { "contentType": "application/json; charset=utf-8; content-length=388;" } } } } } }, "security": [ { "roblox-api-key": ["universe-datastores.objects:list"] } ], "x-roblox-scopes": [{ "name": "universe-datastores.objects:list" }], "x-roblox-cloud-api-operation": true, "x-roblox-lua-equivalent": "DataStore:ListKeysAsync", "x-roblox-cloud-api-operation-code-samples": [ { "language": "curl", "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"prefix=\" \\\n-d \"limit=5\"" } ], "x-roblox-rate-limits": { "description": "See [Throttling](/cloud/guides/data-stores/throttling.md)." }, "x-roblox-recommended-alternatives": [ { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries", "httpMethod": "GET" }, { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries", "httpMethod": "GET" } ] } }, "/v1/universes/{universeId}/standard-datastores/datastore/entries/entry": { "get": { "tags": ["Entries"], "summary": "Get entry.", "description": "Returns the value and metadata associated with an entry.\n\nEntries marked deleted with a tombstone version will return 404 Not Found.\n\nMetadata can be found in the response headers like the following:\n```text\ncontent-md5: zuYxEhwuySMv0i8CitXImw==\nroblox-entry-version: 08D9E6A3F2188CFF.0000000001.08D9E6A3F2188CFF.01\nroblox-entry-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-version-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-attributes: { \"myAttribute\": \"myValue\" }\nroblox-entry-userids: [1, 2, 3]\n```\n\n| Header | Description |\n|---|---| \n| `content-md5` | The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5). |\n| `roblox-entry-version` | The version of the returned entry. |\n| `roblox-entry-created-time` | The time at which the entry was created. |\n| `roblox-entry-version-created-time` | The time at which this particular version was created. |\n| `roblox-entry-attributes` | Attributes tagged with the entry. Serialized JSON map object. |\n| `roblox-entry-userids` | Comma-separated list of Roblox user IDs tagged with the entry. |\n", "operationId": "Entries_GetEntryAsync", "x-roblox-cloud-api-operation-name": "Get Entry", "x-roblox-stability": "BETA", "parameters": [ { "name": "universeId", "in": "path", "required": true, "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.", "schema": { "type": "integer", "format": "int64" } }, { "name": "datastoreName", "in": "query", "description": "The name of the data store.", "schema": { "type": "string", "nullable": true } }, { "name": "entryKey", "in": "query", "description": "The key identifying the entry.", "schema": { "type": "string", "nullable": true } }, { "name": "scope", "in": "query", "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).", "schema": { "type": "string", "default": "global", "nullable": true } } ], "responses": { "200": { "description": "Successfully retrieved the entry.", "headers": { "content-md5": { "schema": { "type": "string", "format": "byte" }, "description": "The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5)." }, "roblox-entry-version": { "schema": { "type": "string", "format": "binary" }, "description": "The version of the returned entry." }, "roblox-entry-created-time": { "schema": { "type": "string", "format": "date-time" }, "description": "The time at which the entry was created." }, "roblox-entry-version-created-time": { "schema": { "type": "string", "format": "date-time" }, "description": "The time at which this particular version was created." }, "roblox-entry-attributes": { "schema": { "type": "object" }, "description": "Attributes tagged with the entry. Serialized JSON map object." }, "roblox-entry-userids": { "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Comma-separated list of Roblox user IDs tagged with the entry." } }, "content": { "application/json": { "schema": { "type": "object", "description": "The user content of the entry." } } } }, "204": { "description": "The key is marked as deleted." } }, "security": [ { "roblox-api-key": ["universe-datastores.objects:read"] } ], "x-roblox-scopes": [{ "name": "universe-datastores.objects:read" }], "x-roblox-cloud-api-operation": true, "x-roblox-lua-equivalent": "GlobalDataStore:GetAsync", "x-roblox-cloud-api-operation-code-samples": [ { "language": "curl", "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\"" } ], "x-roblox-rate-limits": { "description": "See [Throttling](/cloud/guides/data-stores/throttling.md)." }, "x-roblox-recommended-alternatives": [ { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}", "httpMethod": "GET" }, { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}", "httpMethod": "GET" } ] }, "post": { "tags": ["Entries"], "summary": "Set entry.", "description": "Sets the value, metadata and user IDs associated with an entry.", "operationId": "Entries_SetEntryAsync", "x-roblox-cloud-api-operation-name": "Set Entry", "x-roblox-stability": "BETA", "parameters": [ { "name": "universeId", "in": "path", "required": true, "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.", "schema": { "type": "integer", "format": "int64" } }, { "name": "datastoreName", "in": "query", "description": "The name of the data store.", "schema": { "type": "string", "nullable": true } }, { "name": "entryKey", "in": "query", "description": "The key identifying the entry.", "schema": { "type": "string", "nullable": true } }, { "name": "matchVersion", "in": "query", "description": "Provide to update only if the current version matches this.", "schema": { "type": "string", "default": null, "nullable": true } }, { "name": "exclusiveCreate", "in": "query", "description": "Create the entry only if it does not exist.", "schema": { "type": "boolean", "default": false } }, { "name": "scope", "in": "query", "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).", "schema": { "type": "string", "default": "global", "nullable": true } }, { "name": "roblox-entry-attributes", "in": "header", "description": "Attributes to be associated with new version of the entry. Serialized by JSON map objects. If not provided, existing attributes are cleared.", "schema": { "type": "string", "nullable": true } }, { "name": "roblox-entry-userids", "in": "header", "description": "Comma-separated list of Roblox user IDs tagged with the entry. If not provided, existing user IDs are cleared.", "schema": { "type": "string", "nullable": true } }, { "name": "content-md5", "in": "header", "description": "The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5).", "schema": { "type": "string", "nullable": true } } ], "requestBody": { "content": { "application/json": { "schema": { "maxLength": 4194304, "type": "string" } } } }, "responses": { "200": { "description": "", "content": { "text/json": { "schema": { "$ref": "#/components/schemas/EntryVersion" } } } } }, "security": [ { "roblox-api-key": [ "universe-datastores.objects:create", "universe-datastores.objects:update", "universe-datastores.control:create" ] } ], "x-roblox-scopes": [ { "name": "universe-datastores.objects:update", "description": "If the entry key being set exists." }, { "name": "universe-datastores.objects:create", "description": "If the entry key being set doesn't exist." }, { "name": "universe-datastores.control:create", "description": "If the Data Store the entry key is in doesn't exist." } ], "x-roblox-cloud-api-operation": true, "x-roblox-lua-equivalent": "GlobalDataStore:SetAsync", "x-roblox-cloud-api-operation-code-samples": [ { "language": "curl", "script": "curl --include --location --request POST \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry?datastoreName=Coins&entryKey=269323\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--header \"content-md5: IGPBYI1uC6+AJJxC4r5YBA==\" \\\n--header \"content-type: application/json\" \\\n--header \"roblox-entry-userids: [269323]\" \\\n--header \"roblox-entry-attributes: {}\" \\\n--d \"value\"" } ], "x-roblox-rate-limits": { "description": "See [Throttling](/cloud/guides/data-stores/throttling.md)." }, "x-roblox-recommended-alternatives": [ { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}", "httpMethod": "PATCH" }, { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}", "httpMethod": "PATCH" }, { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries", "httpMethod": "POST" }, { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries", "httpMethod": "POST" } ] }, "delete": { "tags": ["Entries"], "summary": "Delete entry.", "description": "Marks the entry as deleted by creating a tombstone version. Entries are deleted permanently after 30 days.", "operationId": "Entries_DeleteEntryAsync", "x-roblox-cloud-api-operation-name": "Delete Entry", "x-roblox-stability": "BETA", "parameters": [ { "name": "universeId", "in": "path", "required": true, "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.", "schema": { "type": "integer", "format": "int64" } }, { "name": "datastoreName", "in": "query", "description": "The name of the data store.", "schema": { "type": "string", "nullable": true } }, { "name": "entryKey", "in": "query", "description": "The key identifying the entry.", "schema": { "type": "string", "nullable": true } }, { "name": "scope", "in": "query", "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).", "schema": { "type": "string", "default": "global", "nullable": true } } ], "responses": { "204": { "description": "The entry is deleted." } }, "security": [ { "roblox-api-key": ["universe-datastores.objects:delete"] } ], "x-roblox-scopes": [{ "name": "universe-datastores.objects:delete" }], "x-roblox-cloud-api-operation": true, "x-roblox-lua-equivalent": "GlobalDataStore:RemoveAsync", "x-roblox-cloud-api-operation-code-samples": [ { "language": "curl", "script": "curl --include --location --request DELETE \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\"" } ], "x-roblox-rate-limits": { "description": "See [Throttling](/cloud/guides/data-stores/throttling.md)." }, "x-roblox-recommended-alternatives": [ { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}", "httpMethod": "DELETE" }, { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}", "httpMethod": "DELETE" } ] } }, "/v1/universes/{universeId}/standard-datastores/datastore/entries/entry/increment": { "post": { "tags": ["Entries"], "summary": "Increment entry", "description": "Increments the value for an entry by a given amount, or create a new entry with that amount. Returns the entry and metadata.\n\nMetadata can be found in the response headers like the following:\n```text\ncontent-md5: zuYxEhwuySMv0i8CitXImw==\nroblox-entry-version: 08D9E6A3F2188CFF.0000000001.08D9E6A3F2188CFF.01\nroblox-entry-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-version-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-attributes: { \"myAttribute\": \"myValue\" }\nroblox-entry-userids: [1, 2, 3]\n```\n\n| Header | Description |\n|---|---| \n| `content-md5` | The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5). |\n| `roblox-entry-version` | The version of the returned entry. |\n| `roblox-entry-created-time` | The time at which the entry was created. |\n| `roblox-entry-version-created-time` | The time at which this particular version was created. |\n| `roblox-entry-attributes` | Attributes tagged with the entry. Serialized JSON map object. |\n| `roblox-entry-userids` | Comma-separated list of Roblox user IDs tagged with the entry. |\n", "operationId": "Entries_IncrementEntryAsync", "x-roblox-cloud-api-operation-name": "Increment Entry", "x-roblox-stability": "BETA", "parameters": [ { "name": "universeId", "in": "path", "required": true, "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.", "schema": { "type": "integer", "format": "int64" } }, { "name": "datastoreName", "in": "query", "description": "The name of the data store.", "schema": { "type": "string", "nullable": true } }, { "name": "entryKey", "in": "query", "description": "The key identifying the entry.", "schema": { "type": "string", "nullable": true } }, { "name": "incrementBy", "in": "query", "description": "The amount by which the entry should be incremented, or the starting value if it doesn't exist.", "schema": { "type": "integer", "format": "int64", "default": 1 } }, { "name": "scope", "in": "query", "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).", "schema": { "type": "string", "default": "global", "nullable": true } }, { "name": "roblox-entry-attributes", "in": "header", "description": "Attributes to be associated with new version of the entry. Serialized by JSON map objects. If not provided, existing attributes are cleared.", "schema": { "type": "string", "nullable": true } }, { "name": "roblox-entry-userids", "in": "header", "description": "A comma-separated list of Roblox user IDs that the entry is tagged with. If not provided, existing user IDs are cleared.", "schema": { "type": "string", "nullable": true } } ], "responses": { "200": { "description": "Returns the latest version of the entry after it has been incremented.", "headers": { "content-md5": { "schema": { "type": "string", "format": "byte" }, "description": "The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5)." }, "roblox-entry-version": { "schema": { "type": "string", "format": "binary" }, "description": "The version of the returned entry." }, "roblox-entry-created-time": { "schema": { "type": "string", "format": "date-time" }, "description": "The time at which the entry was created." }, "roblox-entry-version-created-time": { "schema": { "type": "string", "format": "date-time" }, "description": "The time at which this particular version was created." }, "roblox-entry-attributes": { "schema": { "type": "object" }, "description": "Attributes tagged with the entry. Serialized JSON map object." }, "roblox-entry-userids": { "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Comma-separated list of Roblox user IDs tagged with the entry." } }, "content": { "application/json": { "schema": { "type": "object", "description": "The user content of the entry." } } } }, "204": { "description": "The key is marked as deleted." } }, "security": [ { "roblox-api-key": [ "universe-datastores.objects:create", "universe-datastores.objects:update", "universe-datastores.control:create" ] } ], "x-roblox-scopes": [ { "name": "universe-datastores.objects:update", "description": "If the entry key being incremented exists." }, { "name": "universe-datastores.objects:create", "description": "If the entry key being incremented doesn't exist." }, { "name": "universe-datastores.control:create", "description": "If the Data Store the entry key is in doesn't exist." } ], "x-roblox-cloud-api-operation": true, "x-roblox-lua-equivalent": "GlobalDataStore:IncrementAsync", "x-roblox-cloud-api-operation-code-samples": [ { "language": "curl", "script": "curl --include --location --request POST \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry/increment\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--header 'content-length: 0' \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\" \\\n-d \"incrementBy=3\"" } ], "x-roblox-rate-limits": { "description": "See [Throttling](/cloud/guides/data-stores/throttling.md)." }, "x-roblox-recommended-alternatives": [ { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}:increment", "httpMethod": "POST" }, { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}:increment", "httpMethod": "POST" } ] } }, "/v1/universes/{universeId}/standard-datastores/datastore/entries/entry/versions/version": { "get": { "tags": ["Entries"], "summary": "Get entry version.", "description": "Returns the value and metadata of a specific version of an entry.\n\nMetadata can be found in the response headers like the following:\n```text\ncontent-md5: zuYxEhwuySMv0i8CitXImw==\nroblox-entry-version: 08D9E6A3F2188CFF.0000000001.08D9E6A3F2188CFF.01\nroblox-entry-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-version-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-attributes: { \"myAttribute\": \"myValue\" }\nroblox-entry-userids: [1, 2, 3]\n```\n\n| Header | Description |\n|---|---| \n| `content-md5` | The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5). |\n| `roblox-entry-version` | The version of the returned entry. |\n| `roblox-entry-created-time` | The time at which the entry was created. |\n| `roblox-entry-version-created-time` | The time at which this particular version was created. |\n| `roblox-entry-attributes` | Attributes tagged with the entry. Serialized JSON map object. |\n| `roblox-entry-userids` | Comma-separated list of Roblox user IDs tagged with the entry. |\n", "operationId": "Entries_GetEntryVersionAsync", "x-roblox-cloud-api-operation-name": "Get Entry Version", "x-roblox-stability": "BETA", "parameters": [ { "name": "universeId", "in": "path", "required": true, "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.", "schema": { "type": "integer", "format": "int64" } }, { "name": "datastoreName", "in": "query", "description": "The name of the data store.", "schema": { "type": "string", "nullable": true } }, { "name": "entryKey", "in": "query", "description": "The key identifying the entry.", "schema": { "type": "string", "nullable": true } }, { "name": "versionId", "in": "query", "description": "The version to inspect.", "schema": { "type": "string", "nullable": true } }, { "name": "scope", "in": "query", "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).", "schema": { "type": "string", "default": "global", "nullable": true } } ], "responses": { "200": { "description": "Successfully retrieved the entry.", "headers": { "content-md5": { "schema": { "type": "string", "format": "byte" }, "description": "The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5)." }, "roblox-entry-version": { "schema": { "type": "string", "format": "binary" }, "description": "The version of the returned entry." }, "roblox-entry-created-time": { "schema": { "type": "string", "format": "date-time" }, "description": "The time at which the entry was created." }, "roblox-entry-version-created-time": { "schema": { "type": "string", "format": "date-time" }, "description": "The time at which this particular version was created." }, "roblox-entry-attributes": { "schema": { "type": "object" }, "description": "Attributes tagged with the entry. Serialized JSON map object." }, "roblox-entry-userids": { "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Comma-separated list of Roblox user IDs tagged with the entry." } }, "content": { "application/json": { "schema": { "type": "object", "description": "The user content of the entry." } } } } }, "security": [ { "roblox-api-key": ["universe-datastores.versions:read"] } ], "x-roblox-scopes": [{ "name": "universe-datastores.versions:read" }], "x-roblox-cloud-api-operation": true, "x-roblox-lua-equivalent": "DataStore:GetVersionAsync", "x-roblox-cloud-api-operation-code-samples": [ { "language": "curl", "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry/versions/version\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\" \\\n-d \"versionId=08D9E6A3F2188CFF.0000000003.08D9E6DE485A7680.01\"" } ], "x-roblox-rate-limits": { "description": "See [Throttling](/cloud/guides/data-stores/throttling.md)." }, "x-roblox-recommended-alternatives": [ { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}", "httpMethod": "GET" }, { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}", "httpMethod": "GET" } ] } }, "/v1/universes/{universeId}/standard-datastores/datastore/entries/entry/versions": { "get": { "tags": ["Entries"], "summary": "List entry versions", "description": "Returns a list of versions for an entry.", "operationId": "Entries_ListEntryVersionsAsync", "x-roblox-cloud-api-operation-name": "List Entry Versions", "x-roblox-stability": "BETA", "parameters": [ { "name": "universeId", "in": "path", "required": true, "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.", "schema": { "type": "integer", "format": "int64" } }, { "name": "datastoreName", "in": "query", "description": "The name of the data store.", "schema": { "type": "string", "nullable": true } }, { "name": "entryKey", "in": "query", "description": "The key identifying the entry.", "schema": { "type": "string", "nullable": true } }, { "name": "scope", "in": "query", "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).", "schema": { "type": "string", "default": "global", "nullable": true } }, { "name": "cursor", "in": "query", "description": "Provide to request the next set of data.", "schema": { "type": "string", "format": "date-time", "nullable": true } }, { "name": "startTime", "in": "query", "description": "Provide to not include versions earlier than this timestamp.", "schema": { "type": "string", "format": "date-time", "nullable": true } }, { "name": "endTime", "in": "query", "description": "Provide to not include versions later than this timestamp.", "schema": { "type": "string", "nullable": true } }, { "name": "sortOrder", "in": "query", "description": "Either `Ascending` (earlier versions first) or `Descending` (later versions first).", "schema": { "type": "string", "default": "Ascending", "nullable": true } }, { "name": "limit", "in": "query", "description": "The maximum number of items to return. Each call only reads one partition, so it can return fewer than the given value when running out of objectives on one partition.", "schema": { "type": "integer", "format": "int32", "default": 16 } } ], "responses": { "200": { "description": "", "content": { "text/json": { "schema": { "$ref": "#/components/schemas/EntryVersion" } } } }, "400": { "description": "Invalid request / Invalid file content." }, "403": { "description": "Publish not allowed on place." }, "404": { "description": "The experience or data store was not found." }, "429": { "description": "Too Many Requests." } }, "security": [ { "roblox-api-key": ["universe-datastores.versions:list"] } ], "x-roblox-scopes": [{ "name": "universe-datastores.versions:list" }], "x-roblox-cloud-api-operation": true, "x-roblox-lua-equivalent": "DataStore:ListVersionsAsync", "x-roblox-cloud-api-operation-code-samples": [ { "language": "curl", "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry/versions\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\" \\\n-d \"limit=5\"" } ], "x-roblox-rate-limits": { "description": "See [Throttling](/cloud/guides/data-stores/throttling.md)." }, "x-roblox-recommended-alternatives": [ { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}:listRevisions", "httpMethod": "GET" }, { "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}:listRevisions", "httpMethod": "GET" } ] } } }, "components": { "schemas": { "DataStore": { "type": "object", "description": "The data store object with its name and created time.", "properties": { "name": { "type": "string", "format": "binary", "description": "The name of your data store." }, "createdTime": { "type": "string", "format": "date-time", "nullable": true, "description": "The timestamp of when the data store was created in the ISO time format." } }, "additionalProperties": false }, "EntryVersion": { "type": "object", "description": "The entry version object returned by the `List Entry Versions` method.", "properties": { "version": { "type": "string", "format": "binary", "description": "The version name of the qualifying entry." }, "deleted": { "type": "boolean", "default": false, "description": "Indicates whether the entry has been deleted." }, "contentLength": { "type": "number", "description": "The length of the content." }, "createdTime": { "type": "string", "format": "date-time", "description": "The timestamp of when the version was created in the ISO time format." }, "objectCreatedTime": { "type": "string", "format": "date-time", "description": "The timestamp of when the data store was created in the ISO time format." } }, "additionalProperties": false } }, "securitySchemes": { "roblox-api-key": { "type": "apiKey", "description": "A configurable key that allows granular access to Roblox resources. See https://create.roblox.com/docs/cloud/auth/api-keys for more information.", "in": "header", "name": "x-api-key" } } } }