\n}'\n"
}
],
"x-roblox-rate-limits": {
"description": "See [Throttling](/cloud/guides/data-stores/throttling.md).",
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 500
}
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/ordered-data-stores/{ordered_data_store_id}/scopes/{scope_id}/entries/{entry_id}:increment",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_IncrementOrderedDataStoreEntry"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/storage#OrderedDataStores_IncrementEntry"
}
}
},
"/place-version-history-api/v1/{placeId}/contributors": {
"get": {
"tags": ["Places"],
"summary": "Endpoint used to fetch all previous contributors of a place.",
"operationId": "PlaceVersion_GetPlaceContributors",
"parameters": [
{
"name": "placeId",
"in": "path",
"required": true,
"schema": {
"minimum": 1,
"type": "integer",
"format": "int64"
}
},
{
"name": "cursor",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "pageSize",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetPlaceContributorsResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 120
}
},
"x-roblox-scopes": [
{
"name": "universe.place:read",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#PlaceVersion_GetPlaceContributors"
}
}
},
"/place-version-history-api/v1/{placeId}/history": {
"get": {
"tags": ["Places"],
"summary": "Endpoint used to get place versions, using various filters",
"operationId": "PlaceVersion_GetPlaceVersionHistory",
"parameters": [
{
"name": "placeId",
"in": "path",
"required": true,
"schema": {
"minimum": 1,
"type": "integer",
"format": "int64"
}
},
{
"name": "cursor",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "isPublished",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "hasNotes",
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "saveType",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "searchTerm",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "contributor",
"in": "query",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "startTime",
"in": "query",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "endTime",
"in": "query",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "pageSize",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetPlaceVersionHistoryResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 120
}
},
"x-roblox-scopes": [
{
"name": "universe.place:read",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#PlaceVersion_GetPlaceVersionHistory"
}
}
},
"/place-version-history-api/v1/{placeId}/version/{version}/notes": {
"post": {
"tags": ["Places"],
"summary": "Endpoint used to modify the notes of a particular version for a place.",
"operationId": "PlaceVersion_UpdatePlaceVersionNotes",
"parameters": [
{
"name": "placeId",
"in": "path",
"required": true,
"schema": {
"minimum": 1,
"type": "integer",
"format": "int64"
}
},
{
"name": "version",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdatePlaceVersionNotesRequest"
}
]
}
},
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdatePlaceVersionNotesRequest"
}
]
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdatePlaceVersionNotesRequest"
}
]
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdatePlaceVersionNotesRequest"
}
]
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdatePlaceVersionNotesResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OperationErrorResponse"
}
}
}
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe.place:write",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#PlaceVersion_UpdatePlaceVersionNotes"
}
}
},
"/server-management/v1/universes/{universeId}/places/{placeId}/game-servers:filter-options": {
"get": {
"tags": ["Observability"],
"summary": "Gets available filter options for game servers.",
"operationId": "GameServers_GetFilterOptions",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The universe ID",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "placeId",
"in": "path",
"description": "The place ID",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "Filter",
"in": "query",
"description": "The specific filter to query. If null or empty, the endpoint returns all available filters.",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/FilterField"
}
]
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FilterOptionsResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe:read",
"targetResourceSpecifier": "universes"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": true
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/observability#GameServers_GetFilterOptions"
}
}
},
"/server-management/v1/universes/{universeId}/places/{placeId}/versions/{versionNumber}/game-servers": {
"get": {
"tags": ["Observability"],
"summary": "Lists game servers for a specific place version.",
"operationId": "GameServers_ListGameServers",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The universe ID",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "placeId",
"in": "path",
"description": "The place ID",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "The version number",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "MaxPageSize",
"in": "query",
"description": "The maximum number of game servers to return. The service might return\r\nfewer than this value. If unspecified, at most 25 game servers are\r\nreturned. The maximum value is 100 and higher values are set to 100.\r\nZero returns no game servers and only the total count, for callers that\r\nneed the count without paging through rows.",
"schema": {
"maximum": 100,
"minimum": 0,
"type": "integer",
"format": "int32"
}
},
{
"name": "PageToken",
"in": "query",
"description": "A page token, received from a previous call, to retrieve a subsequent page.\r\nWhen paginating, all other parameters provided to the subsequent call must\r\nmatch the call that provided the page token.",
"schema": {
"type": "string"
}
},
{
"name": "OrderBy",
"in": "query",
"description": "Sorting is supported only for a single field at a time.\r\nExample: \"orderBy\": \"uptime\"\r\nDefaults to ascending, but descending ordering is also supported by\r\nincluding the \" desc\" suffix. For example: \"orderBy\": \"uptime desc\".",
"schema": {
"type": "string"
}
},
{
"name": "Filter",
"in": "query",
"description": "This field may be set in order to filter the resources returned.\r\n- CEL filtering is supported on all fields.\r\n- Supported operators &&, <, <=, >, >=, ==, and `in`",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ListGameServersResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe:read",
"targetResourceSpecifier": "universes"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": true
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/observability#GameServers_ListGameServers"
}
}
},
"/server-management/v1/universes/{universeId}/places/{placeId}/versions/{versionNumber}/game-servers/{jobId}/logs": {
"get": {
"tags": ["Observability"],
"summary": "Lists game server logs for a specific server job id",
"operationId": "GameServers_ListGameServerLogs",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The universe id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "placeId",
"in": "path",
"description": "The place id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "versionNumber",
"in": "path",
"description": "The version number",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "jobId",
"in": "path",
"description": "The server job id",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "MaxPageSize",
"in": "query",
"description": "The maximum number of log entries to return. Defaults to 25 and values above 100 are\r\ncapped at 100.",
"schema": {
"maximum": 100,
"minimum": 1,
"type": "integer",
"format": "int32"
}
},
{
"name": "PageToken",
"in": "query",
"description": "An opaque token from a previous response. Preserve the other query parameters when\r\nrequesting the next page.",
"schema": {
"type": "string"
}
},
{
"name": "OrderBy",
"in": "query",
"description": "Sorts by `message_timestamp` or `log_severity`. Append ` desc` for descending order.\r\nEach endpoint defines its own default when this value is omitted.",
"schema": {
"type": "string"
}
},
{
"name": "Filter",
"in": "query",
"description": "Filters log entries with CEL. Use `severity` with equality or `in`, `message_timestamp`\r\nwith comparisons, or `search` with equality or inequality for case-insensitive full-text matching.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListGameServerLogsResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe:read",
"targetResourceSpecifier": "universes"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/observability#GameServers_ListGameServerLogs"
}
}
},
"/server-management/v1/universes/{universeId}/restarts": {
"get": {
"tags": ["Observability"],
"summary": "List restart statuses for a universe.",
"operationId": "Restarts_ListRestartStatuses",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The universe ID",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ListRestartStatusesResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe:read",
"targetResourceSpecifier": "universes"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": true
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/observability#Restarts_ListRestartStatuses"
}
},
"post": {
"tags": ["Observability"],
"summary": "Launch a game server restart for a universe.",
"operationId": "Restarts_LaunchRestart",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The universe ID",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"description": "The launch restart request body",
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/LaunchRestartRequest"
}
],
"description": "Request model for launching a game restart."
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/LaunchRestartRequest"
}
],
"description": "Request model for launching a game restart."
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/LaunchRestartRequest"
}
],
"description": "Request model for launching a game restart."
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LaunchRestartResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe:write",
"targetResourceSpecifier": "universes"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": true
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/observability#Restarts_LaunchRestart"
}
}
},
"/server-management/v1/universes/{universeId}/restarts:forecast": {
"get": {
"tags": ["Observability"],
"summary": "Forecast the impact of restarting game servers for a universe.",
"operationId": "Restarts_ForecastRestart",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The universe ID",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ForecastRestartResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerManagementService.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe:read",
"targetResourceSpecifier": "universes"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": true
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/observability#Restarts_ForecastRestart"
}
}
},
"/thumbnail-personalization-api/v1/universes/{universeId}/personalization": {
"get": {
"tags": ["Thumbnail Personalization"],
"summary": "Gets a page of thumbnail personalization configurations for a universe.",
"operationId": "ThumbnailPersonalizationApi.HomepageThumbnail_FindThumbnailPersonalizations",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The identifier of the universe whose configurations are returned.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "status",
"in": "query",
"description": "The configuration status to return.",
"required": true,
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/PersonalizedConfigStatus"
}
],
"description": "The lifecycle status of a thumbnail personalization configuration."
}
},
{
"name": "limit",
"in": "query",
"description": "The maximum number of configurations to return.",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "cursor",
"in": "query",
"description": "The cursor from a previous response, if any.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FindPersonalizedConfigsResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"500": {
"description": "Server Error"
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe.thumbnail:read",
"targetResourceSpecifier": "universes",
"firstPartyOAuthOnly": true
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.thumbnail:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnail-personalization#ThumbnailPersonalizationApi.HomepageThumbnail_FindThumbnailPersonalizations"
}
}
},
"/thumbnail-personalization-api/v1/universes/{universeId}/personalization/create": {
"post": {
"tags": ["Thumbnail Personalization"],
"summary": "Creates a new active thumbnail personalization configuration for a universe.\r\nThis deactivates the current active configuration, and the new configuration starts its own statistics.",
"operationId": "ThumbnailPersonalizationApi.HomepageThumbnail_CreateThumbnailPersonalization",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The identifier of the universe that owns the configuration.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"description": "The homepage thumbnails to include in the configuration.",
"content": {
"application/json-patch+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateThumbnailPersonalizationRequest"
}
],
"description": "The request to create a thumbnail personalization configuration."
}
},
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateThumbnailPersonalizationRequest"
}
],
"description": "The request to create a thumbnail personalization configuration."
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateThumbnailPersonalizationRequest"
}
],
"description": "The request to create a thumbnail personalization configuration."
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateThumbnailPersonalizationRequest"
}
],
"description": "The request to create a thumbnail personalization configuration."
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"500": {
"description": "Server Error"
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 50
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 50
}
},
"x-roblox-scopes": [
{
"name": "universe.thumbnail:write",
"targetResourceSpecifier": "universes",
"firstPartyOAuthOnly": true
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.thumbnail:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnail-personalization#ThumbnailPersonalizationApi.HomepageThumbnail_CreateThumbnailPersonalization"
}
}
},
"/thumbnail-personalization-api/v1/universes/{universeId}/personalization/update": {
"post": {
"tags": ["Thumbnail Personalization"],
"summary": "Replaces the homepage thumbnails in an active personalization configuration without changing its identifier\r\nor existing statistics.",
"operationId": "ThumbnailPersonalizationApi.HomepageThumbnail_UpdateThumbnailPersonalization",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The identifier of the universe that owns the configuration.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"description": "The configuration and homepage thumbnails to update.",
"content": {
"application/json-patch+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateThumbnailPersonalizationRequest"
}
],
"description": "The request to update a thumbnail personalization configuration."
}
},
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateThumbnailPersonalizationRequest"
}
],
"description": "The request to update a thumbnail personalization configuration."
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateThumbnailPersonalizationRequest"
}
],
"description": "The request to update a thumbnail personalization configuration."
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateThumbnailPersonalizationRequest"
}
],
"description": "The request to update a thumbnail personalization configuration."
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"404": {
"description": "Not Found"
},
"500": {
"description": "Server Error"
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 50
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 50
}
},
"x-roblox-scopes": [
{
"name": "universe.thumbnail:write",
"targetResourceSpecifier": "universes",
"firstPartyOAuthOnly": true
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.thumbnail:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnail-personalization#ThumbnailPersonalizationApi.HomepageThumbnail_UpdateThumbnailPersonalization"
}
}
},
"/thumbnail-personalization-api/v1/universes/{universeId}/thumbnails": {
"delete": {
"tags": ["Thumbnail Personalization"],
"summary": "Deletes homepage thumbnails from a universe.",
"operationId": "ThumbnailPersonalizationApi.HomepageThumbnail_DeleteHomepageThumbnails",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The identifier of the universe that owns the thumbnails.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "homepageThumbnailIds",
"in": "query",
"description": "The identifiers of the homepage thumbnails to delete.",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"500": {
"description": "Server Error"
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 50
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 50
}
},
"x-roblox-scopes": [
{
"name": "universe.thumbnail:write",
"targetResourceSpecifier": "universes",
"firstPartyOAuthOnly": true
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.thumbnail:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnail-personalization#ThumbnailPersonalizationApi.HomepageThumbnail_DeleteHomepageThumbnails"
}
},
"get": {
"tags": ["Thumbnail Personalization"],
"summary": "Gets a page of homepage thumbnails for a universe.",
"operationId": "ThumbnailPersonalizationApi.HomepageThumbnail_GetHomepageThumbnails",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The identifier of the universe whose thumbnails are returned.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "limit",
"in": "query",
"description": "The maximum number of thumbnails to return.",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "nextCursor",
"in": "query",
"description": "The cursor from a previous response, if any.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FindThumbnailsResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"500": {
"description": "Server Error"
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe.thumbnail:read",
"targetResourceSpecifier": "universes",
"firstPartyOAuthOnly": true
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.thumbnail:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnail-personalization#ThumbnailPersonalizationApi.HomepageThumbnail_GetHomepageThumbnails"
}
}
},
"/thumbnail-personalization-api/v1/universes/{universeId}/thumbnails/uploads": {
"post": {
"tags": ["Thumbnail Personalization"],
"summary": "Uploads one or more images to create homepage thumbnails for a universe.",
"operationId": "ThumbnailPersonalizationApi.HomepageThumbnail_UploadHomepageThumbnails",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The identifier of the universe that owns the thumbnails.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"required": ["files"],
"type": "object",
"properties": {
"files": {
"type": "array",
"items": {
"type": "string",
"format": "binary"
}
}
}
},
"encoding": {
"files": {
"style": "form"
}
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UploadThumbnailsResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"500": {
"description": "Server Error"
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 50
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 50
}
},
"x-roblox-scopes": [
{
"name": "universe.thumbnail:write",
"targetResourceSpecifier": "universes",
"firstPartyOAuthOnly": true
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.thumbnail:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnail-personalization#ThumbnailPersonalizationApi.HomepageThumbnail_UploadHomepageThumbnails"
}
}
},
"/thumbnail-personalization-api/v1/universes/{universeId}/thumbnails/uploads/status": {
"get": {
"tags": ["Thumbnail Personalization"],
"summary": "Gets the processing status of homepage thumbnail upload operations.",
"operationId": "ThumbnailPersonalizationApi.HomepageThumbnail_GetHomepageThumbnailsStatus",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "The identifier of the universe that owns the uploads.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "operationIds",
"in": "query",
"description": "The upload operation IDs to query.",
"required": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UploadThumbnailsStatusResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"type": "string"
}
}
}
},
"500": {
"description": "Server Error"
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe.thumbnail:read",
"targetResourceSpecifier": "universes",
"firstPartyOAuthOnly": true
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.thumbnail:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnail-personalization#ThumbnailPersonalizationApi.HomepageThumbnail_GetHomepageThumbnailsStatus"
}
}
},
"/toolbox-service/v1/saves": {
"delete": {
"tags": ["Creator Store"],
"summary": "Deletes a save.",
"operationId": "Saves_DeleteSave",
"parameters": [
{
"name": "targetType",
"in": "query",
"description": "The type of asset being deleted",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/SearchCategoryType"
}
],
"description": "This represents a \"subset\" of Toolbox.Service.CategoryType options and represent the full set\nof \"categories\" (or asset types) that can be searched upon from the toolbox search API.",
"x-enumNames": [
"Audio",
"Model",
"Decal",
"Plugin",
"MeshPart",
"Video",
"FontFamily"
],
"x-enum-varnames": [
"Audio",
"Model",
"Decal",
"Plugin",
"MeshPart",
"Video",
"FontFamily"
]
}
},
{
"name": "targetId",
"in": "query",
"description": "The ID of the asset being deleted",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "collectionName",
"in": "query",
"description": "Custom collections are not currently supported. This field should be omitted.",
"schema": {
"type": "string"
}
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 200
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 200
}
},
"x-roblox-scopes": [
{
"name": "creator-store-save:write",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["creator-store-save:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/creator-store#Saves_DeleteSave"
}
},
"get": {
"tags": ["Creator Store"],
"summary": "Gets saves from a collection.",
"operationId": "Saves_GetSaves",
"parameters": [
{
"name": "targetType",
"in": "query",
"description": "The asset type to filter by",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/SearchCategoryType"
}
],
"nullable": true
}
},
{
"name": "targetId",
"in": "query",
"description": "The ID of the asset to filter by. If provided, targetType must also be provided.",
"schema": {
"type": "integer",
"format": "int64",
"nullable": true
}
},
{
"name": "collectionName",
"in": "query",
"description": "Custom collections are not currently supported. This field should be omitted.",
"schema": {
"type": "string"
}
},
{
"name": "sortBy",
"in": "query",
"description": "The field to sort by",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/SavesSortCategory"
}
],
"description": "The category to sort the saves by.",
"default": "DateSaved",
"x-enumNames": [
"Name",
"Creator",
"Ratings",
"TargetType",
"DateSaved",
"LastModified",
"Price"
],
"x-enum-varnames": [
"Name",
"Creator",
"Ratings",
"TargetType",
"DateSaved",
"LastModified",
"Price"
]
}
},
{
"name": "sortDirection",
"in": "query",
"description": "The direction to sort by",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/SortDirection"
}
],
"description": "Represents the direction in which to sort the results",
"default": "None",
"x-enumNames": ["None", "Ascending", "Descending"],
"x-enum-varnames": ["None", "Ascending", "Descending"]
}
},
{
"name": "limit",
"in": "query",
"description": "The maximum number of saves to return",
"schema": {
"maximum": 500,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 100
}
},
{
"name": "page",
"in": "query",
"description": "The page number to return, starting from 1",
"schema": {
"maximum": 2147483647,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 1
}
},
{
"name": "keyword",
"in": "query",
"description": "The keyword to filter by",
"schema": {
"type": "string"
}
},
{
"name": "hideOwnedAssets",
"in": "query",
"description": "Whether to hide owned assets",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSavesResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 200
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 200
}
},
"x-roblox-scopes": [
{
"name": "creator-store-save:read",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["creator-store-save:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/creator-store#Saves_GetSaves"
}
},
"post": {
"tags": ["Creator Store"],
"summary": "Creates a save.",
"operationId": "Saves_CreateSave",
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/CreateSaveRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSaveRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CreateSaveRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CreateSaveRequest"
}
}
}
},
"responses": {
"201": {
"description": "Created"
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"409": {
"description": "Conflict",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 200
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 200
}
},
"x-roblox-scopes": [
{
"name": "creator-store-save:write",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["creator-store-save:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/creator-store#Saves_CreateSave"
}
}
},
"/toolbox-service/v1/saves:bulkDelete": {
"post": {
"tags": ["Creator Store"],
"summary": "Bulk deletes saves.\nMax of 5000 saves per request.",
"operationId": "Saves_BulkDeleteSaves",
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/BulkDeleteSavesRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkDeleteSavesRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/BulkDeleteSavesRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/BulkDeleteSavesRequest"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkDeleteSavesResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
}
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 200
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 200
}
},
"x-roblox-scopes": [
{
"name": "creator-store-save:write",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["creator-store-save:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/creator-store#Saves_BulkDeleteSaves"
}
}
},
"/toolbox-service/v2/assets/{id}": {
"get": {
"tags": ["Assets", "Creator Store"],
"summary": "Get Creator Store Asset Details",
"description": "Get details for a single Creator Store asset.",
"operationId": "Toolbox_GetAssetDetails",
"parameters": [
{
"name": "id",
"in": "path",
"description": "The asset ID to retrieve details for.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreatorStoreAsset"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
}
},
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 1000
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 1000
}
},
"x-roblox-scopes": [
{
"name": "creator-store-product:read"
}
],
"security": [
{},
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["creator-store-product:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#Toolbox_GetAssetDetails"
}
}
},
"/toolbox-service/v2/assets:search": {
"get": {
"tags": ["Assets", "Creator Store"],
"summary": "Search Creator Store Assets",
"description": "Search Creator Store for assets.",
"operationId": "Toolbox_SearchCreatorStoreAssetsDeprecated",
"parameters": [
{
"name": "searchCategoryType",
"in": "query",
"description": "The asset type to search within. Optional when categoryPath is present in the request; otherwise required.",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/SearchCategoryType"
}
],
"nullable": true
}
},
{
"name": "query",
"in": "query",
"description": "The search terms used to filter the results.",
"schema": {
"type": "string"
}
},
{
"name": "modelSubTypes",
"in": "query",
"description": "When searching for models, the subtypes associated with the search results.",
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ModelSubType"
},
"nullable": true
}
},
{
"name": "excludedModelSubTypes",
"in": "query",
"description": "When searching for models, the subtypes not associated with the search results.",
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ModelSubType"
},
"nullable": true
}
},
{
"name": "creator",
"in": "query",
"description": "Deprecated: Please refer to the 'userId' and 'groupId' properties instead. The creator type and ID. E.g. \"user/123\" or \"group/456\"",
"schema": {
"pattern": "^(user|group)/\\d+$",
"type": "string"
}
},
{
"name": "userId",
"in": "query",
"description": "The User ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.",
"schema": {
"maximum": 9223372036854776000,
"minimum": 1,
"type": "integer",
"format": "int64",
"nullable": true
}
},
{
"name": "groupId",
"in": "query",
"description": "The Group ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.",
"schema": {
"maximum": 9223372036854776000,
"minimum": 1,
"type": "integer",
"format": "int64",
"nullable": true
}
},
{
"name": "pageToken",
"in": "query",
"description": "The identifier for the desired search results page. Only one of 'pageNumber' and 'pageToken' can be present in a query.",
"schema": {
"type": "string"
}
},
{
"name": "pageNumber",
"in": "query",
"description": "The page number to retrieve, starting from 0. Only one of 'pageNumber' and 'pageToken' can be present in a query.",
"schema": {
"maximum": 2147483647,
"minimum": 0,
"type": "integer",
"format": "int32",
"nullable": true
}
},
{
"name": "maxPageSize",
"in": "query",
"description": "The number of assets to be returned. Cannot be larger than 100.",
"schema": {
"maximum": 100,
"minimum": 1,
"type": "integer",
"format": "int32",
"default": 25
}
},
{
"name": "sortDirection",
"in": "query",
"description": "The sort direction of the search results.",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/SortDirection"
}
],
"description": "Represents the direction in which to sort the results",
"default": "None",
"x-enumNames": ["None", "Ascending", "Descending"],
"x-enum-varnames": ["None", "Ascending", "Descending"]
}
},
{
"name": "sortCategory",
"in": "query",
"description": "The category to sort the search results by.",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/SortCategory"
}
],
"description": "The category to sort the search results by.",
"default": "Relevance",
"x-enumNames": [
"Relevance",
"Trending",
"Top",
"AudioDuration",
"CreateTime",
"UpdatedTime",
"Ratings"
],
"x-enum-varnames": [
"Relevance",
"Trending",
"Top",
"AudioDuration",
"CreateTime",
"UpdatedTime",
"Ratings"
]
}
},
{
"name": "audioMinDurationSeconds",
"in": "query",
"description": "When searching for audio, the minimum duration of the audio assets. If included, must be greater than or equal to 0.",
"schema": {
"maximum": 2147483647,
"minimum": 0,
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"name": "audioMaxDurationSeconds",
"in": "query",
"description": "When searching for audio, the maximum duration of the audio assets. If included, must be greater than or equal to 0.",
"schema": {
"maximum": 2147483647,
"minimum": 1,
"type": "integer",
"format": "int32",
"nullable": true
}
},
{
"name": "audioArtist",
"in": "query",
"description": "When searching for audio, the artist name of the audio assets.",
"schema": {
"type": "string"
}
},
{
"name": "audioAlbum",
"in": "query",
"description": "When searching for audio, the album name of the audio assets.",
"schema": {
"type": "string"
}
},
{
"name": "audioTypes",
"in": "query",
"description": "When searching for audio, the type of the audio assets.",
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchAudioTypeModel"
},
"nullable": true
}
},
{
"name": "includedInstanceTypes",
"in": "query",
"description": "When searching for models, this filters that the following [Instance](https://create.roblox.com/docs/reference/engine/classes/Instance) types are included in the model.",
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ModelInstanceType"
},
"nullable": true
}
},
{
"name": "includeOnlyVerifiedCreators",
"in": "query",
"description": "Whether the results should only include assets created by verified creators.",
"schema": {
"type": "boolean",
"default": true
}
},
{
"name": "minPriceCents",
"in": "query",
"description": "The minimum price of the asset in cents. If included, must be greater than or equal to 0.",
"schema": {
"maximum": 2147483647,
"minimum": 0,
"type": "integer",
"format": "int64",
"nullable": true
}
},
{
"name": "maxPriceCents",
"in": "query",
"description": "The maximum price of the asset in cents. If included, must be greater than or equal to 0.",
"schema": {
"maximum": 2147483647,
"minimum": 0,
"type": "integer",
"format": "int64",
"nullable": true
}
},
{
"name": "facets",
"in": "query",
"description": "Additional keywords to query by.",
"schema": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
}
},
{
"name": "tags",
"in": "query",
"description": "The tags used to filter the results.",
"schema": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
}
},
{
"name": "categoryPath",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "searchView",
"in": "query",
"description": "Indicates which fields will be populated in the response.",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/SearchView"
}
],
"description": "This view controls which fields are populated in the search response. A lighter\nview will result in faster response times and higher reliability.",
"default": "Core",
"x-enumNames": ["IDs", "Core", "Full"],
"x-enum-varnames": ["IDs", "Core", "Full"]
}
},
{
"name": "musicChartType",
"in": "query",
"description": "Indicates which music charts to filter from.",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/MusicChartType"
}
],
"description": "Represents which music chart to pull entries from, if any",
"default": "None",
"x-enumNames": ["None", "Current", "Week", "Month", "Year"],
"x-enum-varnames": ["None", "Current", "Week", "Month", "Year"]
}
},
{
"name": "swimlane",
"in": "query",
"description": "Indicates which swimlane to filter from.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchCreatorStoreAssetsResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"500": {
"description": "Internal Server Error"
}
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/toolbox/v2/assets:search",
"httpMethod": "POST",
"description": "This endpoint is being deprecated in favor of using POST which has the same functionality but with better structured data & support for image-based search."
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": true
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 1000
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 1000
}
},
"x-roblox-scopes": [
{
"name": "creator-store-product:read"
}
],
"security": [
{},
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["creator-store-product:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#Toolbox_SearchCreatorStoreAssetsDeprecated"
}
},
"post": {
"tags": ["Creator Store"],
"summary": "Search Creator Store Assets",
"description": "Search Creator Store for assets.",
"operationId": "Toolbox_SearchCreatorStoreAssets",
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/SearchCreatorStoreAssetsRequest"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchCreatorStoreAssetsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/SearchCreatorStoreAssetsRequest"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/SearchCreatorStoreAssetsRequest"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchCreatorStoreAssetsResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
},
{
"$ref": "#/components/schemas/HttpValidationProblemDetails"
}
],
"nullable": true
}
}
}
},
"500": {
"description": "Internal Server Error"
}
},
"x-roblox-engine-usability": {
"apiKeyWithHttpService": true
},
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 1000
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 1000
}
},
"x-roblox-scopes": [
{
"name": "creator-store-product:read"
}
],
"security": [
{},
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["creator-store-product:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/creator-store#Toolbox_SearchCreatorStoreAssets"
}
}
},
"/universes/v1/{universeId}/places/{placeId}/versions": {
"post": {
"tags": ["Places", "Universes"],
"operationId": "Places_CreatePlaceVersionApiKey",
"x-roblox-cloud-api-operation-name": "Publish a Place",
"x-roblox-stability": "BETA",
"description": "Publish a new place or update an existing place with a new version. Provide a RBXL or RBXLX file in the data-binary.",
"parameters": [
{
"name": "universeId",
"in": "path",
"required": true,
"description": "The identifier of the experience in which you want to publish your place to. You can [copy your experience's Universe ID](/cloud/guides/usage-place-publishing.md#publishing-a-place) on **Creator Dashboard**.",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "placeId",
"in": "path",
"required": true,
"description": "The identifier of your place. See [Publishing places with API keys](/cloud/guides/usage-place-publishing.md) on obtaining a Place ID.",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "versionType",
"in": "query",
"description": "Can only be either: \n- `Saved`: the place file should be saved, but not published. \n - `Published`: the place file should be saved and published.",
"schema": {
"type": "string",
"nullable": true
}
}
],
"responses": {
"200": {
"description": "Returns the published place's version number.",
"content": {
"text/plain": {
"schema": {
"type": "string",
"example": "{\"versionNumber\":7}"
}
}
}
},
"400": {
"description": "Invalid request / Invalid file content."
},
"401": {
"description": "API key not valid for operation, user does not have authorization."
},
"403": {
"description": "Publish not allowed on place."
},
"404": {
"description": "Place or universe does not exist."
},
"409": {
"description": "Place not part of the universe."
},
"500": {
"description": "Server internal error / Unknown error."
}
},
"security": [
{
"roblox-api-key": []
}
],
"x-roblox-scopes": [
{
"name": "universe-places:write",
"targetResourceSpecifier": "v1"
},
{
"name": "universe-places:write"
}
],
"x-roblox-cloud-api-operation": true,
"x-roblox-code-samples": [
{
"language": "curl",
"script": "curl --location --request POST 'https://apis.roblox.com/universes/v1/{universeId}/places/{placeId}/versions?versionType=Published' \n--header 'x-api-key: abc...' \n--header 'Content-Type: application/xml' \n--data-raw ''\n"
}
],
"x-roblox-size-limit": 10485760,
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 30
}
},
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#Places_CreatePlaceVersionApiKey"
}
}
},
"/v1/account-creation/metadata": {
"get": {
"tags": ["Accounts"],
"summary": "Get metadata for adding auth methods.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AuthMethodsMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AuthMethodsMetadataResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_account_creation_metadata"
}
}
},
"/v1/account/pin": {
"delete": {
"tags": ["Accounts"],
"summary": "Request for deletes the account pin from the account.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinRequest"
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_delete_v1_account_pin"
}
},
"get": {
"tags": ["Accounts"],
"summary": "Gets the account pin status.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinStatusResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinStatusResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_account_pin"
}
},
"patch": {
"tags": ["Accounts"],
"summary": "Request made to update the account pin on the account.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinRequest"
}
}
},
"description": "The request body.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_patch_v1_account_pin"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Request to create the account pin.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinRequest"
}
}
},
"description": "The Roblox.Authentication.Api.Models.AccountPinRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_account_pin"
}
}
},
"/v1/account/pin/lock": {
"post": {
"tags": ["Accounts"],
"summary": "Request to locks the account which has an account pin enabled.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_account_pin_lock"
}
}
},
"/v1/account/pin/unlock": {
"post": {
"tags": ["Accounts"],
"summary": "Requests to unlock the account pin.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinRequest"
}
}
},
"description": "The Roblox.Authentication.Api.Models.AccountPinRequest containing the entered pin.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountPinResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_account_pin_unlock"
}
}
},
"/v1/account/upgrade": {
"post": {
"summary": "Attaches a sign-in credential to the calling account.",
"description": "The caller is the account being upgraded, so the request carries no user ID and the\nsession is the authorization. The call is safe to retry: each field is compared against\nthe account first, and a field the account already holds is dropped rather than rewritten.\n\nThe moderation filter is bypassed because an account held by a birthday compliance\nrestriction is Suppressed and lifts that restriction through this call. Every upgrade type\nstill passes its own eligibility gate.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountUpgradeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountUpgradeRequest"
}
}
},
"description": "The Roblox.Authentication.Api.Models.AccountUpgradeRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountUpgradeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountUpgradeResponse"
}
}
}
},
"400": {
"description": "5: Account upgrade requires a password.\r\n6: Invalid Birthday.\r\n8: The upgrade type is missing, unknown, or not available.\r\n9: A supplied field is not allowed for the declared upgrade type.\r\n10: A birthday is required for this account.\r\n11: Invalid username.\r\n12: This username is already in use.\r\n13: Invalid password.\r\n14: Invalid email address.\r\n15: Too many accounts use this email address."
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n3: Not eligible for account upgrade."
},
"403": {
"description": "0: Token Validation Failed\r\n3: Not eligible for account upgrade.\r\n16: This account already holds a sign-in credential."
},
"429": {
"description": "4: Too many attempts. Please wait a bit."
},
"500": {
"description": "1: Unknown Error\r\n7: Account upgrade failed."
},
"503": {
"description": "2: Account upgrade is disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
]
}
},
"/v1/announcements": {
"get": {
"tags": ["Accounts"],
"summary": "Migrate from RobloxWebsite project, return news notification for Private Message page",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.GetAnnouncementsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.GetAnnouncementsResponse"
}
}
}
},
"400": {
"description": "2: Message does not exist or the current user is not authorized to view it."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://privatemessages.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#privatemessages_get_v1_announcements"
}
}
},
"/v1/announcements/metadata": {
"get": {
"tags": ["Accounts"],
"summary": "",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.AnnouncementsMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.AnnouncementsMetadataResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://privatemessages.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#privatemessages_get_v1_announcements_metadata"
}
}
},
"/v1/asset": {
"get": {
"tags": ["Assets"],
"parameters": [
{
"in": "header",
"name": "Accept-Encoding",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "AssetType",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Usage-Context",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "id",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "userAssetId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "assetVersionId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "version",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "universeId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "clientInsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "scriptinsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "modulePlaceId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "serverplaceid",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "assetName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "hash",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "marAssetHash",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "marCheckSum",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "expectedAssetType",
"schema": {
"type": "string",
"default": ""
}
},
{
"in": "query",
"name": "skipSigningScripts",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "permissionContext",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "doNotFallbackToBaselineRepresentation",
"schema": {
"type": "boolean"
}
},
{
"in": "query",
"name": "contentRepresentationPriorityList",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "assetResolutionMode",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "accessContext",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v1_asset"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://assetdelivery.roblox.com/v2/asset",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v2_asset"
}
]
}
},
"/v1/asset-thumbnail-animated": {
"get": {
"tags": ["Assets", "Thumbnails"],
"summary": "Thumbnails asset animated.",
"parameters": [
{
"in": "query",
"name": "assetId",
"description": "The asset id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "(optional) placeid",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "4: The requested Ids are invalid, of an invalid type or missing."
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#thumbnails_get_v1_asset_thumbnail_animated"
}
}
},
"/v1/assetId/{assetId}": {
"get": {
"tags": ["Assets"],
"summary": "Retrieves an asset by its ID",
"parameters": [
{
"in": "path",
"name": "assetId",
"description": "The ID of the asset to retrieve.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Accept-Encoding",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "AssetType",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Usage-Context",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "skipSigningScripts",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "clientInsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "scriptinsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "modulePlaceId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "serverplaceid",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "expectedAssetType",
"schema": {
"type": "string",
"default": ""
}
},
{
"in": "query",
"name": "doNotFallbackToBaselineRepresentation",
"schema": {
"type": "boolean"
}
},
{
"in": "query",
"name": "contentRepresentationPriorityList",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "accessContext",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v1_assetId__assetId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://assetdelivery.roblox.com/v2/assetId/{assetId}",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v2_assetId__assetId_"
}
]
}
},
"/v1/assetId/{assetId}/version/{versionNumber}": {
"get": {
"tags": ["Assets"],
"summary": "Retrieves an asset by its ID and version number.",
"parameters": [
{
"in": "path",
"name": "assetId",
"description": "The ID of the asset to retrieve.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "versionNumber",
"description": "The version of the asset to retrieve.",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "header",
"name": "Accept-Encoding",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "AssetType",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Usage-Context",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "skipSigningScripts",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "clientInsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "scriptinsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "modulePlaceId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "serverplaceid",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "expectedAssetType",
"schema": {
"type": "string",
"default": ""
}
},
{
"in": "query",
"name": "doNotFallbackToBaselineRepresentation",
"schema": {
"type": "boolean"
}
},
{
"in": "query",
"name": "contentRepresentationPriorityList",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "accessContext",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v1_assetId__assetId__version__versionNumber_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://assetdelivery.roblox.com/v2/assetId/{assetId}/version/{versionNumber}",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v2_assetId__assetId__version__versionNumber_"
}
]
}
},
"/v1/assets#thumbnails.roblox.com": {
"get": {
"tags": ["Assets", "Thumbnails"],
"summary": "Thumbnails assets.",
"parameters": [
{
"in": "query",
"name": "assetIds",
"description": "The asset ids.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "(optional) placeid",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "returnPolicy",
"description": "Optional policy to use in selecting thumbnail to return (default = PlaceHolder).",
"schema": {
"type": "string",
"enum": [
"PlaceHolder",
"ForcePlaceHolder",
"AutoGenerated",
"ForceAutoGenerated"
],
"default": "PlaceHolder"
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": [
"30x30",
"42x42",
"50x50",
"60x62",
"75x75",
"110x110",
"140x140",
"150x150",
"160x100",
"160x600",
"250x250",
"256x144",
"300x250",
"304x166",
"384x216",
"396x216",
"420x420",
"480x270",
"512x512",
"576x324",
"700x700",
"728x90",
"768x432",
"1200x80",
"330x110",
"660x220",
"1320x440",
"720x228",
"1440x456",
"930x480"
],
"default": "30x30"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Jpeg", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n8: The requested return policy is invalid (must be PlaceHolder, AutoGenerated or ForceAutoGenerated).\r\n10: Circular thumbnail requests are not allowed"
},
"403": {
"description": "9: User not authorized to use AutoGenerated or ForceAutoGenerated return policies."
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#thumbnails_get_v1_assets"
}
}
},
"/v1/assets-thumbnail-3d": {
"get": {
"tags": ["Assets", "Thumbnails"],
"summary": "Thumbnails assets.",
"parameters": [
{
"in": "query",
"name": "assetId",
"description": "The asset id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "useGltf",
"description": "(optional) formatType",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "(optional) placeid",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "4: The requested Ids are invalid, of an invalid type or missing."
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "thumbnail:read",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["thumbnail:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#thumbnails_get_v1_assets_thumbnail_3d"
}
}
},
"/v1/assets/batch": {
"post": {
"tags": ["Assets"],
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Browser-Asset-Request",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Assets.BatchAssetRequestItem"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Assets.BatchAssetRequestItem"
}
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_post_v1_assets_batch"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://assetdelivery.roblox.com/v2/assets/batch",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_post_v2_assets_batch"
}
]
}
},
"/v1/assets/{assetId}/bundles": {
"get": {
"tags": ["Assets", "Avatars"],
"summary": "Lists the bundles a particular asset belongs to. Use the Id of the last bundle in the response to get the next page.",
"parameters": [
{
"in": "path",
"name": "assetId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Catalog.Api.BundleDetailsModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Catalog.Api.BundleDetailsModel_"
}
}
}
},
"400": {
"description": "1: Invalid assetId\r\n4: Invalid Cursor."
}
},
"servers": [
{
"url": "https://catalog.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_assets__assetId__bundles"
}
}
},
"/v1/auth/metadata": {
"get": {
"tags": ["Accounts", "Metadata"],
"summary": "Gets Auth meta data",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AuthMetaDataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AuthMetaDataResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_auth_metadata"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/auth/metadata",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_auth_metadata"
}
]
}
},
"/v1/auto-localization-table/games/{gameId}/assets-generation-request": {
"post": {
"tags": ["Localization", "Universes"],
"summary": "Generates localization asset of a game.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "3: Invalid table id.\r\n14: Invalid game id\r\n29: You do not have permission to generate asset for this table.\r\n32: LocalizationTable is not available for the game.\r\n34: Actor provided is invalid"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "24: Too many attempts.Please try again later."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_post_v1_auto_localization_table_games__gameId__assets_generation_request"
}
}
},
"/v1/auto-localization-table/games/{gameId}/auto-scrape-cleanup-request": {
"post": {
"tags": ["Localization", "Universes"],
"summary": "Enqueues an event to flush the auto scraped entries which doesn't have translations.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.RaiseEventForAutoScrapedEntriesCleanupRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.RaiseEventForAutoScrapedEntriesCleanupRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object"
}
},
"text/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n31: You do not have permission to flush auto scraped entries asset for this game.\r\n32: LocalizationTable is not available for the game.\r\n34: Actor provided is invalid"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "33: Too many attempts to flush the game.Please try again later."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_post_v1_auto_localization_table_games__gameId__auto_scrape_cleanup_request"
}
}
},
"/v1/autolocalization/games/{gameId}/autolocalizationtable#localizationtables.roblox.com": {
"patch": {
"tags": ["Localization"],
"parameters": [
{
"in": "path",
"name": "gameId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.SetAutolocalizationTableForGameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.SetAutolocalizationTableForGameRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_patch_v1_autolocalization_games__gameId__autolocalizationtable"
}
},
"post": {
"tags": ["Localization", "Universes"],
"parameters": [
{
"in": "path",
"name": "gameId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GameAutolocalizationInformationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GameAutolocalizationInformationResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_post_v1_autolocalization_games__gameId__autolocalizationtable"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/autolocalization/games/{gameId}/autolocalizationtable",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_localization_tables_v1_autolocalization_games__gameId__autolocalizationtable"
}
]
}
},
"/v1/autolocalization/games/{gameId}/settings#localizationtables.roblox.com": {
"patch": {
"tags": ["Localization", "Universes"],
"summary": "Sets a game's auto-localization related settings",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.SetAutolocalizationSettingsForGameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.SetAutolocalizationSettingsForGameRequest"
}
}
},
"description": "The request body.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n61: IsAutomaticEntriesSettingEnabled can only be enabled if IsAutolocalizationEnabled is also enabled."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_patch_v1_autolocalization_games__gameId__settings"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/autolocalization/games/{gameId}/settings",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_localization_tables_v1_autolocalization_games__gameId__settings"
}
]
}
},
"/v1/autolocalization/metadata#localizationtables.roblox.com": {
"get": {
"tags": ["Localization", "Metadata"],
"summary": "Metadata for AutoLocalization Configuration",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.AutoLocalizationMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.AutoLocalizationMetadataResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_get_v1_autolocalization_metadata"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/autolocalization/metadata",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_localization_tables_v1_autolocalization_metadata"
}
]
}
},
"/v1/automatic-translation/games/{gameId}/feature-status": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Checks if automatic translation can be enabled for a game.\r\nThe user must still have proper permissions for the game to get this info.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetAutomaticTranslationFeatureStatusForGameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetAutomaticTranslationFeatureStatusForGameResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_automatic_translation_games__gameId__feature_status"
}
}
},
"/v1/automatic-translation/games/{gameId}/quota": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Returns the automatic translation quota info for a game.\r\nThe user must still have proper permissions for the game to get this info.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetAutomaticTranslationQuotaForGameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetAutomaticTranslationQuotaForGameResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_automatic_translation_games__gameId__quota"
}
}
},
"/v1/automatic-translation/languages/{languageCode}/target-languages": {
"get": {
"tags": ["Localization"],
"summary": "Checks if the requested target languages are allowed for automatic translation based on the source language.\r\nIf there are no requested target languages, then all allowed target languages for the source language will be returned.",
"parameters": [
{
"in": "path",
"name": "languageCode",
"description": "The source language.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "targetLanguages",
"description": "Optional target languages. If not passed in, all allowed target languages for the source language will be returned.",
"explode": true,
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"in": "query",
"name": "gameId",
"description": "Optional gameId. If not passed in, we'll return the default list of languages allowed.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetAllowedAutomaticTranslationStatusForLanguagesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetAllowedAutomaticTranslationStatusForLanguagesResponse"
}
}
}
},
"400": {
"description": "73: Maximum languages exceeded. Please keep the number of languages per request below the maximum.\r\n74: A target language cannot be null or whitespace."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_automatic_translation_languages__languageCode__target_languages"
}
}
},
"/v1/avatar": {
"get": {
"tags": ["Avatars"],
"summary": "Returns details about the authenticated user's avatar.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarModelV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarModelV2"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"deprecated": true,
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"description": "Please use GET v4/avatar",
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v1_avatar"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://avatar.roblox.com/v2/avatar/avatar",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v2_avatar_avatar"
}
]
}
},
"/v1/avatar-rules": {
"get": {
"tags": ["Avatars"],
"summary": "Returns the business rules related to avatars.",
"description": "BodyColorsPalette is a list of valid brickColors you can choose for your avatar.\r\nWearableAssetTypes contains a list of asset types with names, ids, and the maximum number that you can wear at a time.\r\nDoes not include packages because they cannot be worn on your avatar directly.\r\nPlayerAvatarTypes are the types of avatars you can choose between.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarRulesModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarRulesModel"
}
}
}
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v1_avatar_rules"
}
}
},
"/v1/avatar/metadata": {
"get": {
"tags": ["Avatars", "Metadata"],
"summary": "Returns metadata used by the avatar page of the website.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarMetadataModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarMetadataModel"
}
}
}
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v1_avatar_metadata"
}
}
},
"/v1/avatar/redraw-thumbnail": {
"post": {
"tags": ["Avatars", "Thumbnails", "User profiles"],
"summary": "Requests the authenticated user's thumbnail be redrawn.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "1: Redrawing your avatar thumbnail is floodchecked at this time.\r\n1: Redrawing your avatar thumbnail is floodchecked at this time"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v1_avatar_redraw_thumbnail"
}
}
},
"/v1/avatar/set-body-colors": {
"post": {
"tags": ["Avatars"],
"summary": "Sets the authenticated user's body colors.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorsModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorsModel"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v1_avatar_set_body_colors"
}
}
},
"/v1/avatar/set-player-avatar-type": {
"post": {
"tags": ["Avatars"],
"summary": "Sets the authenticated user's player avatar type (e.g. R6 or R15).",
"description": "This is the avatar type chosen on the Avatar page. Some games can override this and force your character to be R6 or R15.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.PlayerAvatarTypeModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.PlayerAvatarTypeModel"
}
}
},
"description": "R6 or R15.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
}
}
},
"400": {
"description": "1: Invalid playerAvatarType. Valid values are: "
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You are not allowed to change player avatar type."
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v1_avatar_set_player_avatar_type"
}
}
},
"/v1/avatar/set-scales": {
"post": {
"tags": ["Avatars"],
"summary": "Sets the authenticated user's scales.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
}
}
},
"400": {
"description": "1: Please pass in the scales JSON"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n3: The user does not have permissions to change scales."
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v1_avatar_set_scales"
}
}
},
"/v1/badges/icons": {
"get": {
"tags": ["Badges", "Thumbnails"],
"summary": "Thumbnails badge icons.",
"parameters": [
{
"in": "query",
"name": "badgeIds",
"description": "The badge ids.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": ["150x150"],
"default": "150x150"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#thumbnails_get_v1_badges_icons"
}
}
},
"/v1/badges/metadata": {
"get": {
"tags": ["Badges", "Metadata"],
"summary": "Gets metadata about the badges system.",
"description": "Returns creation price and field length limits. Callers use this before creating or editing badges.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Badges.Api.BadgeMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Badges.Api.BadgeMetadataResponse"
}
}
}
}
},
"servers": [
{
"url": "https://badges.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_get_v1_badges_metadata"
}
}
},
"/v1/badges/{badgeId}": {
"get": {
"tags": ["Badges"],
"summary": "Gets badge information by the badge Id.",
"description": "Returns display fields, award statistics, and owning universe for a single badge.",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The badge Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Badges.Api.BadgeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Badges.Api.BadgeResponse"
}
}
}
},
"404": {
"description": "1: Badge is invalid or does not exist.\r\n3: The game is invalid or does not exist."
}
},
"servers": [
{
"url": "https://badges.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_get_v1_badges__badgeId_"
}
},
"patch": {
"tags": ["Badges"],
"summary": "Updates badge configuration.",
"description": "Managers may change enabled state, name, and description when authorized for the badge.",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The badge Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Badges.Api.UpdateBadgeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Badges.Api.UpdateBadgeRequest"
}
}
},
"description": "The request body.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "6: Text moderated.\r\n14: Invalid badge name.\r\n15: Invalid badge description."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You do not have permission to manage this badge."
},
"404": {
"description": "1: Badge is invalid or does not exist.\r\n3: The game is invalid or does not exist."
}
},
"servers": [
{
"url": "https://badges.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_patch_v1_badges__badgeId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-badges/v1/badges/{badgeId}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#patch_legacy_badges_v1_badges__badgeId_"
}
]
}
},
"/v1/badges/{badgeId}/description/language-codes/{languageCode}": {
"patch": {
"tags": ["Badges", "Localization"],
"summary": "Update localized description of a badge",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The badge id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the description to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeDescriptionRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeDescriptionRequest"
}
}
},
"description": "The request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeDescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeDescriptionResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game.\r\n62: Invalid game badge id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#gameinternationalization_patch_v1_badges__badgeId__description_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/badges/{badgeId}/description/language-codes/{languageCode}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#patch_legacy_game_internationalization_v1_badges__badgeId__description_language_codes__languageCode_"
}
]
}
},
"/v1/badges/{badgeId}/icon#publish.roblox.com": {
"post": {
"tags": ["Assets", "Badges", "Thumbnails"],
"summary": "Overwrites a badge icon with a new one.",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The badge Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/postV1Badges_badgeid_icon"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Publish.Api.UploadResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Publish.Api.UploadResponse"
}
}
}
},
"400": {
"description": "2: File not present in request.\r\n12: Name or description is moderated."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n5: You do not have permission to manage this item."
},
"404": {
"description": "4: Target item is invalid or does not exist."
},
"429": {
"description": "3: You're uploading too much, please wait and try again later."
}
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-publish/v1/badges/{badgeId}/icon",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#post_legacy_publish_v1_badges__badgeId__icon"
}
],
"servers": [
{
"url": "https://publish.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#publish_post_v1_badges__badgeId__icon"
}
}
},
"/v1/badges/{badgeId}/icons": {
"get": {
"tags": ["Badges", "Localization"],
"summary": "Get all icons for a badge",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The id of the badge",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "width",
"description": "The width of the icon to request",
"schema": {
"type": "integer",
"format": "int32",
"default": 150
}
},
{
"in": "query",
"name": "height",
"description": "The height of the icon to request",
"schema": {
"type": "integer",
"format": "int32",
"default": 150
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetBadgeIconResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetBadgeIconResponse_"
}
}
}
},
"400": {
"description": "52: Image dimensions are invalid\r\n62: Invalid game badge id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#gameinternationalization_get_v1_badges__badgeId__icons"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/badges/{badgeId}/icons",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#get_legacy_game_internationalization_v1_badges__badgeId__icons"
}
]
}
},
"/v1/badges/{badgeId}/icons/language-codes/{languageCode}": {
"delete": {
"tags": ["Badges", "Localization"],
"summary": "Delete a localized icon from a badge",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The id of the badge",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the localized icon to delete",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "22: Invalid language code\r\n23: You can't delete translations for source language\r\n53: Language is not supported for the game.\r\n62: Invalid game badge id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#gameinternationalization_delete_v1_badges__badgeId__icons_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/badges/{badgeId}/icons/language-codes/{languageCode}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#delete_legacy_game_internationalization_v1_badges__badgeId__icons_language_codes__languageCode_"
}
]
},
"post": {
"tags": ["Badges", "Localization"],
"summary": "Update a badge's icon",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The id of the badge",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of this icon to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/postV1Badges_badgeid_iconsLanguageCodes_languagecode_"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "22: Invalid language code\r\n26: You can't update translations for source language\r\n45: File uploaded does not match known image format\r\n46: File not present in request\r\n53: Language is not supported for the game.\r\n62: Invalid game badge id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"429": {
"description": "24: Too many attempts.Please try again later."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#gameinternationalization_post_v1_badges__badgeId__icons_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/badges/{badgeId}/icons/language-codes/{languageCode}",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#post_legacy_game_internationalization_v1_badges__badgeId__icons_language_codes__languageCode_"
}
]
}
},
"/v1/badges/{badgeId}/name-description": {
"get": {
"tags": ["Badges", "Localization"],
"parameters": [
{
"in": "path",
"name": "badgeId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.NameDescription_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.NameDescription_"
}
}
}
},
"400": {
"description": "62: Invalid game badge id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#gameinternationalization_get_v1_badges__badgeId__name_description"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/badges/{badgeId}/name-description",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#get_legacy_game_internationalization_v1_badges__badgeId__name_description"
}
]
}
},
"/v1/badges/{badgeId}/name-description/language-codes/{languageCode}": {
"delete": {
"tags": ["Badges", "Localization"],
"summary": "Delete localized name and description of a badge",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The badge id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the name and description to delete",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "22: Invalid language code\r\n23: You can't delete translations for source language\r\n53: Language is not supported for the game.\r\n62: Invalid game badge id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#gameinternationalization_delete_v1_badges__badgeId__name_description_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/badges/{badgeId}/name-description/language-codes/{languageCode}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#delete_legacy_game_internationalization_v1_badges__badgeId__name_description_language_codes__languageCode_"
}
]
},
"patch": {
"tags": ["Badges", "Localization"],
"summary": "Update localized name and description of a badge",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The badge id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the name and description to Update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeNameDescriptionRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeNameDescriptionRequest"
}
}
},
"description": "The request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeNameDescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeNameDescriptionResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game.\r\n62: Invalid game badge id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#gameinternationalization_patch_v1_badges__badgeId__name_description_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/badges/{badgeId}/name-description/language-codes/{languageCode}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#patch_legacy_game_internationalization_v1_badges__badgeId__name_description_language_codes__languageCode_"
}
]
}
},
"/v1/badges/{badgeId}/name/language-codes/{languageCode}": {
"patch": {
"tags": ["Badges", "Localization"],
"summary": "Update localized name of a badge",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The badge id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the name to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeNameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeNameRequest"
}
}
},
"description": "The request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeNameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateBadgeNameResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game.\r\n62: Invalid game badge id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#gameinternationalization_patch_v1_badges__badgeId__name_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/badges/{badgeId}/name/language-codes/{languageCode}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#patch_legacy_game_internationalization_v1_badges__badgeId__name_language_codes__languageCode_"
}
]
}
},
"/v1/batch": {
"post": {
"tags": ["Thumbnails"],
"summary": "Returns a list of thumbnails with varying types and sizes",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "(optional) placeid",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Thumbnails.Apis.Models.ThumbnailBatchRequest"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Thumbnails.Apis.Models.ThumbnailBatchRequest"
}
}
}
},
"description": "List of ThumbnailBatchRequest objects, may contain the following request types:\n 1. Avatar\n 2. AvatarHeadShot\n 3. GameIcon\n 4. BadgeIcon\n 5. GameThumbnail\n 6. GamePass\n 7. Asset\n 8. BundleThumbnail\n 9. Outfit\n 10. GroupIcon\n 11. DeveloperProduct\n 12. AutoGeneratedAsset\n 13. AvatarBust\n 14. PlaceIcon\n 15. AutoGeneratedGameIcon\n 16. ForceAutoGeneratedGameIcon\n 17. Look\n 18. CreatorContextAsset\n 19. Screenshot",
"required": true
},
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n7: The specified type is not supported by the batch endpoint"
},
"403": {
"description": "9: User not authorized to use AutoGenerated or ForceAutoGenerated return policies."
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#thumbnails_post_v1_batch"
}
}
},
"/v1/birthdate": {
"get": {
"tags": ["Accounts"],
"summary": "Get the user's birthdate",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.BirthdateResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.BirthdateResponse"
}
}
}
},
"400": {
"description": "1: User not found."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"deprecated": true,
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"description": "Replaced by users.roblox.com/v1/birthdate",
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_get_v1_birthdate"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://users.roblox.com/v1/birthdate",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_birthdate"
}
]
},
"post": {
"tags": ["Accounts"],
"summary": "Update the user's birthdate",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.BirthdateRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.BirthdateRequest"
}
}
},
"description": "The Roblox.Users.Api.BirthdateRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: User not found.\r\n4: The birthdate provided is invalid.\r\n8: Password is incorrect."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: PIN is locked.\r\n5: Invalid birthdate change."
},
"500": {
"description": "0: An unknown error occured.\r\n5: Invalid birthdate change."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_post_v1_birthdate"
}
}
},
"/v1/birthdate#users.roblox.com": {
"get": {
"tags": ["Accounts"],
"summary": "Get the user's birthdate",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.BirthdateResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.BirthdateResponse"
}
}
}
},
"400": {
"description": "1: User not found."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_birthdate"
}
}
},
"/v1/bundles/details": {
"get": {
"tags": ["Assets", "Avatars"],
"summary": "Returns details about the given bundleIds.",
"parameters": [
{
"in": "query",
"name": "bundleIds",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleDetailsModel"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleDetailsModel"
}
}
}
}
},
"400": {
"description": "3: Cannot request so many bundles at once."
}
},
"servers": [
{
"url": "https://catalog.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_bundles_details"
}
}
},
"/v1/bundles/thumbnails": {
"get": {
"tags": ["Avatars", "Thumbnails"],
"summary": "Get bundle thumbnails for the given CSV of bundle ids",
"parameters": [
{
"in": "query",
"name": "bundleIds",
"description": "CSV for the bundle ids to get bundle thumbnails",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": ["150x150", "420x420"],
"default": "150x150"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#thumbnails_get_v1_bundles_thumbnails"
}
}
},
"/v1/bundles/{bundleId}/details": {
"get": {
"tags": ["Assets", "Avatars"],
"summary": "Returns details about the given bundleId.",
"parameters": [
{
"in": "path",
"name": "bundleId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleDetailsModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleDetailsModel"
}
}
}
},
"400": {
"description": "1: Invalid bundle"
}
},
"servers": [
{
"url": "https://catalog.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_bundles__bundleId__details"
}
}
},
"/v1/catalog/items/details": {
"post": {
"tags": ["Assets", "Avatars"],
"summary": "Returns details for one or more catalog items.",
"description": "There is an item count limit per request. Exceeding this returns 400 Bad Request.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.MultigetItemDetailsRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.MultigetItemDetailsRequestModel"
}
}
},
"description": "Roblox.Catalog.Api.MultigetItemDetailsRequestModel.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Catalog.Api.CatalogSearchDetailedResponseItemV2_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Catalog.Api.CatalogSearchDetailedResponseItemV2_"
}
}
}
},
"400": {
"description": "2: Invalid count"
},
"403": {
"description": "0: Token Validation Failed\r\n7: User is unauthorized."
},
"429": {
"description": "8: The flood limit has been exceeded."
}
},
"servers": [
{
"url": "https://catalog.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_post_v1_catalog_items_details"
}
}
},
"/v1/client-assertion": {
"get": {
"tags": ["Accounts"],
"summary": "Creates a client assertion to be used when generating an auth ticket.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.GetClientAssertionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.GetClientAssertionResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_client_assertion"
}
}
},
"/v1/client-version/{binaryType}": {
"get": {
"tags": ["Metadata"],
"summary": "Get client version information for specific binary type",
"parameters": [
{
"in": "path",
"name": "binaryType",
"description": "Platform(WindowsPlayer, WindowsStudio, MacPlayer or MacStudio) for which we want the latest version",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.ClientVersionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.ClientVersionResponse"
}
}
}
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v1_client_version__binaryType_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://clientsettings.roblox.com/v2/client-version/{binaryType}",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v2_client_version__binaryType_"
}
]
}
},
"/v1/collections/items/{itemType}/{itemTargetId}": {
"delete": {
"tags": ["Inventories"],
"summary": "Removes an item to the appropriate collection",
"parameters": [
{
"in": "path",
"name": "itemType",
"description": "Type of the item (i.e. Asset, Bundle)",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3]
}
},
{
"in": "path",
"name": "itemTargetId",
"description": "ID of the item",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: The item type does not exist.\r\n2: The asset does not exist.\r\n3: The bundle does not exist."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n8: The item is not in the collection."
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/inventories#inventory_delete_v1_collections_items__itemType___itemTargetId_"
}
},
"post": {
"tags": ["Inventories"],
"summary": "Adds an item to the appropriate collection",
"parameters": [
{
"in": "path",
"name": "itemType",
"description": "Type of the item (i.e. Asset, Bundle)",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3]
}
},
{
"in": "path",
"name": "itemTargetId",
"description": "ID of the item",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: The item type does not exist.\r\n2: The asset does not exist.\r\n3: The bundle does not exist."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n4: You don't own the specified item.\r\n5: Assets of this type are not allowed in collections.\r\n6: Items of this type are not allowed in collections.\r\n7: The item is already in the collection.\r\n9: The collection is full."
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/inventories#inventory_post_v1_collections_items__itemType___itemTargetId_"
}
}
},
"/v1/country-regions": {
"get": {
"tags": ["Localization"],
"summary": "Get list of country regions sorted by localized name",
"parameters": [
{
"in": "query",
"name": "locale",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.CountryRegionListResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.CountryRegionListResponse"
}
}
}
},
"400": {
"description": "2: Invalid supported locale code."
},
"403": {
"description": "7: Feature is disabled"
}
},
"servers": [
{
"url": "https://locale.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#locale_get_v1_country_regions"
}
}
},
"/v1/description": {
"get": {
"tags": ["Accounts", "User profiles"],
"summary": "Get the user's description",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.DescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.DescriptionResponse"
}
}
}
},
"400": {
"description": "1: User not found."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"deprecated": true,
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"description": "Replaced by users.roblox.com/v1/description",
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_get_v1_description"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://users.roblox.com/v1/description",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_description"
}
]
},
"post": {
"tags": ["Accounts", "User profiles"],
"summary": "Update the user's description",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.DescriptionRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.DescriptionRequest"
}
}
},
"description": "The Roblox.AccountInformation.Api.Models.DescriptionRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.DescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.DescriptionResponse"
}
}
}
},
"400": {
"description": "1: User not found."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"500": {
"description": "0: An unknown error occured."
},
"503": {
"description": "3: This feature is currently disabled. Please try again later."
}
},
"deprecated": true,
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"description": "Replaced by users.roblox.com/v1/description",
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_post_v1_description"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://users.roblox.com/v1/description",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_post_v1_description"
}
]
}
},
"/v1/description#users.roblox.com": {
"get": {
"tags": ["Accounts", "User profiles"],
"summary": "Get the user's description",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.DescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.DescriptionResponse"
}
}
}
},
"400": {
"description": "1: User not found."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_description"
}
},
"post": {
"tags": ["Accounts", "User profiles"],
"summary": "Update the user's description",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.DescriptionRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.DescriptionRequest"
}
}
},
"description": "The Roblox.Users.Api.DescriptionRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.DescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.DescriptionResponse"
}
}
}
},
"400": {
"description": "1: User not found."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: PIN is locked."
},
"500": {
"description": "0: An unknown error occured."
},
"503": {
"description": "3: This feature is currently disabled. Please try again later."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_post_v1_description"
}
}
},
"/v1/developer-products/icons": {
"get": {
"tags": ["Developer products", "Thumbnails"],
"summary": "Thumbnails developer product icons.",
"parameters": [
{
"in": "query",
"name": "developerProductIds",
"description": "The developer product ids.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": ["150x150", "420x420"],
"default": "150x150"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#thumbnails_get_v1_developer_products_icons"
}
}
},
"/v1/developer-products/{developerProductId}/description/language-codes/{languageCode}": {
"patch": {
"tags": ["Developer products", "Localization"],
"summary": "Update localized description of a developer product",
"parameters": [
{
"in": "path",
"name": "developerProductId",
"description": "The developer product id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the description to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductDescriptionRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductDescriptionRequest"
}
}
},
"description": "The request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductDescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductDescriptionResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game.\r\n70: Invalid developer product id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#gameinternationalization_patch_v1_developer_products__developerProductId__description_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/developer-products/{developerProductId}/description/language-codes/{languageCode}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/developer-products#patch_legacy_game_internationalization_v1_developer_products__developerProductId__description_language_codes__languageCode_"
}
]
}
},
"/v1/developer-products/{developerProductId}/icons": {
"get": {
"tags": ["Developer products", "Localization"],
"summary": "Get all icons for a developer product",
"parameters": [
{
"in": "path",
"name": "developerProductId",
"description": "The id of the developer product",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "width",
"description": "The width of the icon to request",
"schema": {
"type": "integer",
"format": "int32",
"default": 150
}
},
{
"in": "query",
"name": "height",
"description": "The height of the icon to request",
"schema": {
"type": "integer",
"format": "int32",
"default": 150
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetDeveloperProductIconResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetDeveloperProductIconResponse_"
}
}
}
},
"400": {
"description": "52: Image dimensions are invalid\r\n70: Invalid developer product id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#gameinternationalization_get_v1_developer_products__developerProductId__icons"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/developer-products/{developerProductId}/icons",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/developer-products#get_legacy_game_internationalization_v1_developer_products__developerProductId__icons"
}
]
}
},
"/v1/developer-products/{developerProductId}/icons/language-codes/{languageCode}": {
"delete": {
"tags": ["Developer products", "Localization"],
"summary": "Delete a localized icon from a developer product",
"parameters": [
{
"in": "path",
"name": "developerProductId",
"description": "The id of the developer product",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the localized icon to delete",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "22: Invalid language code\r\n23: You can't delete translations for source language\r\n53: Language is not supported for the game.\r\n70: Invalid developer product id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#gameinternationalization_delete_v1_developer_products__developerProductId__icons_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/developer-products/{developerProductId}/icons/language-codes/{languageCode}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/developer-products#delete_legacy_game_internationalization_v1_developer_products__developerProductId__icons_language_codes__languageCode_"
}
]
},
"post": {
"tags": ["Developer products", "Localization"],
"summary": "Update a developer product's icon",
"parameters": [
{
"in": "path",
"name": "developerProductId",
"description": "The id of the developer product",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of this icon to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/postV1Badges_badgeid_iconsLanguageCodes_languagecode_"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "22: Invalid language code\r\n26: You can't update translations for source language\r\n45: File uploaded does not match known image format\r\n46: File not present in request\r\n53: Language is not supported for the game.\r\n70: Invalid developer product id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"429": {
"description": "24: Too many attempts.Please try again later."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#gameinternationalization_post_v1_developer_products__developerProductId__icons_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/developer-products/{developerProductId}/icons/language-codes/{languageCode}",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/developer-products#post_legacy_game_internationalization_v1_developer_products__developerProductId__icons_language_codes__languageCode_"
}
]
}
},
"/v1/developer-products/{developerProductId}/name-description": {
"get": {
"tags": ["Developer products", "Localization"],
"summary": "Get all names and descriptions of a developer product",
"parameters": [
{
"in": "path",
"name": "developerProductId",
"description": "The developer product Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.NameDescription_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.NameDescription_"
}
}
}
},
"400": {
"description": "70: Invalid developer product id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#gameinternationalization_get_v1_developer_products__developerProductId__name_description"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/developer-products/{developerProductId}/name-description",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/developer-products#get_legacy_game_internationalization_v1_developer_products__developerProductId__name_description"
}
]
}
},
"/v1/developer-products/{developerProductId}/name-description/language-codes/{languageCode}": {
"delete": {
"tags": ["Developer products", "Localization"],
"summary": "Delete localized name and description of a developer product",
"parameters": [
{
"in": "path",
"name": "developerProductId",
"description": "The developer product id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the name and description to delete",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "22: Invalid language code\r\n23: You can't delete translations for source language\r\n53: Language is not supported for the game.\r\n70: Invalid developer product id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#gameinternationalization_delete_v1_developer_products__developerProductId__name_description_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/developer-products/{developerProductId}/name-description/language-codes/{languageCode}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/developer-products#delete_legacy_game_internationalization_v1_developer_products__developerProductId__name_description_language_codes__languageCode_"
}
]
},
"patch": {
"tags": ["Developer products", "Localization"],
"summary": "Update localized name and description of a developer product",
"parameters": [
{
"in": "path",
"name": "developerProductId",
"description": "The developer product id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the name and description to Update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductNameDescriptionRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductNameDescriptionRequest"
}
}
},
"description": "The request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductNameDescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductNameDescriptionResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game.\r\n70: Invalid developer product id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#gameinternationalization_patch_v1_developer_products__developerProductId__name_description_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/developer-products/{developerProductId}/name-description/language-codes/{languageCode}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/developer-products#patch_legacy_game_internationalization_v1_developer_products__developerProductId__name_description_language_codes__languageCode_"
}
]
}
},
"/v1/developer-products/{developerProductId}/name/language-codes/{languageCode}": {
"patch": {
"tags": ["Developer products", "Localization"],
"summary": "Update localized name of a developer product",
"parameters": [
{
"in": "path",
"name": "developerProductId",
"description": "The developer product id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the name to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductNameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductNameRequest"
}
}
},
"description": "The request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductNameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateDeveloperProductNameResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game.\r\n70: Invalid developer product id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#gameinternationalization_patch_v1_developer_products__developerProductId__name_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/developer-products/{developerProductId}/name/language-codes/{languageCode}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/developer-products#patch_legacy_game_internationalization_v1_developer_products__developerProductId__name_language_codes__languageCode_"
}
]
}
},
"/v1/display-names/validate": {
"get": {
"tags": ["Users"],
"summary": "Validate a display name for a new user.",
"parameters": [
{
"in": "query",
"name": "displayName",
"description": "The display name.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "birthdate",
"description": "The new user's birthdate",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: Display name is too short\r\n2: Display name is too long\r\n3: Display name contains invalid characters\r\n4: Display name has been moderated\r\n6: Request must contain a birthdate\r\n8: Display name has too many combinations of character sets"
},
"429": {
"description": "5: Display name updates for this user have been throttled"
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/users#users_get_v1_display_names_validate"
}
}
},
"/v1/email/verify": {
"post": {
"tags": ["Accounts"],
"summary": "Verify the user's email address from token",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.VerifyEmailRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.VerifyEmailRequest"
}
}
},
"description": "Roblox.AccountInformation.Api.Models.VerifyEmailRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.VerifyEmailResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.VerifyEmailResponse"
}
}
}
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_post_v1_email_verify"
}
}
},
"/v1/external/access": {
"post": {
"tags": ["Accounts"],
"summary": "Signs a user up for Roblox and links the account to the authenticated external provider ID.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalAccessRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalAccessRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.ExternalIdentityGateway.ExternalIdentityAccessResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_external_access"
}
}
},
"/v1/external/login": {
"post": {
"tags": ["Accounts"],
"summary": "Logs in a user to Roblox based on the user's authenticated external provider session",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalLoginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalLoginRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.ExternalIdentityGateway.ExternalLoginResponse"
}
}
}
},
"400": {
"description": "30: Platform is not supported for SSO login."
},
"401": {
"description": "31: No linked account found for SSO login."
},
"403": {
"description": "0: Token Validation Failed\r\n44: Login is unavailable in your country."
},
"500": {
"description": "0: An unexpected error occurred."
},
"501": {
"description": "0: An unexpected error occurred."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_external_login"
}
}
},
"/v1/external/loginAndLink": {
"post": {
"tags": ["Accounts"],
"summary": "Deprecated endpoint\nLogins in a user to Roblox, then links the Roblox account to the external provider ID",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalLoginAndLinkRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalLoginAndLinkRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
}
}
},
"403": {
"description": "0: Token Validation Failed\r\n44: Login is unavailable in your country."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_external_loginAndLink"
}
}
},
"/v1/external/signup": {
"post": {
"tags": ["Accounts"],
"summary": "Signs a user up for Roblox and links the account to the authenticated external provider ID",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalSignupRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalSignupRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK"
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_external_signup"
}
}
},
"/v1/external/unlink": {
"post": {
"tags": ["Accounts"],
"summary": "Unlink the logged in Roblox account from the current external provider ID",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalUnlinkRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ExternalUnlinkRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK"
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_external_unlink"
}
}
},
"/v1/external/{identityProviderId}/sso/native/nonce": {
"post": {
"tags": ["Accounts"],
"summary": "Reserves a nonce for a native SSO sign-in attempt.",
"description": "The web flow gets its nonce from M:Roblox.Authentication.Api.Controllers.V1.ExternalIdentitiesGatewayController.OAuthInit(System.Int64,System.String,System.Threading.CancellationToken), which native clients never call\nbecause they have no authorization redirect. They call this instead, pass the nonce to the\nprovider SDK, and post the resulting id_token to /access.\n \nThe client must pass this value to the SDK verbatim. Both providers treat the nonce as an\nopaque string and echo it into the id_token unchanged, and redemption looks the value up as\nissued. The SHA256(nonce) convention seen in Apple examples belongs to Firebase, which hashes\non its own side before comparing; hashing here would make the lookup miss.",
"parameters": [
{
"in": "path",
"name": "identityProviderId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.ExternalIdentityGateway.ExternalIdentityNonceResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_external__identityProviderId__sso_native_nonce"
}
}
},
"/v1/external/{identityProviderId}/sso/oauth/callback": {
"get": {
"tags": ["Accounts"],
"summary": "OAuth callback for identity providers that return the authorization code on a GET redirect (Okta, Google).",
"parameters": [
{
"in": "path",
"name": "identityProviderId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "code",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "state",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"302": {
"description": "Found"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_external__identityProviderId__sso_oauth_callback"
}
},
"post": {
"tags": ["Accounts"],
"summary": "OAuth callback for identity providers that POST the authorization code as form fields (Apple form_post).\nApple's first-auth `user` JSON is parsed and carried to identity storage; the form\n`id_token` is ignored. Web login exchanges code via PKCE and does\nnot treat a form id_token as proof.",
"parameters": [
{
"in": "path",
"name": "identityProviderId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"302": {
"description": "Found"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_external__identityProviderId__sso_oauth_callback"
}
}
},
"/v1/external/{identityProviderId}/sso/oauth/init": {
"get": {
"tags": ["Accounts"],
"summary": "Signs a user up for Roblox and links the account to the authenticated external provider ID via OAuth.",
"description": "Stored with the PKCE secrets rather than accepted at the callback, where it would let anyone turn a\nplain web login into a redirect carrying a live session.",
"parameters": [
{
"in": "path",
"name": "identityProviderId",
"description": "The identity provider to authenticate against.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "postAuthenticationIntentId",
"description": "Which post-authentication intent to carry out at the end of the handshake. Optional, and omitting it\nselects the provider's web redirect.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"302": {
"description": "Found"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_external__identityProviderId__sso_oauth_init"
}
}
},
"/v1/external/{identityProviderId}/sso/saml/assertion-consumer-service": {
"post": {
"tags": ["Accounts"],
"summary": "SAML Assertion Consumer Service endpoint that external identity provider calls post user authentication.",
"parameters": [
{
"in": "path",
"name": "identityProviderId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"SAMLResponse": {
"type": "string"
},
"RelayState": {
"type": "string"
}
}
}
}
}
},
"responses": {
"302": {
"description": "Found"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_external__identityProviderId__sso_saml_assertion_consumer_service"
}
}
},
"/v1/favorites/assets/{assetId}/count": {
"get": {
"tags": ["Assets", "Avatars", "Interactions"],
"summary": "Gets the favorite count for the given asset Id.",
"parameters": [
{
"in": "path",
"name": "assetId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"format": "int64",
"type": "integer"
}
},
"text/json": {
"schema": {
"format": "int64",
"type": "integer"
}
}
}
},
"400": {
"description": "2: Invalid asset Id."
}
},
"servers": [
{
"url": "https://catalog.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_favorites_assets__assetId__count"
}
}
},
"/v1/favorites/bundles/{bundleId}/count": {
"get": {
"tags": ["Assets", "Avatars", "Interactions"],
"summary": "Gets the favorite count for the given bundle Id.",
"parameters": [
{
"in": "path",
"name": "bundleId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"format": "int64",
"type": "integer"
}
},
"text/json": {
"schema": {
"format": "int64",
"type": "integer"
}
}
}
},
"400": {
"description": "2: Invalid bundle Id."
}
},
"servers": [
{
"url": "https://catalog.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_favorites_bundles__bundleId__count"
}
}
},
"/v1/favorites/users/{userId}/favorites/{assetTypeId}/assets": {
"get": {
"tags": ["Assets", "Avatars", "Interactions", "Users"],
"summary": "Lists the marketplace assets favorited by a given user with the given assetTypeId.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "assetTypeId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 18, 24, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Desc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Catalog.Api.CatalogSearchDetailedResponseItem_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Catalog.Api.CatalogSearchDetailedResponseItem_"
}
}
}
},
"400": {
"description": "1: Invalid user Id.\r\n8: Ascending order is not allowed.\r\n11: Invalid asset type id."
},
"500": {
"description": "99: Internal server error."
}
},
"servers": [
{
"url": "https://catalog.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_favorites_users__userId__favorites__assetTypeId__assets"
}
}
},
"/v1/game-icon/games/{gameId}": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Get all icons for a game",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "width",
"description": "The width of the icon to request",
"schema": {
"type": "integer",
"format": "int32",
"default": 512
}
},
{
"in": "query",
"name": "height",
"description": "The height of the icon to request",
"schema": {
"type": "integer",
"format": "int32",
"default": 512
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetGameIconResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetGameIconResponse_"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n52: Image dimensions are invalid"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_game_icon_games__gameId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-icon/games/{gameId}",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_game_internationalization_v1_game_icon_games__gameId_"
}
]
}
},
"/v1/game-icon/games/{gameId}/language-codes/{languageCode}": {
"delete": {
"tags": ["Localization", "Universes"],
"summary": "Delete a localized icon from a game",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the localized icon to delete",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code\r\n23: You can't delete translations for source language\r\n53: Language is not supported for the game."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_delete_v1_game_icon_games__gameId__language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-icon/games/{gameId}/language-codes/{languageCode}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#delete_legacy_game_internationalization_v1_game_icon_games__gameId__language_codes__languageCode_"
}
]
},
"post": {
"tags": ["Localization", "Universes"],
"summary": "Update a game's icon",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of this icon to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/postV1Badges_badgeid_iconsLanguageCodes_languagecode_"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n45: File uploaded does not match known image format\r\n46: File not present in request\r\n53: Language is not supported for the game."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"429": {
"description": "24: Too many attempts.Please try again later."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_post_v1_game_icon_games__gameId__language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-icon/games/{gameId}/language-codes/{languageCode}",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_game_icon_games__gameId__language_codes__languageCode_"
}
]
}
},
"/v1/game-localization-roles/games/{gameId}": {
"patch": {
"tags": ["Localization", "Universes"],
"summary": "Assigns or revokes a role",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TranslationRoles.Api.UpdateRoleRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TranslationRoles.Api.UpdateRoleRequest"
}
}
},
"description": "The request body"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TranslationRolesApi.Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TranslationRolesApi.Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "3: Invalid game id\r\n4: Invalid assignee id\r\n6: Request body can't be null\r\n7: The role you are assigning has reached max limit"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n1: You must be authorized to use this endpoint"
},
"429": {
"description": "5: Too many attempts. Please try again later."
},
"503": {
"description": "2: Feature is disabled"
}
},
"servers": [
{
"url": "https://translationroles.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#translationroles_patch_v1_game_localization_roles_games__gameId_"
}
}
},
"/v1/game-localization-roles/games/{gameId}/current-user/roles": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Retrieves the list of roles granted to current logged-in user",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TranslationRolesApi.Roblox.Web.WebAPI.Models.ApiArrayResponse_System.String_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/TranslationRolesApi.Roblox.Web.WebAPI.Models.ApiArrayResponse_System.String_"
}
}
}
},
"400": {
"description": "3: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"503": {
"description": "2: Feature is disabled"
}
},
"servers": [
{
"url": "https://translationroles.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#translationroles_get_v1_game_localization_roles_games__gameId__current_user_roles"
}
}
},
"/v1/game-localization-roles/games/{gameId}/roles/{role}/assignees": {
"get": {
"tags": ["Localization", "Universes", "Users"],
"summary": "Gets list of users assigned a specific role in a game.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "role",
"description": "The Roblox.GameLocalization.Client.GameLocalizationRoles.GameLocalizationRoleType",
"required": true,
"schema": {
"type": "string",
"enum": ["translator"]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.TranslationRoles.Api.Assignee_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.TranslationRoles.Api.Assignee_"
}
}
}
},
"400": {
"description": "3: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "1: You must be authorized to use this endpoint"
},
"503": {
"description": "2: Feature is disabled"
}
},
"servers": [
{
"url": "https://translationroles.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#translationroles_get_v1_game_localization_roles_games__gameId__roles__role__assignees"
}
}
},
"/v1/game-localization-roles/roles/{role}/current-user": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Gets the list of games and associated role assignment info for the requested user and role.",
"parameters": [
{
"in": "path",
"name": "role",
"description": "The Roblox.GameLocalization.Client.GameLocalizationRoles.GameLocalizationRoleType",
"required": true,
"schema": {
"type": "string",
"enum": ["translator"]
}
},
{
"in": "query",
"name": "exclusiveStartKey",
"description": "Part of pagination. Last primary key of returned items in previous operation.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "pageSize",
"description": "Part of pagination. Maximum number of items that might be returned in the page.",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "groupId",
"description": "Optional seleted groupId of resources requested for the user and role.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TranslationRoles.Api.GetGameLocalizationRoleAssignmentsForUserResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TranslationRoles.Api.GetGameLocalizationRoleAssignmentsForUserResponse"
}
}
}
},
"400": {
"description": "10: Invalid page size\r\n11: Maximum page size exceeded\r\n12: Invalid exclusive start key"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"500": {
"description": "0: An unknown error occurred"
},
"503": {
"description": "2: Feature is disabled"
}
},
"servers": [
{
"url": "https://translationroles.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#translationroles_get_v1_game_localization_roles_roles__role__current_user"
}
}
},
"/v1/game-localization-status/translation-counts-for-language-or-locale": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Gets the language translation counts for the specified table.\r\nThe languages to retrieve must be provided.",
"parameters": [
{
"in": "query",
"name": "gameIds",
"description": "List of game ids to retrieve translation counts for.",
"required": true,
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "languageOrLocaleCode",
"description": "The code for the language or locale.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "languageOrLocaleType",
"description": "Indicates whether the languageOrLocaleCode represents a language or locale.",
"required": true,
"schema": {
"type": "string",
"enum": ["Language", "Locale"]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetTranslationCountsForLanguageOrLocaleResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetTranslationCountsForLanguageOrLocaleResponse"
}
}
}
},
"400": {
"description": "66: Games can't be null or empty\r\n67: Maximum games exceeded. Please keep the number of games per request below the maximum.\r\n68: LanguageOrLocaleCode is null or whitespace"
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_game_localization_status_translation_counts_for_language_or_locale"
}
}
},
"/v1/game-localization-status/{gameId}/translation-counts": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Gets the language translation counts for all languages of a game",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "GameID of the game to get translation counts for",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetTranslationCountsForGameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetTranslationCountsForGameResponse"
}
}
}
},
"400": {
"description": "4: Table does not exist.\r\n14: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"500": {
"description": "0: An unknown error occurred."
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_game_localization_status__gameId__translation_counts"
}
}
},
"/v1/game-passes": {
"get": {
"tags": ["Game passes", "Thumbnails"],
"summary": "Thumbnails game pass icons.",
"parameters": [
{
"in": "query",
"name": "gamePassIds",
"description": "The game pass ids.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": ["150x150"],
"default": "150x150"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#thumbnails_get_v1_game_passes"
}
}
},
"/v1/game-passes/{gamePassId}/description/language-codes/{languageCode}": {
"patch": {
"tags": ["Game passes", "Localization"],
"summary": "Update localized description of a game pass",
"parameters": [
{
"in": "path",
"name": "gamePassId",
"description": "The game pass id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of description to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassDescriptionRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassDescriptionRequest"
}
}
},
"description": "The request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassDescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassDescriptionResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game.\r\n61: Invalid game pass id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#gameinternationalization_patch_v1_game_passes__gamePassId__description_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-passes/{gamePassId}/description/language-codes/{languageCode}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/game-passes#patch_legacy_game_internationalization_v1_game_passes__gamePassId__description_language_codes__languageCode_"
}
]
}
},
"/v1/game-passes/{gamePassId}/icons": {
"get": {
"tags": ["Game passes", "Localization"],
"summary": "Get all icons for a game pass",
"parameters": [
{
"in": "path",
"name": "gamePassId",
"description": "The game pass id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "width",
"description": "The width of the icon to request",
"schema": {
"type": "integer",
"format": "int32",
"default": 150
}
},
{
"in": "query",
"name": "height",
"description": "The height of the icon to request",
"schema": {
"type": "integer",
"format": "int32",
"default": 150
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetGamePassIconResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetGamePassIconResponse_"
}
}
}
},
"400": {
"description": "52: Image dimensions are invalid\r\n61: Invalid game pass id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#gameinternationalization_get_v1_game_passes__gamePassId__icons"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-passes/{gamePassId}/icons",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/game-passes#get_legacy_game_internationalization_v1_game_passes__gamePassId__icons"
}
]
}
},
"/v1/game-passes/{gamePassId}/icons/language-codes/{languageCode}": {
"delete": {
"tags": ["Game passes", "Localization"],
"summary": "Delete a localized icon from a game pass",
"parameters": [
{
"in": "path",
"name": "gamePassId",
"description": "The game pass id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the localized icon to delete",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "22: Invalid language code\r\n23: You can't delete translations for source language\r\n53: Language is not supported for the game.\r\n61: Invalid game pass id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#gameinternationalization_delete_v1_game_passes__gamePassId__icons_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-passes/{gamePassId}/icons/language-codes/{languageCode}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/game-passes#delete_legacy_game_internationalization_v1_game_passes__gamePassId__icons_language_codes__languageCode_"
}
]
},
"post": {
"tags": ["Game passes", "Localization"],
"summary": "Update a game pass's icon",
"parameters": [
{
"in": "path",
"name": "gamePassId",
"description": "The game pass id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of this icon to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/postV1Badges_badgeid_iconsLanguageCodes_languagecode_"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "22: Invalid language code\r\n26: You can't update translations for source language\r\n45: File uploaded does not match known image format\r\n46: File not present in request\r\n53: Language is not supported for the game.\r\n61: Invalid game pass id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"429": {
"description": "24: Too many attempts.Please try again later."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#gameinternationalization_post_v1_game_passes__gamePassId__icons_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-passes/{gamePassId}/icons/language-codes/{languageCode}",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/game-passes#post_legacy_game_internationalization_v1_game_passes__gamePassId__icons_language_codes__languageCode_"
}
]
}
},
"/v1/game-passes/{gamePassId}/name-description": {
"get": {
"tags": ["Game passes", "Localization"],
"summary": "Get all names and descriptions of a game pass",
"parameters": [
{
"in": "path",
"name": "gamePassId",
"description": "The game pass Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.NameDescription_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.NameDescription_"
}
}
}
},
"400": {
"description": "61: Invalid game pass id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#gameinternationalization_get_v1_game_passes__gamePassId__name_description"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-passes/{gamePassId}/name-description",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/game-passes#get_legacy_game_internationalization_v1_game_passes__gamePassId__name_description"
}
]
}
},
"/v1/game-passes/{gamePassId}/name-description/language-codes/{languageCode}": {
"delete": {
"tags": ["Game passes", "Localization"],
"summary": "Delete localized name and description of a game pass",
"parameters": [
{
"in": "path",
"name": "gamePassId",
"description": "The game pass id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the name and description to delete",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "22: Invalid language code\r\n23: You can't delete translations for source language\r\n53: Language is not supported for the game.\r\n61: Invalid game pass id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#gameinternationalization_delete_v1_game_passes__gamePassId__name_description_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-passes/{gamePassId}/name-description/language-codes/{languageCode}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/game-passes#delete_legacy_game_internationalization_v1_game_passes__gamePassId__name_description_language_codes__languageCode_"
}
]
},
"patch": {
"tags": ["Game passes", "Localization"],
"summary": "Update localized name and description of a game pass",
"parameters": [
{
"in": "path",
"name": "gamePassId",
"description": "The game pass id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the name/description to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassNameDescriptionRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassNameDescriptionRequest"
}
}
},
"description": "The request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassNameDescriptionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassNameDescriptionResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game.\r\n61: Invalid game pass id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#gameinternationalization_patch_v1_game_passes__gamePassId__name_description_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-passes/{gamePassId}/name-description/language-codes/{languageCode}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/game-passes#patch_legacy_game_internationalization_v1_game_passes__gamePassId__name_description_language_codes__languageCode_"
}
]
}
},
"/v1/game-passes/{gamePassId}/name/language-codes/{languageCode}": {
"patch": {
"tags": ["Game passes", "Localization"],
"summary": "Update localized name of a game pass",
"parameters": [
{
"in": "path",
"name": "gamePassId",
"description": "The game pass id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code of the name to update",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassNameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassNameRequest"
}
}
},
"description": "The request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassNameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateGamePassNameResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game.\r\n61: Invalid game pass id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#gameinternationalization_patch_v1_game_passes__gamePassId__name_language_codes__languageCode_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-passes/{gamePassId}/name/language-codes/{languageCode}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/game-passes#patch_legacy_game_internationalization_v1_game_passes__gamePassId__name_language_codes__languageCode_"
}
]
}
},
"/v1/game-start-info": {
"get": {
"tags": ["Avatars", "Universes"],
"summary": "The server will call this on game server start to request general information about the universe\r\nThis is version 1.1, which returns an entry from the UniverseAvatarType enum.\r\nDuring mixed mode this may return unreliable results.",
"parameters": [
{
"in": "query",
"name": "universeId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.GameStartInfoResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.GameStartInfoResponse"
}
}
}
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v1_game_start_info"
}
}
},
"/v1/game-thumbnails/games/{gameId}/images": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Get the localized image ids in all languages for a game.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game identifier.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "width",
"description": "The width.",
"schema": {
"type": "integer",
"format": "int32",
"default": 768
}
},
{
"in": "query",
"name": "height",
"description": "The height.",
"schema": {
"type": "integer",
"format": "int32",
"default": 432
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetGameThumbnailsResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetGameThumbnailsResponse_"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n52: Image dimensions are invalid"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_game_thumbnails_games__gameId__images"
}
}
},
"/v1/game-thumbnails/games/{gameId}/language-codes/{languageCode}/alt-text": {
"post": {
"tags": ["Localization", "Thumbnails", "Universes"],
"summary": "Updates the game thumbnail alt text.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game identifier.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateThumbnailAltTextRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateThumbnailAltTextRequest"
}
}
},
"description": "The game thumbnail alt text update request.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "string"
}
},
"text/json": {
"schema": {
"type": "string"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n45: File uploaded does not match known image format\r\n53: Language is not supported for the game."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"429": {
"description": "24: Too many attempts.Please try again later."
},
"500": {
"description": "0: An unknown error occurred.\r\n88: Failed to filter text"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__alt_text"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-thumbnails/games/{gameId}/language-codes/{languageCode}/alt-text",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__alt_text"
}
]
}
},
"/v1/game-thumbnails/games/{gameId}/language-codes/{languageCode}/image": {
"post": {
"tags": ["Localization", "Thumbnails", "Universes"],
"summary": "Uploads the game thumbnail.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game identifier.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/postV1Badges_badgeid_iconsLanguageCodes_languagecode_"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.UploadImageForGameThumbnailResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.UploadImageForGameThumbnailResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"429": {
"description": "24: Too many attempts.Please try again later."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__image"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-thumbnails/games/{gameId}/language-codes/{languageCode}/image",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__image"
}
]
}
},
"/v1/game-thumbnails/games/{gameId}/language-codes/{languageCode}/images/order": {
"post": {
"tags": ["Localization", "Thumbnails", "Universes"],
"summary": "Orders the specified image Ids for the game thumbnails.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game identifier.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.SortImageIdsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.SortImageIdsRequest"
}
}
},
"description": "The request.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__images_order"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-thumbnails/games/{gameId}/language-codes/{languageCode}/images/order",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images_order"
}
]
}
},
"/v1/game-thumbnails/games/{gameId}/language-codes/{languageCode}/images/{imageId}": {
"delete": {
"tags": ["Localization", "Thumbnails", "Universes"],
"summary": "Deletes the game thumbnail.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game identifier.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "imageId",
"description": "The image identifier.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code\r\n23: You can't delete translations for source language\r\n53: Language is not supported for the game."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_delete_v1_game_thumbnails_games__gameId__language_codes__languageCode__images__imageId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/game-thumbnails/games/{gameId}/language-codes/{languageCode}/images/{imageId}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#delete_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images__imageId_"
}
]
}
},
"/v1/games": {
"get": {
"tags": ["Universes"],
"summary": "Gets a list of games' detail",
"parameters": [
{
"in": "query",
"name": "universeIds",
"description": "A list of universe Ids. Cannot exceed a maximum of 50 IDs.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "fields",
"description": "Optional comma-separated list of field names to include in the response. When omitted, all fields are returned.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Games.Api.Models.Response.GameDetailResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Games.Api.Models.Response.GameDetailResponse_"
}
}
}
},
"400": {
"description": "8: The universe IDs specified are invalid.\r\n9: Too many universe IDs were requested."
},
"429": {
"description": "4: Too many requests have been made."
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#games_get_v1_games"
}
}
},
"/v1/games/games-product-info": {
"get": {
"tags": ["Universes"],
"summary": "Gets a list of games' product info, used to purchase a game",
"parameters": [
{
"in": "query",
"name": "universeIds",
"description": "A list of universe Ids. Cannot exceed a maximum of 100 IDs.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Games.Api.Models.Response.GameProductResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Games.Api.Models.Response.GameProductResponse_"
}
}
}
},
"400": {
"description": "8: The universe IDs specified are invalid.\r\n9: Too many universe IDs were requested."
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#games_get_v1_games_games_product_info"
}
}
},
"/v1/games/icons": {
"get": {
"tags": ["Thumbnails", "Universes"],
"summary": "Fetches game icon URLs for a list of universes' root places. Ids that do not correspond to a valid universe will be filtered out.\nThe ordering of the results is not guaranteed to be the same as the inputs. In order to correlated inputs with outputs please\nuse the 'targetId' of the objects in the result array.",
"parameters": [
{
"in": "query",
"name": "universeIds",
"description": "The universe ids.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "returnPolicy",
"description": "Optional policy to use in selecting game icon to return (default = PlaceHolder).",
"schema": {
"type": "string",
"enum": [
"PlaceHolder",
"ForcePlaceHolder",
"AutoGenerated",
"ForceAutoGenerated"
],
"default": "PlaceHolder"
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": [
"50x50",
"128x128",
"150x150",
"256x256",
"420x420",
"512x512"
],
"default": "50x50"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Jpeg", "Webp", "Ico", "Icns"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n8: The requested return policy is invalid (must be PlaceHolder, AutoGenerated or ForceAutoGenerated).\r\n10: Circular thumbnail requests are not allowed"
},
"403": {
"description": "9: User not authorized to use AutoGenerated or ForceAutoGenerated return policies."
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#thumbnails_get_v1_games_icons"
}
}
},
"/v1/games/multiget-place-details": {
"get": {
"tags": ["Places", "Universes"],
"summary": "Get place details",
"parameters": [
{
"in": "query",
"name": "placeIds",
"description": "List of placeId to uniquely Identify a place",
"required": true,
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.PlaceDetails"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.PlaceDetails"
}
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#games_get_v1_games_multiget_place_details"
}
}
},
"/v1/games/multiget-playability-status": {
"get": {
"tags": ["Accounts", "Universes"],
"summary": "Gets a list of universe playability statuses for the authenticated user",
"parameters": [
{
"in": "query",
"name": "universeIds",
"description": "A list of universe Ids. Cannot exceed a maximum of 50 IDs.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.PlayabilityStatusResponse"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.PlayabilityStatusResponse"
}
}
}
}
},
"400": {
"description": "8: The universe IDs specified are invalid.\r\n9: Too many universe IDs were requested."
},
"429": {
"description": "4: Too many requests have been made."
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#games_get_v1_games_multiget_playability_status"
}
}
},
"/v1/games/multiget/thumbnails": {
"get": {
"tags": ["Thumbnails", "Universes"],
"summary": "Fetch game thumbnail URLs for a list of universe IDs.",
"parameters": [
{
"in": "query",
"name": "universeIds",
"description": "comma-delimited list of universe IDs",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "countPerUniverse",
"description": "max number of thumbnails to return per universe",
"schema": {
"type": "integer",
"format": "int32",
"default": 1
}
},
{
"in": "query",
"name": "defaults",
"description": "true if defaults (if any) should be returned if no media exists",
"schema": {
"type": "boolean",
"default": true
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": ["768x432", "576x324", "480x270", "384x216", "256x144"],
"default": "768x432"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Jpeg", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "0: Unknown error\r\n1: There are too many requested Ids.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n5: The requested universe does not exist.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#thumbnails_get_v1_games_multiget_thumbnails"
}
}
},
"/v1/games/recommendations/game/{universeId}": {
"get": {
"tags": ["Universes"],
"summary": "Get games recommendations based on a given universe",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe to base recommendations on",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "PaginationKey",
"description": "The key of a page, which includes the start row index and all other necessary information to query the data.\r\nThis parameter is usually not needed for the first page.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "MaxRows",
"description": "The requested number of rows.",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "IsTruncatedResultsEnabled",
"description": "Truncated Results",
"required": true,
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameRecommendationsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameRecommendationsResponse"
}
}
}
},
"400": {
"description": "1: The pagination key is invalid."
},
"404": {
"description": "2: The requested universe does not exist."
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#games_get_v1_games_recommendations_game__universeId_"
}
}
},
"/v1/games/votes": {
"get": {
"tags": ["Interactions", "Universes"],
"operationId": "Voting_MultiGetGameVoteStatus",
"parameters": [
{
"name": "universeIds",
"in": "query",
"schema": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/GameVoteResponseApiArrayResponse"
}
}
}
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#Voting_MultiGetGameVoteStatus"
}
}
},
"/v1/games/{placeId}/private-servers": {
"get": {
"tags": ["Private servers"],
"operationId": "PrivateServers_GetPrivateServerList",
"parameters": [
{
"name": "placeId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "exclusiveStartKeyCursor",
"in": "query",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/StringExclusiveStartKeyCursor"
}
]
}
},
{
"name": "excludeFriendServers",
"in": "query",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetPrivateServerListResponse"
}
}
}
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/private-servers#PrivateServers_GetPrivateServerList"
}
}
},
"/v1/games/{universeId}/favorites": {
"get": {
"tags": ["Interactions", "Universes"],
"summary": "Returns if a game was marked as favorite for the authenticated user",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The Id of the universe.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameFavoriteResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameFavoriteResponse"
}
}
}
},
"400": {
"description": "3: The universe's root place is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"404": {
"description": "2: The requested universe does not exist."
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#games_get_v1_games__universeId__favorites"
}
},
"post": {
"tags": ["Interactions", "Universes"],
"summary": "Favors (or unfavors) a game for the authenticated user",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The Id of the universe.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Request.GameFavoritesRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Request.GameFavoritesRequest"
}
}
},
"description": "Request data.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "3: The universe's root place is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n11: You are not authorized to perform this action."
},
"404": {
"description": "2: The requested universe does not exist."
},
"429": {
"description": "4: Too many requests have been made."
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#games_post_v1_games__universeId__favorites"
}
}
},
"/v1/games/{universeId}/favorites/count": {
"get": {
"tags": ["Interactions", "Universes"],
"summary": "Get the favorites count of a specific game.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The Id of the universe.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameFavoritesCountResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameFavoritesCountResponse"
}
}
}
},
"400": {
"description": "3: The universe's root place is invalid."
},
"404": {
"description": "2: The requested universe does not exist."
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#games_get_v1_games__universeId__favorites_count"
}
}
},
"/v1/games/{universeId}/thumbnails": {
"get": {
"tags": ["Thumbnails", "Universes"],
"summary": "Fetches game thumbnail URLs for a list of universes' thumbnail ids. Ids that do not correspond to a valid thumbnail will be filtered out.",
"parameters": [
{
"in": "path",
"name": "universeId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "thumbnailIds",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": ["768x432", "576x324", "480x270", "384x216", "256x144"],
"default": "768x432"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Jpeg", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
},
"404": {
"description": "5: The requested universe does not exist."
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#thumbnails_get_v1_games__universeId__thumbnails"
}
}
},
"/v1/games/{universeId}/user-votes": {
"patch": {
"tags": ["Interactions", "Universes"],
"operationId": "Voting_VoteGame",
"parameters": [
{
"name": "universeId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UserGameVoteRequest"
}
]
}
},
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UserGameVoteRequest"
}
]
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UserGameVoteRequest"
}
]
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UserGameVoteRequest"
}
]
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/ApiEmptyResponseModel"
}
}
}
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#Voting_VoteGame"
}
}
},
"/v1/games/{universeId}/votes": {
"get": {
"tags": ["Interactions", "Universes"],
"operationId": "Voting_GetGameVoteStatus",
"parameters": [
{
"name": "universeId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/GameVoteResponse"
}
}
}
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#Voting_GetGameVoteStatus"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://games.roblox.com/v1/games/votes",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/interactions#Voting_MultiGetGameVoteStatus"
}
]
}
},
"/v1/games/{universeId}/votes/user": {
"get": {
"tags": ["Interactions", "Universes"],
"operationId": "Voting_GetGameVoteStatusForUser",
"parameters": [
{
"name": "universeId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"$ref": "#/components/schemas/UserGameVoteResponse"
}
}
}
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#Voting_GetGameVoteStatusForUser"
}
}
},
"/v1/gametemplates": {
"get": {
"tags": ["Universes"],
"summary": "Gets a page of templates that can be used to start off making games.",
"description": "Templates subject to change without notice.\r\nSort order of templates specified by Roblox.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.GameTemplateModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.GameTemplateModel_"
}
}
}
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_gametemplates"
}
}
},
"/v1/gender": {
"get": {
"tags": ["Accounts"],
"summary": "Get the user's gender",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.GenderResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.GenderResponse"
}
}
}
},
"400": {
"description": "1: User not found."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"deprecated": true,
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"description": "Replaced by users.roblox.com/v1/gender",
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_get_v1_gender"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://users.roblox.com/v1/gender",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_gender"
}
]
},
"post": {
"tags": ["Accounts"],
"summary": "Update the user's gender",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.GenderRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.GenderRequest"
}
}
},
"description": "The Roblox.AccountInformation.Api.Models.GenderRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: User not found.\r\n6: The gender provided is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"500": {
"description": "0: An unknown error occured."
}
},
"deprecated": true,
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"description": "Replaced by users.roblox.com/v1/gender",
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_post_v1_gender"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://users.roblox.com/v1/gender",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_post_v1_gender"
}
]
}
},
"/v1/gender#users.roblox.com": {
"get": {
"tags": ["Accounts"],
"summary": "Get the user's gender",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.GenderResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.GenderResponse"
}
}
}
},
"400": {
"description": "1: User not found."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_gender"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Update the user's gender",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.GenderRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.GenderRequest"
}
}
},
"description": "The Roblox.Users.Api.GenderRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: User not found.\r\n6: The gender provided is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: PIN is locked."
},
"500": {
"description": "0: An unknown error occured."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_post_v1_gender"
}
}
},
"/v1/groups/icons": {
"get": {
"tags": ["Groups", "Thumbnails"],
"summary": "Fetches thumbnail URLs for a list of groups. Ids that do not correspond to groups will be filtered out.",
"parameters": [
{
"in": "query",
"name": "groupIds",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": ["150x150", "420x420"],
"default": "150x150"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/groups#thumbnails_get_v1_groups_icons"
}
}
},
"/v1/groups/{groupId}/community-feature-freezes": {
"get": {
"tags": ["Groups"],
"summary": "Gets the freeze status of the community features for a group.",
"parameters": [
{
"in": "path",
"name": "groupId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Groups.Api.GetCommunityFeatureFreezesResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_get_v1_groups__groupId__community_feature_freezes"
}
}
},
"/v1/groups/{groupId}/community-tier/evaluate": {
"post": {
"tags": ["Groups"],
"parameters": [
{
"in": "path",
"name": "groupId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Groups.Client.TierEvaluationResultResponse"
}
}
}
},
"400": {
"description": "1: Group is invalid or does not exist."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n22: The feature is disabled.\r\n23: Insufficient permissions to complete the request.\r\n49: User is invalid or does not exist"
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_post_v1_groups__groupId__community_tier_evaluate"
}
}
},
"/v1/groups/{groupId}/features": {
"get": {
"tags": ["Groups"],
"summary": "Gets the freeze status of all features and the lock status for a group.",
"parameters": [
{
"in": "path",
"name": "groupId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Groups.Api.GetGroupFeaturesResponse"
}
}
}
},
"400": {
"description": "1: Group is invalid or does not exist."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "23: Insufficient permissions to complete the request.\r\n49: User is invalid or does not exist"
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_get_v1_groups__groupId__features"
}
},
"patch": {
"tags": ["Groups"],
"summary": "Sets the desired status of group features.\nCurrently only removes active freezes for features set to Roblox.Groups.Api.FeatureStatus.On.",
"parameters": [
{
"in": "path",
"name": "groupId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Groups.Api.SetFeaturesRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Groups.Api.SetFeaturesRequestModel"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Groups.Api.SetFeaturesResponseModel"
}
}
}
},
"400": {
"description": "1: Group is invalid or does not exist."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n23: Insufficient permissions to complete the request.\r\n49: User is invalid or does not exist"
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_patch_v1_groups__groupId__features"
}
}
},
"/v1/groups/{groupId}/payouts/latest": {
"get": {
"summary": "Gets the latest one-time payout for each requested user.",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "userIds",
"in": "query",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicAllOneTimePayoutsResponseModel"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
]
}
},
"/v1/groups/{groupId}/payouts/suggested": {
"get": {
"summary": "Gets suggested one-time payouts for eligible collaborators.",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicAllOneTimePayoutsResponseModel"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
]
}
},
"/v1/groups/{groupId}/payouts/universes": {
"get": {
"summary": "Gets payout-visible universes for a group.",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "limit",
"in": "query",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "cursor",
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicGroupUniversePayoutPageResponseModel"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
]
}
},
"/v1/groups/{groupId}/universes": {
"get": {
"tags": ["Groups", "Universes"],
"summary": "Gets a list of universes for the given group.",
"parameters": [
{
"in": "path",
"name": "groupId",
"description": "The group id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "isArchived",
"description": "Whether or not to return archived games.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "Sorted by universeId",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.Models.UniverseModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.Models.UniverseModel_"
}
}
}
},
"400": {
"description": "Invalid groupId."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/groups#develop_get_v1_groups__groupId__universes"
}
}
},
"/v1/identity-verification/login": {
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for login with identity verification",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.IdentityVerificationLoginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.IdentityVerificationLoginRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"403": {
"description": "0: Token Validation Failed\r\n1: Invalid login ticket.\r\n2: Invalid result token.\r\n3: Invalid user.\r\n4: Authentication failure.\r\n44: Login is unavailable in your country."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_identity_verification_login"
}
}
},
"/v1/identity/initialize-login": {
"post": {
"tags": ["Accounts"],
"summary": "Initiates identifier-first login flow by returning a list of login methods for user(s).",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.InitializeLoginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.InitializeLoginRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.InitializeLoginResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.InitializeLoginResponse"
}
}
}
},
"400": {
"description": "3: User identifier and type are required."
},
"403": {
"description": "0: Token Validation Failed\r\n2: Invalid user identifier.\r\n4: No login methods available. Please use account recovery."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "1: This feature is disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_identity_initialize_login"
}
}
},
"/v1/installer-cdns": {
"get": {
"tags": ["Metadata"],
"summary": "Get information about which CDNs to use for installation.",
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v1_installer_cdns"
}
}
},
"/v1/locales": {
"get": {
"tags": ["Localization"],
"summary": "Get list of Supported locales with user locus information.",
"parameters": [
{
"in": "query",
"name": "displayValueLocale",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Locale.Api.SupportedLocaleLocus_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Locale.Api.SupportedLocaleLocus_"
}
}
}
},
"403": {
"description": "Feature is turned off temporary"
},
"500": {
"description": "Internal server error"
}
},
"servers": [
{
"url": "https://locale.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#locale_get_v1_locales"
}
}
},
"/v1/locales/set-show-roblox-translations": {
"post": {
"tags": ["Localization"],
"summary": "Sets whether translations suggested by Roblox will be shown to the user.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SetShowRobloxTranslationsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SetShowRobloxTranslationsRequest"
}
}
},
"description": "Whether to show Roblox-suggested translations",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SuccessResponse"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized\r\n0: Authorization has been denied for this request."
},
"403": {
"description": "Feature is turned off temporary\r\n0: Token Validation Failed"
},
"500": {
"description": "Internal server error"
}
},
"servers": [
{
"url": "https://locale.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#locale_post_v1_locales_set_show_roblox_translations"
}
}
},
"/v1/locales/set-user-supported-locale": {
"post": {
"tags": ["Localization", "Metadata"],
"summary": "Sets user's supported locale.\r\nNull supported locale will clear out user's supported locale (set users' supported locale to null)",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SetSupportedLocaleForUserRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SetSupportedLocaleForUserRequest"
}
}
},
"description": "Supported locale code that needs to be set for user",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SuccessResponse"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized\r\n0: Authorization has been denied for this request."
},
"403": {
"description": "Feature is turned off temporary\r\n0: Token Validation Failed"
},
"500": {
"description": "Internal server error"
}
},
"servers": [
{
"url": "https://locale.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#locale_post_v1_locales_set_user_supported_locale"
}
}
},
"/v1/locales/supported-locales": {
"get": {
"tags": ["Localization", "Metadata"],
"summary": "Get list of supported locales sorted by the Native Name property.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SupportedLocalesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SupportedLocalesResponse"
}
}
}
},
"403": {
"description": "Feature is turned off temporary"
},
"500": {
"description": "Internal server error"
}
},
"servers": [
{
"url": "https://locale.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#locale_get_v1_locales_supported_locales"
}
}
},
"/v1/locales/supported-locales-for-creators": {
"get": {
"tags": ["Localization", "Metadata"],
"parameters": [
{
"in": "query",
"name": "displayValueLocale",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Locale.Api.SupportedLocaleLocus_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Locale.Api.SupportedLocaleLocus_"
}
}
}
}
},
"servers": [
{
"url": "https://locale.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#locale_get_v1_locales_supported_locales_for_creators"
}
}
},
"/v1/locales/user-locale": {
"get": {
"tags": ["Localization"],
"summary": "Gets user locale. If user is absent returns, locale from http request object.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.UserLocaleResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.UserLocaleResponse"
}
}
}
},
"500": {
"description": "Internal server error"
}
},
"servers": [
{
"url": "https://locale.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#locale_get_v1_locales_user_locale"
}
}
},
"/v1/locales/user-localization-locus-supported-locales": {
"get": {
"tags": ["Localization", "Metadata"],
"summary": "Gets each of a user's localization locus supported locales. A localization locus supported locale is a page (or group of pages) that\r\nhave been defined by the International team which need independent locale support.\r\nIf the user is null we will attempt to return the locales appropriate for the user's device language.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.UserLocalizationLocusLocalesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Locale.Api.UserLocalizationLocusLocalesResponse"
}
}
}
},
"500": {
"description": "Internal server error"
}
},
"servers": [
{
"url": "https://locale.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#locale_get_v1_locales_user_localization_locus_supported_locales"
}
}
},
"/v1/localization-table/limits": {
"get": {
"tags": ["Localization", "Metadata"],
"summary": "Get limits for translation table entries operations",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetLimitsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetLimitsResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_get_v1_localization_table_limits"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/localization-table/limits",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_localization_tables_v1_localization_table_limits"
}
]
}
},
"/v1/localization-table/metadata": {
"get": {
"tags": ["Localization", "Metadata"],
"summary": "Get metadata for localization UI",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.LocalizationTablesMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.LocalizationTablesMetadataResponse"
}
}
}
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_get_v1_localization_table_metadata"
}
}
},
"/v1/localization-table/tables": {
"post": {
"tags": ["Localization"],
"summary": "Creates a Localization Table with the given data.\r\nNote that this endpoint simply creates a table and does not associate it with any universe, so if intending to use this to create tables usable in experience more setup will be needed to grant those experiences access.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.CreateTableRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.CreateTableRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.CreateTableResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.CreateTableResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You do not have permission to get this table."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_post_v1_localization_table_tables"
}
}
},
"/v1/localization-table/tables/{assetId}": {
"get": {
"tags": ["Assets", "Localization"],
"summary": "Get table information by the assetId of the table.",
"parameters": [
{
"in": "path",
"name": "assetId",
"description": "The asset id associated with the table.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableResponse"
}
}
}
},
"400": {
"description": "12: Invalid asset id."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: You do not have permission to get this table."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#localizationtables_get_v1_localization_table_tables__assetId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/localization-table/tables/{assetId}",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#get_legacy_localization_tables_v1_localization_table_tables__assetId_"
}
]
}
},
"/v1/localization-table/tables/{tableId}": {
"get": {
"tags": ["Localization"],
"summary": "Get table information by the id of the table.",
"parameters": [
{
"in": "path",
"name": "tableId",
"description": "",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableResponse"
}
}
}
},
"400": {
"description": "3: Invalid table id."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: You do not have permission to get this table."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_get_v1_localization_table_tables__tableId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/localization-table/tables/{tableId}",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_localization_tables_v1_localization_table_tables__tableId_"
}
]
},
"patch": {
"tags": ["Localization"],
"summary": "Updates the tables contents based on what is provided.",
"parameters": [
{
"in": "path",
"name": "tableId",
"description": "The table guid for the table to update.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"in": "query",
"name": "gameId",
"description": "The game id.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.UpdateTableContentsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.UpdateTableContentsRequest"
}
}
},
"description": "The metadata object is optional.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.UpdateTableContentsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.UpdateTableContentsResponse"
}
}
}
},
"400": {
"description": "3: Invalid table id.\r\n4: Table does not exist.\r\n10: Maximum entries exceeded. Please keep the number of entries per request below the maximum.\r\n13: Request body can't be null\r\n14: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n6: You do not have permission to create this table."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_patch_v1_localization_table_tables__tableId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/localization-table/tables/{tableId}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_localization_tables_v1_localization_table_tables__tableId_"
}
]
}
},
"/v1/localization-table/tables/{tableId}/asset-entries": {
"get": {
"tags": ["Localization"],
"summary": "Gets a page of asset (image) entries for the specified table, along with the table's\r\nper-locale asset translations.",
"parameters": [
{
"in": "path",
"name": "tableId",
"description": "The table id.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"in": "query",
"name": "cursor",
"description": "The source asset id to start after. If null, starts from the first page. A null cursor in the response means there are no more entries.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "gameId",
"description": "The universe id that owns the table.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableAssetEntriesPagedResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableAssetEntriesPagedResponse"
}
}
}
},
"400": {
"description": "3: Invalid table id.\r\n14: Invalid game id\r\n25: Invalid cursor"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: You do not have permission to get this table."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_get_v1_localization_table_tables__tableId__asset_entries"
}
}
},
"/v1/localization-table/tables/{tableId}/entries": {
"get": {
"tags": ["Localization"],
"summary": "Gets a batch of entries for a table.",
"parameters": [
{
"in": "path",
"name": "tableId",
"description": "",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"in": "query",
"name": "cursor",
"description": "If null, there are no more entries in the table and you've reached the last page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "gameId",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "entryFormat",
"description": "",
"schema": {
"type": "string",
"enum": ["Invalid", "Legacy", "Icu"],
"default": "Legacy"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesPagedResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesPagedResponse"
}
}
}
},
"400": {
"description": "3: Invalid table id.\r\n14: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: You do not have permission to get this table."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_get_v1_localization_table_tables__tableId__entries"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/localization-table/tables/{tableId}/entries",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_localization_tables_v1_localization_table_tables__tableId__entries"
}
]
}
},
"/v1/localization-table/tables/{tableId}/entries/translation-feedback": {
"post": {
"tags": ["Localization"],
"summary": "Gets the translation feedback for each entry passed in.",
"parameters": [
{
"in": "path",
"name": "tableId",
"description": "The entries' tableId.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"in": "query",
"name": "gameId",
"description": "The game id.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesTranslationFeedbackRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesTranslationFeedbackRequest"
}
}
},
"description": "A request body containing all relevant data for entry translation feedback lookup.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesTranslationFeedbackResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesTranslationFeedbackResponse"
}
}
}
},
"400": {
"description": "3: Invalid table id.\r\n13: Request body can't be null\r\n14: Invalid game id\r\n16: Entries can't be null or empty\r\n35: The entries provided are invalid\r\n37: Invalid locale code.\r\n38: Invalid entry identifier."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You do not have permission to get this table."
},
"429": {
"description": "24: Too many attempts.Please try again later."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_post_v1_localization_table_tables__tableId__entries_translation_feedback"
}
}
},
"/v1/localization-table/tables/{tableId}/entries/translation-history": {
"post": {
"tags": ["Localization"],
"summary": "Gets the translation history for each entry passed in.",
"parameters": [
{
"in": "path",
"name": "tableId",
"description": "The entries' tableId.",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"in": "query",
"name": "gameId",
"description": "The game id.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesTranslationHistoryRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesTranslationHistoryRequest"
}
}
},
"description": "A request body containing all relevant data for entry history lookup.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesTranslationHistoryResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntriesTranslationHistoryResponse"
}
}
}
},
"400": {
"description": "3: Invalid table id.\r\n13: Request body can't be null\r\n14: Invalid game id\r\n16: Entries can't be null or empty\r\n35: The entries provided are invalid\r\n37: Invalid locale code.\r\n38: Invalid entry identifier.\r\n39: Count should be at least 1.\r\n45: Invalid exclusive start id."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You do not have permission to get this table."
},
"429": {
"description": "24: Too many attempts.Please try again later."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_post_v1_localization_table_tables__tableId__entries_translation_history"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/localization-table/tables/{tableId}/entries/translation-history",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_localization_tables_v1_localization_table_tables__tableId__entries_translation_history"
}
]
}
},
"/v1/localization-table/tables/{tableId}/entry-count": {
"get": {
"tags": ["Localization"],
"summary": "Gets the number of entries in the specified table",
"parameters": [
{
"in": "path",
"name": "tableId",
"description": "The table id",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"in": "query",
"name": "gameId",
"description": "The game id",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "entryFormat",
"schema": {
"type": "string",
"enum": ["Invalid", "Legacy", "Icu"],
"default": 1
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntryCountResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.GetTableEntryCountResponse"
}
}
}
},
"400": {
"description": "3: Invalid table id.\r\n14: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: You do not have permission to get this table."
}
},
"servers": [
{
"url": "https://localizationtables.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_get_v1_localization_table_tables__tableId__entry_count"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-localization-tables/v1/localization-table/tables/{tableId}/entry-count",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_localization_tables_v1_localization_table_tables__tableId__entry_count"
}
]
}
},
"/v1/login": {
"post": {
"tags": ["Accounts"],
"summary": "Authenticates a user.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginRequest"
}
}
},
"description": "Roblox.Authentication.Api.Models.LoginRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
}
}
},
"400": {
"description": "0: An unexpected error occurred.\r\n3: Username and Password are required. Please try again.\r\n8: Login with received credential type is not supported."
},
"403": {
"description": "0: Token Validation Failed\r\n1: Incorrect username or password. Please try again.\r\n2: You must pass the robot test before logging in.\r\n4: Account has been locked. Please request a password reset.\r\n5: Unable to login. Please use Social Network sign on.\r\n6: Account issue. Please contact Support.\r\n9: Unable to login with provided credentials. Default login is required.\r\n10: Received credentials are unverified.\r\n12: Existing login session found. Please log out first.\r\n14: The account is unable to log in. Please log in to the LuoBu app.\r\n15: Too many attempts. Please wait a bit.\r\n27: The account is unable to login. Please log in with the VNG app.\r\n44: Login is unavailable in your country."
},
"429": {
"description": "7: Too many attempts. Please wait a bit."
},
"503": {
"description": "11: Service unavailable. Please try again."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_login"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/login",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_login"
}
]
}
},
"/v1/login/linked": {
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for logging in a user, specifically for linked\nauthentication on PCGDK",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginRequest"
}
}
},
"description": "Roblox.Authentication.Api.Models.LoginRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
}
}
},
"400": {
"description": "0: An unexpected error occurred.\r\n3: Username and Password are required. Please try again.\r\n8: Login with received credential type is not supported."
},
"403": {
"description": "0: Token Validation Failed\r\n1: Incorrect username or password. Please try again.\r\n2: You must pass the robot test before logging in.\r\n4: Account has been locked. Please request a password reset.\r\n5: Unable to login. Please use Social Network sign on.\r\n6: Account issue. Please contact Support.\r\n9: Unable to login with provided credentials. Default login is required.\r\n10: Received credentials are unverified.\r\n12: Existing login session found. Please log out first.\r\n14: The account is unable to log in. Please log in to the LuoBu app.\r\n15: Too many attempts. Please wait a bit.\r\n27: The account is unable to login. Please log in with the VNG app.\r\n43: This account is not eligible for this platform.\r\n44: Login is unavailable in your country."
},
"429": {
"description": "7: Too many attempts. Please wait a bit."
},
"503": {
"description": "11: Service unavailable. Please try again."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_login_linked"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/login/linked",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_login_linked"
}
]
}
},
"/v1/logout": {
"post": {
"tags": ["Accounts"],
"summary": "Destroys the current authentication session.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_logout"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v3/logout",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v3_logout"
}
]
}
},
"/v1/logoutfromallsessionsandreauthenticate": {
"post": {
"tags": ["Accounts"],
"summary": "Logs out user from all other sessions.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.LogoutFromAllSessionsAndReauthenticateRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.LogoutFromAllSessionsAndReauthenticateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_logoutfromallsessionsandreauthenticate"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/logoutfromallsessionsandreauthenticate",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_logoutfromallsessionsandreauthenticate"
}
]
}
},
"/v1/marAssetHash/{marAssetHash}/marCheckSum/{marCheckSum}": {
"get": {
"tags": ["Assets"],
"summary": "Retrieves an asset by its mar (moderation agnostic) hash and mar (moderation agnostic) checksum.",
"parameters": [
{
"in": "path",
"name": "marAssetHash",
"description": "The mar (moderation agnostic) hash of the asset to retrieve.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "marCheckSum",
"description": "The mar (moderation agnostic) checksum of the asset to retrieve.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Accept-Encoding",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "AssetType",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "skipSigningScripts",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "clientInsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "scriptinsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "modulePlaceId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "serverplaceid",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "expectedAssetType",
"schema": {
"type": "string",
"default": ""
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "2: invalid server request\r\n3: Encoding cannot be empty"
},
"404": {
"description": "5: Asset hash cannot be empty"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v1_marAssetHash__marAssetHash__marCheckSum__marCheckSum_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://assetdelivery.roblox.com/v2/marAssetHash/{marAssetHash}/marCheckSum/{marCheckSum}",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v2_marAssetHash__marAssetHash__marCheckSum__marCheckSum_"
}
]
}
},
"/v1/messages": {
"get": {
"tags": ["Accounts"],
"summary": "Gets a user's messages.",
"parameters": [
{
"in": "query",
"name": "pageNumber",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"in": "query",
"name": "pageSize",
"description": "",
"schema": {
"type": "integer",
"format": "int32",
"default": 20
}
},
{
"in": "query",
"name": "messageTab",
"description": "",
"schema": {
"type": "string",
"enum": ["Inbox", "Sent", "Archive"],
"default": "Inbox"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.GetMessagesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.GetMessagesResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://privatemessages.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#privatemessages_get_v1_messages"
}
}
},
"/v1/messages/archive": {
"post": {
"tags": ["Accounts"],
"summary": "Archives a batch of messages.",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.PrivateMessages.Api.Models.BatchMessagesRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesResponse"
}
}
}
},
"400": {
"description": "5: Too many ids in a batch request."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://privatemessages.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#privatemessages_post_v1_messages_archive"
}
}
},
"/v1/messages/mark-read": {
"post": {
"tags": ["Accounts"],
"summary": "Marks a batch of messages as read.",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.PrivateMessages.Api.Models.BatchMessagesRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesResponse"
}
}
}
},
"400": {
"description": "5: Too many ids in a batch request."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://privatemessages.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#privatemessages_post_v1_messages_mark_read"
}
}
},
"/v1/messages/mark-unread": {
"post": {
"tags": ["Accounts"],
"summary": "Marks a batch of messages as unread.",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.PrivateMessages.Api.Models.BatchMessagesRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesResponse"
}
}
}
},
"400": {
"description": "5: Too many ids in a batch request."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://privatemessages.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#privatemessages_post_v1_messages_mark_unread"
}
}
},
"/v1/messages/unarchive": {
"post": {
"tags": ["Accounts"],
"summary": "Unarchives a batch of messages.",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.PrivateMessages.Api.Models.BatchMessagesRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesResponse"
}
}
}
},
"400": {
"description": "5: Too many ids in a batch request."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://privatemessages.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#privatemessages_post_v1_messages_unarchive"
}
}
},
"/v1/messages/unread/count": {
"get": {
"tags": ["Accounts"],
"summary": "Gets unread messages for the authenticated user.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.UnreadMessagesCountResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.UnreadMessagesCountResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://privatemessages.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#privatemessages_get_v1_messages_unread_count"
}
}
},
"/v1/messages/{messageId}": {
"get": {
"tags": ["Accounts"],
"summary": "Gets a message's details.",
"parameters": [
{
"in": "path",
"name": "messageId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.MessageDetailsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.MessageDetailsResponse"
}
}
}
},
"400": {
"description": "2: Message does not exist or the current user is not authorized to view it."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://privatemessages.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#privatemessages_get_v1_messages__messageId_"
}
}
},
"/v1/metadata": {
"get": {
"tags": ["Accounts", "Metadata", "User profiles"],
"summary": "Get the metadata",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.MetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.MetadataResponse"
}
}
}
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_get_v1_metadata"
}
}
},
"/v1/metadata#auth.roblox.com": {
"get": {
"tags": ["Accounts", "Metadata"],
"summary": "Get the metadata",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.MetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.MetadataResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_metadata"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/metadata",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_metadata"
}
]
}
},
"/v1/metadata#twostepverification.roblox.com": {
"get": {
"tags": ["Accounts", "Metadata"],
"summary": "Gets two step verification system metadata.",
"description": "The metadata endpoint takes in optional request parameters to output additional context\r\nfor when the user is unauthenticated but attempting to login with two step verification.\r\n\r\nWhen supplied, all three request parameters must be sent and match up.",
"parameters": [
{
"in": "query",
"name": "userId",
"description": "The user ID.",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "challengeId",
"description": "The active two step verification challenge ID if there is one.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "actionType",
"description": "The Roblox.TwoStepVerification.Client.TwoStepVerificationActionType associated with the challenge.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.MetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.MetadataResponse"
}
}
}
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_get_v1_metadata"
}
}
},
"/v1/mobile-client-version": {
"get": {
"tags": ["Metadata"],
"summary": "Get mobile client version information based on app version parameter",
"parameters": [
{
"in": "query",
"name": "appVersion",
"description": "AppiOSV2.13, AppVersioniOS2.0.1, etc",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.MobileClientVersionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.MobileClientVersionResponse"
}
}
}
},
"400": {
"description": "2: Invalid binaryType."
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v1_mobile_client_version"
}
}
},
"/v1/my/friends/count": {
"get": {
"tags": ["Connections"],
"summary": "Get the number of friends a user has",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Friends.Api.FriendsCountResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Friends.Api.FriendsCountResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://friends.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/friends#friends_get_v1_my_friends_count"
}
}
},
"/v1/my/friends/requests": {
"get": {
"tags": ["Connections"],
"summary": "Get all users that friend requests with targetUserId using exclusive start paging",
"parameters": [
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sessionId",
"description": "Optional session identifier.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "friendRequestSort",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2],
"default": 1
}
},
{
"in": "query",
"name": "uprankUnseen",
"description": "Whether to uprank unseen friend requests and return isUnseen per friend request.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Friends.Api.FriendRequestResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Friends.Api.FriendRequestResponse_"
}
}
}
},
"400": {
"description": "1: The target user is invalid or does not exist.\r\n6: Invalid parameters.\r\n34: Invalid pagination cursor."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: The user is banned from performing operation.\r\n3: The user is blocked from performing this action."
},
"429": {
"description": "9: The flood limit has been exceeded."
}
},
"servers": [
{
"url": "https://friends.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/friends#friends_get_v1_my_friends_requests"
}
}
},
"/v1/my/new-friend-requests/count": {
"get": {
"tags": ["Connections"],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.NewFriendRequestsCountResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.NewFriendRequestsCountResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://friends.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/friends#friends_get_v1_my_new_friend_requests_count"
}
}
},
"/v1/my/trusted-friends/requests": {
"get": {
"tags": ["Connections"],
"summary": "Get all incoming trusted friend requests using exclusive start paging.",
"parameters": [
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "Specifies how to sort the returned trusted friend requests.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1],
"default": 1
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Friends.Api.Models.Response.TrustedFriendRequestResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Friends.Api.Models.Response.TrustedFriendRequestResponse_"
}
}
}
},
"400": {
"description": "1: The target user is invalid or does not exist.\r\n6: Invalid parameters."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: The user is banned from performing operation.\r\n3: The user is blocked from performing this action."
},
"429": {
"description": "9: The flood limit has been exceeded."
}
},
"servers": [
{
"url": "https://friends.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/friends#friends_get_v1_my_trusted_friends_requests"
}
}
},
"/v1/name-description/games/translation-history": {
"post": {
"tags": ["Localization", "Universes"],
"summary": "Gets the history for name or description in a provided language.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetNameDescriptionHistoryV2Request"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetNameDescriptionHistoryV2Request"
}
}
},
"description": "The request.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetNameDescriptionHistoryResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetNameDescriptionHistoryResponse"
}
}
}
},
"400": {
"description": "13: Request body can't be null\r\n14: Invalid game id\r\n18: You do not have permission to manage this game\r\n22: Invalid language code\r\n39: Count should be at least 1 and less than 50.\r\n53: Language is not supported for the game.\r\n54: No history available for source data\r\n55: Invalid exclusive start Id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_post_v1_name_description_games_translation_history"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/name-description/games/translation-history",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_name_description_games_translation_history"
}
]
}
},
"/v1/name-description/games/{gameId}": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Gets a game's name and description in all supported languages",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.NameDescription_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.NameDescription_"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_name_description_games__gameId_"
}
},
"patch": {
"tags": ["Localization", "Universes"],
"summary": "Updates a game's name and/or description in multiple languages.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateNameDescriptionsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateNameDescriptionsRequest"
}
}
},
"description": "The request body.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateNameDescriptionsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateNameDescriptionsResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n19: New name is null or whitespaces or new name/description is too long\r\n20: New name or description is moderated\r\n22: Invalid language code\r\n23: You can't delete translations for source language\r\n26: You can't update translations for source language\r\n53: Language is not supported for the game."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_patch_v1_name_description_games__gameId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/name-description/games/{gameId}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_name_description_games__gameId_"
}
]
}
},
"/v1/name-description/metadata": {
"get": {
"tags": ["Localization", "Metadata"],
"summary": "Rollout settings for name/description migration to new page",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.GameNameDescriptionMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.GameNameDescriptionMetadataResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_name_description_metadata"
}
}
},
"/v1/outfits/{userOutfitId}/delete": {
"post": {
"tags": ["Avatars"],
"summary": "Deletes the outfit.",
"description": "You are only allowed to delete outfits you created.",
"parameters": [
{
"in": "path",
"name": "userOutfitId",
"description": "The user outfit id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You don't have permission to delete this outfit."
},
"404": {
"description": "1: The specified userOutfitId is invalid!"
},
"500": {
"description": "3: An error occurred while deleting the outfit."
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v1_outfits__userOutfitId__delete"
}
}
},
"/v1/outfits/{userOutfitId}/details": {
"get": {
"tags": ["Avatars"],
"summary": "Gets details about the contents of an outfit.",
"parameters": [
{
"in": "path",
"name": "userOutfitId",
"description": "The user outfit id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitDetailsModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitDetailsModel"
}
}
}
},
"400": {
"description": "2: The outfit for the specified userOutfit is invalid."
},
"403": {
"description": "3: The requester does not have access to the details for the given user outfit."
},
"404": {
"description": "1: The specified userOutfitId is invalid."
}
},
"deprecated": true,
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"description": "Please use GET v4/outfits/{outfitId}/details",
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v1_outfits__userOutfitId__details"
}
}
},
"/v1/packages/{packageId}/assets": {
"get": {
"tags": ["Inventories"],
"summary": "Given a package ID, returns the list of asset IDs for that package",
"parameters": [
{
"in": "path",
"name": "packageID",
"description": "The asset ID of the package",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.AssetIdListModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.AssetIdListModel"
}
}
}
}
},
"deprecated": true,
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"description": "Packages have been migrated to bundles. Use catalog.roblox.com/v1/bundles/{bundleId}/details",
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/inventories#inventory_get_v1_packages__packageId__assets"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://catalog.roblox.com/v1/bundles/{bundleId}/details",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_bundles__bundleId__details"
}
]
}
},
"/v1/passkey/DeleteCredentialBatch": {
"post": {
"tags": ["Accounts"],
"summary": "Disables a batch of credentials for the specified user.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.DeletePasskeysRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.DeletePasskeysRequest"
}
}
},
"description": "The request bodyRoblox.Authentication.Api.Models.Request.DeletePasskeysRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "3: Invalid security key nickname."
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n0: An unknown error occurred with the request."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_DeleteCredentialBatch"
}
}
},
"/v1/passkey/FinishRegistration": {
"post": {
"tags": ["Accounts"],
"summary": "Complete Passkey registration by providing credential creation options.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.FinishPasskeyRegistrationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.FinishPasskeyRegistrationRequest"
}
}
},
"description": "The request body.Roblox.Authentication.Api.Models.Request.FinishPasskeyRegistrationRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "0: An unknown error occurred with the request.\r\n3: Invalid security key nickname."
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n0: An unknown error occurred with the request."
},
"403": {
"description": "0: Token Validation Failed\r\n3: Invalid security key nickname."
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_FinishRegistration"
}
}
},
"/v1/passkey/ListCredentials": {
"post": {
"tags": ["Accounts"],
"summary": "List a user's registered passkeys.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ListPasskeysRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.ListPasskeysRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.ListPasskeyCredentialResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.ListPasskeyCredentialResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n0: An unknown error occurred with the request."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_ListCredentials"
}
}
},
"/v1/passkey/RenameCredential": {
"post": {
"tags": ["Accounts"],
"summary": "Rename a credential for the specified user.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.RenamePasskeyRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.RenamePasskeyRequest"
}
}
},
"description": "The request bodyRoblox.Authentication.Api.Models.Request.RenamePasskeyRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "3: Invalid security key nickname.\r\n7: Invalid passkey ID."
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n0: An unknown error occurred with the request."
},
"403": {
"description": "0: Token Validation Failed\r\n3: Invalid security key nickname."
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_RenameCredential"
}
}
},
"/v1/passkey/StartAuthentication": {
"post": {
"tags": ["Accounts"],
"summary": "Provides a challenge for the Passkey to authenticate.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.StartAuthenticationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.StartAuthenticationResponse"
}
}
}
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_StartAuthentication"
}
}
},
"/v1/passkey/StartRegistration": {
"post": {
"tags": ["Accounts"],
"summary": "Initiates Passkey registration by providing credential creation options.",
"parameters": [
{
"in": "query",
"name": "flow",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.StartPasskeyRegistrationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.StartPasskeyRegistrationRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.StartPasskeyRegistrationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.StartPasskeyRegistrationResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n0: An unknown error occurred with the request."
},
"403": {
"description": "0: Token Validation Failed\r\n1: Reached limit of pass keys registered."
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_StartRegistration"
}
}
},
"/v1/passkey/finish-ar-preauth-registration": {
"post": {
"tags": ["Accounts"],
"summary": "Finishes account recovery pre-auth passkey registration by validating the recovery session,\ndeactivating the user's password, and completing passkey registration.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.FinishARPreAuthPasskeyRegistrationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.FinishARPreAuthPasskeyRegistrationRequest"
}
}
},
"description": "The request body containing recovery session and passkey details.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "0: An unknown error occurred with the request."
},
"401": {
"description": "0: An unknown error occurred with the request."
},
"403": {
"description": "0: Token Validation Failed\r\n1: Reached limit of pass keys registered."
},
"500": {
"description": "0: An unknown error occurred with the request."
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_finish_ar_preauth_registration"
}
}
},
"/v1/passkey/finish-preauth-registration": {
"post": {
"tags": ["Accounts"],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.FinishPasskeyPreauthRegistrationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.FinishPasskeyPreauthRegistrationRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "0: An unknown error occurred with the request."
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n0: An unknown error occurred with the request."
},
"403": {
"description": "0: Token Validation Failed\r\n1: Reached limit of pass keys registered."
},
"500": {
"description": "0: An unknown error occurred with the request."
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_finish_preauth_registration"
}
}
},
"/v1/passkey/start-authentication-by-user": {
"post": {
"tags": ["Accounts"],
"summary": "Initializes passkey authentication for the user(s) corresponding to the identifier provided.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.StartAuthenticationByUserRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.StartAuthenticationByUserRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.StartAuthenticationByUserResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.StartAuthenticationByUserResponse"
}
}
}
},
"400": {
"description": "5: User identifier and type are required.\r\n6: Multi-user passkey authentication is not supported for this credential type."
},
"403": {
"description": "0: Token Validation Failed\r\n4: No passkeys registered for any users found."
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_start_authentication_by_user"
}
}
},
"/v1/passkey/start-preauth-registration": {
"post": {
"tags": ["Accounts"],
"summary": "Initiates Passkey preauthenticated registration by providing credential creation options.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.StartPasskeyPreauthRegistrationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.StartPasskeyPreauthRegistrationRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.StartPasskeyPreauthRegistrationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.StartPasskeyPreauthRegistrationResponse"
}
}
}
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passkey_start_preauth_registration"
}
}
},
"/v1/passkey/su-eligibility": {
"get": {
"tags": ["Accounts"],
"summary": "Checks whether the authenticated user is eligible for silent passkey upgrade.\nRoute and response are intentionally obfuscated (\"su-eligibility\" = \"silent-upgrade-eligibility\").",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.SilentUpgradeEligibilityResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.SilentUpgradeEligibilityResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n0: An unknown error occurred with the request."
},
"503": {
"description": "2: Feature disabled."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_passkey_su_eligibility"
}
}
},
"/v1/passwords/validate": {
"get": {
"tags": ["Accounts"],
"summary": "Endpoint for checking if a password is valid.",
"parameters": [
{
"in": "query",
"name": "Username",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "Password",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationResponse"
}
}
}
},
"400": {
"description": "1: Valid Username and Password are required. Please try again."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_passwords_validate"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/passwords/validate",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_passwords_validate"
}
]
},
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for checking if a password is valid.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationModel"
}
}
},
"description": "The Roblox.Authentication.Api.Models.PasswordValidationModel.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationResponse"
}
}
}
},
"400": {
"description": "1: Valid Username and Password are required. Please try again."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_passwords_validate"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/passwords/validate",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_passwords_validate"
}
]
}
},
"/v1/phone": {
"get": {
"tags": ["Accounts"],
"summary": "Get Verified Phone Number",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PhoneResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PhoneResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"500": {
"description": "0: An unknown error occured."
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_get_v1_phone"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Set Phone Number",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.AccountInformation.Api.Models.PhoneRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Platform.UserPhoneNumberVerification.Models.PendingVerificationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Platform.UserPhoneNumberVerification.Models.PendingVerificationResponse"
}
}
}
},
"400": {
"description": "2: Invalid Phone Number\r\n3: Phone Number Already Associated\r\n8: Invalid Phone Number Type"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n5: Incorrect Password\r\n10: "
},
"429": {
"description": "6: Flooded"
},
"500": {
"description": "0: An unknown error occured."
},
"503": {
"description": "1: This feature is currently disabled. Please try again later."
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_post_v1_phone"
}
}
},
"/v1/phone/delete": {
"post": {
"tags": ["Accounts"],
"summary": "Delete Phone",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.AccountInformation.Api.Models.PhoneRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n5: Incorrect Password"
},
"429": {
"description": "6: Flooded"
},
"500": {
"description": "0: An unknown error occured."
},
"503": {
"description": "1: This feature is currently disabled. Please try again later."
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_post_v1_phone_delete"
}
}
},
"/v1/phone/resend": {
"post": {
"tags": ["Accounts"],
"summary": "Resend Phone code",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.EmptyRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.EmptyRequest"
}
}
},
"description": "Roblox.AccountInformation.Api.Models.PhoneRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "6: Flooded"
},
"500": {
"description": "0: An unknown error occured."
},
"503": {
"description": "1: This feature is currently disabled. Please try again later."
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_post_v1_phone_resend"
}
}
},
"/v1/phone/verify": {
"post": {
"tags": ["Accounts"],
"summary": "Verify Phone",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.VerifyPhoneRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.VerifyPhoneRequest"
}
}
},
"description": "Roblox.AccountInformation.Api.Models.VerifyPhoneRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "2: Invalid Phone Number\r\n3: Phone Number Already Associated\r\n7: Invalid Code"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "6: Flooded"
},
"500": {
"description": "0: An unknown error occured."
},
"503": {
"description": "1: This feature is currently disabled. Please try again later."
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_post_v1_phone_verify"
}
}
},
"/v1/places/gameicons": {
"get": {
"tags": ["Thumbnails", "Universes"],
"summary": "Fetches game icon URLs for a list of places. Ids that do not correspond to a valid place will be filtered out.",
"parameters": [
{
"in": "query",
"name": "placeIds",
"description": "The place ids.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "returnPolicy",
"description": "Optional policy to use in selecting game icon to return (default = PlaceHolder).",
"schema": {
"type": "string",
"enum": [
"PlaceHolder",
"ForcePlaceHolder",
"AutoGenerated",
"ForceAutoGenerated"
],
"default": "PlaceHolder"
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": [
"50x50",
"128x128",
"150x150",
"256x256",
"420x420",
"512x512"
],
"default": "50x50"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Jpeg", "Webp", "Ico", "Icns"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n8: The requested return policy is invalid (must be PlaceHolder, AutoGenerated or ForceAutoGenerated).\r\n10: Circular thumbnail requests are not allowed"
},
"403": {
"description": "9: User not authorized to use AutoGenerated or ForceAutoGenerated return policies."
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#thumbnails_get_v1_places_gameicons"
}
}
},
"/v1/places/{placeId}": {
"patch": {
"tags": ["Places"],
"summary": "Updates the place configuration for the place with the id placeId",
"description": "Currently the only supported functionality for updating the configuration is around Name, and Description.",
"parameters": [
{
"in": "path",
"name": "placeId",
"description": "The place id for the place to be updated.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Api.Develop.Models.PlaceConfigurationModel"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceModel"
}
}
}
},
"400": {
"description": "placeId is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Authenticated user is not authorized to manage this place.\r\n0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#develop_patch_v1_places__placeId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://develop.roblox.com/v2/places/{placeId}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/places#develop_patch_v2_places__placeId_"
}
]
},
"post": {
"tags": ["Places"],
"summary": "Updates the place configuration for the place with the id placeId",
"description": "Currently the only supported functionality for updating the configuration is around Name, and Description.",
"parameters": [
{
"in": "path",
"name": "placeId",
"description": "The place id for the place to be updated.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Api.Develop.Models.PlaceConfigurationModel"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceModel"
}
}
}
},
"400": {
"description": "placeId is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Authenticated user is not authorized to manage this place.\r\n0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#develop_post_v1_places__placeId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://develop.roblox.com/v2/places/{placeId}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/places#develop_patch_v2_places__placeId_"
}
]
}
},
"/v1/places/{placeId}/teamcreate/active_session/members": {
"get": {
"tags": ["Places", "Team Create", "Universes"],
"summary": "List of users in the active Team Create session",
"parameters": [
{
"in": "path",
"name": "placeId",
"description": "The place Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Users.SkinnyUserResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Users.SkinnyUserResponse_"
}
}
}
},
"400": {
"description": "1: The universe is invalid.\r\n5: The place is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: Not authorized to perform this action.\r\n4: TeamCreate on universe is disabled."
},
"404": {
"description": "0: An unknown error occurred."
},
"500": {
"description": "6: Multiple active sessions in a Team Create place."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#develop_get_v1_places__placeId__teamcreate_active_session_members"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/places/{placeId}/teamcreate/active_session/members",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/places#get_legacy_develop_v1_places__placeId__teamcreate_active_session_members"
}
]
}
},
"/v1/plugins": {
"get": {
"tags": ["Assets"],
"summary": "Gets plugin details by ids.",
"parameters": [
{
"in": "query",
"name": "pluginIds",
"description": "The plugin ids.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Plugins.PluginResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Plugins.PluginResponse_"
}
}
}
},
"400": {
"description": "1: Too many ids.\r\n2: The format of the ids are invalid."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#develop_get_v1_plugins"
}
}
},
"/v1/plugins/{pluginId}": {
"patch": {
"tags": ["Assets"],
"summary": "Updates a plugin.",
"parameters": [
{
"in": "path",
"name": "pluginId",
"description": "The id of the plugin.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Develop.Api.UpdatePluginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Develop.Api.UpdatePluginRequest"
}
}
},
"description": "The Roblox.Develop.Api.UpdatePluginRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "5: Description too long.\r\n6: Text moderated.\r\n7: Invalid name.\r\n8: The request body is missing."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n4: Insufficient permissions."
},
"404": {
"description": "3: The id is invalid."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#develop_patch_v1_plugins__pluginId_"
}
}
},
"/v1/preferences/publishing": {
"delete": {
"tags": ["Assets", "Creator Store"],
"parameters": [
{
"in": "query",
"name": "groupId",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://itemconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#itemconfiguration_delete_v1_preferences_publishing"
}
},
"get": {
"tags": ["Assets", "Creator Store"],
"parameters": [
{
"in": "query",
"name": "groupId",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Response.PublishingPreferences.PublishingPreferencesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Response.PublishingPreferences.PublishingPreferencesResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://itemconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#itemconfiguration_get_v1_preferences_publishing"
}
},
"patch": {
"tags": ["Assets", "Creator Store"],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Request.PublishingPreferences.UpdatePublishingPreferencesRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Request.PublishingPreferences.UpdatePublishingPreferencesRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Response.PublishingPreferences.PublishingPreferencesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Response.PublishingPreferences.PublishingPreferencesResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://itemconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#itemconfiguration_patch_v1_preferences_publishing"
}
},
"post": {
"tags": ["Assets", "Creator Store"],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Request.PublishingPreferences.CreatePublishingPreferencesRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Request.PublishingPreferences.CreatePublishingPreferencesRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Response.PublishingPreferences.PublishingPreferencesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.Models.Response.PublishingPreferences.PublishingPreferencesResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://itemconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#itemconfiguration_post_v1_preferences_publishing"
}
}
},
"/v1/presence/users": {
"post": {
"tags": ["Connections", "User profiles", "Users"],
"operationId": "Presence_GetUserPresences",
"requestBody": {
"content": {
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UserPresenceRequest"
}
]
}
}
}
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserPresencesResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresenceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresenceApi.ErrorResponse"
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PresenceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://presence.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/friends#Presence_GetUserPresences"
}
}
},
"/v1/promotion-channels": {
"get": {
"tags": ["Accounts", "User profiles"],
"summary": "Get the user's promotion channels",
"parameters": [
{
"in": "query",
"name": "alwaysReturnUrls",
"description": "Whether all promotion channel links should be returned as full URLs.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "filterLink",
"description": "Whether all promotion channel links should be filtered.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "onlyShortenTwitter",
"description": "Whether all promotion channels links except for Twitter should be returned as full URLs. If false, all promotion channels will be shortened.",
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PromotionChannelsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PromotionChannelsResponse"
}
}
}
},
"400": {
"description": "1: User not found."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_get_v1_promotion_channels"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Update the user's promotion channels",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PromotionChannelsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PromotionChannelsRequest"
}
}
},
"description": "The Roblox.AccountInformation.Api.Models.PromotionChannelsRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "2: The request was empty.\r\n11: The Facebook profile url is invalid.\r\n12: The Twitter handle is invalid.\r\n13: The YouTube url is invalid.\r\n14: The Twitch profile url is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n4: Only users who are over twelve years of age may edit social network channels."
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_post_v1_promotion_channels"
}
}
},
"/v1/recovery/metadata": {
"get": {
"tags": ["Accounts", "Metadata"],
"summary": "Get metadata for forgot endpoints",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoveryMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoveryMetadataResponse"
}
}
}
},
"503": {
"description": "7: The Roblox WeChat API is currently unavailable."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_recovery_metadata"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/recovery/metadata",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_recovery_metadata"
}
]
}
},
"/v1/resize/{hash}/{width}/{height}/{type}/{format}/{filterType}": {
"get": {
"tags": ["Thumbnails"],
"summary": "Resizes larger thumbnails to specified size and format",
"parameters": [
{
"in": "path",
"name": "hash",
"description": "Hash of larger thumbnail",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "width",
"description": "Desired width of thumbnail",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "path",
"name": "height",
"description": "Desired height of thumbnail",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "path",
"name": "type",
"description": "Thumbnail Type",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "format",
"description": "Desired image format of the thumbnail",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "filterType",
"description": "E.g. is output circular",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "shouldModify",
"description": "",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://thumbnailsresizer.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#thumbnailsresizer_get_v1_resize__hash___width___height___type___format___filterType_"
}
}
},
"/v1/revert/account": {
"get": {
"tags": ["Accounts"],
"summary": "Get Revert Account ticket info",
"parameters": [
{
"in": "query",
"name": "ticket",
"description": "Ticket Guid to revert account.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RevertAccountInfoResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RevertAccountInfoResponse"
}
}
}
},
"400": {
"description": "2: The account revert ticket is not valid"
},
"403": {
"description": "13: Revert links are disabled for users in the Enhanced Protection Program."
},
"503": {
"description": "1: This feature is disabled"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_revert_account"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/revert/account",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_revert_account"
}
]
},
"post": {
"tags": ["Accounts"],
"summary": "Submit Revert Account Request",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RevertAccountSubmitRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RevertAccountSubmitRequest"
}
}
},
"description": "The Roblox.Authentication.Api.Models.RevertAccountSubmitRequest containing the necessary information to revert account.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
}
}
},
"400": {
"description": "2: The account revert ticket is not valid\r\n3: Password is not valid\r\n4: Passwords do not match\r\n5: Password cannot be used\r\n8: The account security ticket is expired."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "0: Unknown\r\n1: This feature is disabled"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_revert_account"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/revert/account",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_revert_account"
}
]
}
},
"/v1/revert/invalidate-tickets": {
"post": {
"tags": ["Accounts"],
"summary": "Invalidates all account security tickets for the authenticated user.\nThis endpoint should be called before enrolling in EPP to ensure old revert links cannot be used.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "1: This feature is disabled"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_revert_invalidate_tickets"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/revert/invalidate-tickets",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_revert_invalidate_tickets"
}
]
}
},
"/v1/secureresize/{thumbPrint}/{hash}/{width}/{height}/{type}/{format}/{filterType}": {
"get": {
"tags": ["Thumbnails"],
"summary": "Decrypts and Resizes larger thumbnails to specified size and format",
"parameters": [
{
"in": "path",
"name": "thumbPrint",
"description": "The thumbPrint that represents the key version",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "hash",
"description": "Hash of larger thumbnail",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "width",
"description": "Desired width of thumbnail",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "path",
"name": "height",
"description": "Desired height of thumbnail",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "path",
"name": "type",
"description": "Thumbnail Type",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "format",
"description": "Desired image format of the thumbnail",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "filterType",
"description": "E.g. is output circular",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://thumbnailsresizer.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#thumbnailsresizer_get_v1_secureresize__thumbPrint___hash___width___height___type___format___filterType_"
}
}
},
"/v1/session/refresh": {
"post": {
"tags": ["Accounts"],
"summary": "Logs out user from the current session and create a new one.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_session_refresh"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/session/refresh",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_session_refresh"
}
]
}
},
"/v1/signup": {
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for signing up a new user",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Authentication.Api.Models.SignupRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupResponse"
}
}
}
},
"400": {
"description": "Bad request\r\n16: User agreement ids are null.\r\n21: Empty account switch blob required"
},
"403": {
"description": "0: Token Validation Failed\r\n2: Captcha Failed.\r\n4: Invalid Birthday.\r\n5: Invalid Username.\r\n6: Username already taken.\r\n7: Invalid Password.\r\n8: Password and Username are same.\r\n9: Password is too simple.\r\n10: Email is invalid.\r\n11: Asset is invalid.\r\n12: Too many attempts. Please wait a bit.\r\n17: One time Passcode session was not valid\r\n22: Maximum logged in accounts limit reached.\r\n44: Login is unavailable in your country."
},
"429": {
"description": "3: Too many attempts. Please wait a bit."
},
"500": {
"description": "Internal server error\r\n15: Insert acceptances failed.\r\n27: Pre-auth passkey registration failed"
},
"503": {
"description": "Service unavailable"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_signup"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/signup",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_signup"
}
]
}
},
"/v1/signup/linked": {
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for signing up a new user through linked authentication.",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Authentication.Api.Models.SignupRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupResponse"
}
}
}
},
"400": {
"description": "Bad request\r\n16: User agreement ids are null.\r\n21: Empty account switch blob required"
},
"403": {
"description": "0: Token Validation Failed\r\n2: Captcha Failed.\r\n4: Invalid Birthday.\r\n5: Invalid Username.\r\n6: Username already taken.\r\n7: Invalid Password.\r\n8: Password and Username are same.\r\n9: Password is too simple.\r\n10: Email is invalid.\r\n11: Asset is invalid.\r\n12: Too many attempts. Please wait a bit.\r\n17: One time Passcode session was not valid\r\n22: Maximum logged in accounts limit reached.\r\n29: Account Linking already exists on this account\r\n30: Account Linking required but failed\r\n44: Login is unavailable in your country."
},
"429": {
"description": "3: Too many attempts. Please wait a bit."
},
"500": {
"description": "Internal server error\r\n15: Insert acceptances failed.\r\n27: Pre-auth passkey registration failed\r\n30: Account Linking required but failed"
},
"503": {
"description": "30: Account Linking required but failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_signup_linked"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v2/signup/linked",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_signup_linked"
}
]
}
},
"/v1/social/connected-providers": {
"get": {
"tags": ["Accounts"],
"summary": "Get social network user information if the given social auth method is connected to current user.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SocialProvidersResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SocialProvidersResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_social_connected_providers"
}
}
},
"/v1/social/{provider}/disconnect": {
"post": {
"tags": ["Accounts"],
"summary": "Removes the given social authentication method from current Roblox user if it is connected.",
"parameters": [
{
"in": "path",
"name": "provider",
"description": "The social authentication provider, e.g. Facebook",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SocialAuthenticationDisconnectRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SocialAuthenticationDisconnectRequest"
}
}
},
"description": "The request body for additional parameters that may be required for disconnect",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "Bad request\r\n2: Unsupported social provider type."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Forbidden\r\n0: Token Validation Failed\r\n3: Cannot disconnect the only authentication method. Password on account is required.\r\n4: The password provided is invalid."
},
"500": {
"description": "Internal server error"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_social__provider__disconnect"
}
}
},
"/v1/source-language/games/{gameId}": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Gets the source language of a game",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Language"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Language"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_source_language_games__gameId_"
}
},
"patch": {
"tags": ["Localization", "Universes"],
"summary": "Sets the source language of a game",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "languageCode",
"description": "",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "85: Failed to disable automatic translation status for languages"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_patch_v1_source_language_games__gameId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/source-language/games/{gameId}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_source_language_games__gameId_"
}
]
}
},
"/v1/source-language/games/{gameId}/language-with-locales": {
"get": {
"tags": ["Localization"],
"summary": "Gets the source language of a game",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.SourceLanguageWithLocales"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.SourceLanguageWithLocales"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_source_language_games__gameId__language_with_locales"
}
}
},
"/v1/supported-languages/games/{gameId}": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Get the supported languages for a game.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageOrLocale_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageOrLocale_"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_supported_languages_games__gameId_"
}
},
"patch": {
"tags": ["Localization", "Universes"],
"summary": "Add or remove supported languages for a game.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.PatchLanguage"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.PatchLanguage"
}
}
}
},
"description": "The languages to add or remove. LanguageCodeType can be \"Language\" or \"Locale\".",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code\r\n49: Duplicate language codes are not allowed."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_patch_v1_supported_languages_games__gameId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/supported-languages/games/{gameId}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_supported_languages_games__gameId_"
}
]
}
},
"/v1/supported-languages/games/{gameId}/automatic-translation-status": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Get the automatic translation status of supported languages for a game.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageOrLocaleSettings_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageOrLocaleSettings_"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_supported_languages_games__gameId__automatic_translation_status"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/supported-languages/games/{gameId}/automatic-translation-status",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_game_internationalization_v1_supported_languages_games__gameId__automatic_translation_status"
}
]
}
},
"/v1/supported-languages/games/{gameId}/in-experience-language-selection": {
"get": {
"tags": ["Localization"],
"summary": "Get the user's in-experience language selector languages for a game.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageOrLocale_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageOrLocale_"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_supported_languages_games__gameId__in_experience_language_selection"
}
}
},
"/v1/supported-languages/games/{gameId}/languages/{languageCode}/automatic-translation-status": {
"patch": {
"tags": ["Localization", "Universes"],
"summary": "Enable or disable automatic translation for a game and language.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language to enable or disable for automatic translation.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "boolean"
}
},
"text/json": {
"schema": {
"type": "boolean"
}
}
},
"description": "Flag to indicate if automatic translation should be enabled or disabled.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.EditAutomaticTranslationStatusForGameAndLanguageResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.EditAutomaticTranslationStatusForGameAndLanguageResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code\r\n53: Language is not supported for the game.\r\n72: Automatic translation cannot be enabled for game.\r\n75: Automatic translation cannot be enabled for language."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_patch_v1_supported_languages_games__gameId__languages__languageCode__automatic_translation_status"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/supported-languages/games/{gameId}/languages/{languageCode}/automatic-translation-status",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_supported_languages_games__gameId__languages__languageCode__automatic_translation_status"
}
]
}
},
"/v1/supported-languages/games/{gameId}/languages/{languageCode}/image-translation-status": {
"patch": {
"tags": ["Localization"],
"summary": "Enable or disable image translation for a game and language.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language to enable or disable for image translation.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "boolean"
}
},
"text/json": {
"schema": {
"type": "boolean"
}
}
},
"description": "Flag to indicate if image translation should be enabled or disabled.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.EditImageTranslationStatusForGameAndLanguageResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.EditImageTranslationStatusForGameAndLanguageResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code\r\n53: Language is not supported for the game.\r\n93: Image translation cannot be enabled for language."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_patch_v1_supported_languages_games__gameId__languages__languageCode__image_translation_status"
}
}
},
"/v1/supported-languages/games/{gameId}/languages/{languageCode}/universe-display-info-automatic-translation-settings": {
"patch": {
"tags": ["Localization", "Universes"],
"summary": "Update the switch which controls if the UniverseDisplayInformation should be automatically translated.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "languageCode",
"description": "The language code.",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "boolean"
}
},
"text/json": {
"schema": {
"type": "boolean"
}
}
},
"description": "Whether to enable automatic translation for universe display info.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateUniverseDisplayInfoAutomaticTranslationSettingsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UpdateUniverseDisplayInfoAutomaticTranslationSettingsResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n72: Automatic translation cannot be enabled for game."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n18: You do not have permission to manage this game"
},
"500": {
"description": "77: Content localization set settings return error code invalid\r\n79: Invalid content instance settings\r\n80: Invalid quota settings\r\n81: Invalid change agent\r\n82: Failed to update UniverseDisplayInformation content instance auto translation settings"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_patch_v1_supported_languages_games__gameId__languages__languageCode__universe_display_info_automatic_translation_settings"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/supported-languages/games/{gameId}/languages/{languageCode}/universe-display-info-automatic-translation-settings",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_supported_languages_games__gameId__languages__languageCode__universe_display_info_automatic_translation_settings"
}
]
}
},
"/v1/supported-languages/games/{gameId}/universe-display-info-automatic-translation-settings": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Get UniverseDisplayInfo automatic translation settings.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.UniverseDisplayInfoAutomaticTranslationSettings_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.UniverseDisplayInfoAutomaticTranslationSettings_"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "18: You do not have permission to manage this game"
},
"500": {
"description": "0: An unknown error occurred.\r\n22: Invalid language code\r\n83: Failed to get UniverseDisplayInformation content instance auto translation settings\r\n84: Count of language code is larger than max batch get size"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_supported_languages_games__gameId__universe_display_info_automatic_translation_settings"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-game-internationalization/v1/supported-languages/games/{gameId}/universe-display-info-automatic-translation-settings",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_game_internationalization_v1_supported_languages_games__gameId__universe_display_info_automatic_translation_settings"
}
]
}
},
"/v1/supported-languages/metadata": {
"get": {
"tags": ["Localization", "Metadata"],
"summary": "Rollout settings for supported languages of a game",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.SupportedLanguagesMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.SupportedLanguagesMetadataResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_supported_languages_metadata"
}
}
},
"/v1/trades/expire-outdated": {
"post": {
"tags": ["Trades"],
"summary": "Deprecated. TradeSession are automatically set to expire while the inbound/outbound trades are fetched.\nExpires Outdated Inbound Trades for User",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_post_v1_trades_expire_outdated"
}
}
},
"/v1/trades/metadata": {
"get": {
"tags": ["Trades"],
"summary": "Gets metadata about the trade system.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeMetadata"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeMetadata"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v1_trades_metadata"
}
}
},
"/v1/trades/send": {
"post": {
"tags": ["Trades"],
"summary": "Sends a trade.",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Trades.Api.TradeRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.NewTradeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.NewTradeResponse"
}
}
}
},
"400": {
"description": "7: The user cannot trade. See field for whether the user who cannot trade is the sender or receiver.\r\n8: The trade request should include offers.\r\n9: Invalid number of trade offers.\r\n10: Invalid trade partner. See field for whether the invalid partner is the sender or receiver.\r\n11: Cannot add negative Robux amounts to a trade.\r\n12: One or more userAssets are invalid. See fieldData for details.\r\n13: Invalid number of userAssets in one side of the trade.\r\n15: The trade is unbalanced.\r\n16: Trade value ratio is not sufficient.\r\n17: You have insufficient Robux to make this offer.\r\n18: Too many Robux in one side of the offer. See field for whether the side is the sender or receiver.\r\n19: Unknown error while processing the trade.\r\n21: Cannot trade with yourself.\r\n22: User's privacy settings are too strict to allow trading. See field for whether the user is the sender or receiver.\r\n23: The trade reaches Two Step Verification thresholds and the user has not verified in the past time threshold."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "14: You are sending too many trade requests. Please slow down and try again later."
},
"502": {
"description": "0: An unknown error occured."
},
"503": {
"description": "5: Trading system is unavailable"
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_post_v1_trades_send"
}
}
},
"/v1/trades/{tradeId}": {
"get": {
"tags": ["Trades"],
"summary": "Gets detailed information about a trade.",
"parameters": [
{
"in": "path",
"name": "tradeId",
"description": "The trade id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeDetailResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeDetailResponse"
}
}
}
},
"400": {
"description": "2: The trade cannot be found or you are not authorized to view it."
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n4: You are not authorized to modify this trade."
},
"404": {
"description": "2: The trade cannot be found or you are not authorized to view it."
},
"500": {
"description": "0: An unknown error occured."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v1_trades__tradeId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://trades.roblox.com/v2/trades/{tradeId}",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v2_trades__tradeId_"
}
]
}
},
"/v1/trades/{tradeId}/accept": {
"post": {
"tags": ["Trades"],
"summary": "Accepts a trade.",
"parameters": [
{
"in": "path",
"name": "tradeId",
"description": "The trade id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "2: The trade cannot be found or you are not authorized to view it.\r\n3: The trade is inactive.\r\n4: You are not authorized to modify this trade.\r\n6: Trade needs to be confirmed by the other party.\r\n6: Trade needs to be confirmed by the other party.\r\n7: The user cannot trade. See field for whether the user who cannot trade is the sender or receiver.\r\n23: The trade reaches Two Step Verification thresholds and the user has not verified in the past time threshold."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "5: Trading system is unavailable"
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_post_v1_trades__tradeId__accept"
}
}
},
"/v1/trades/{tradeId}/counter": {
"post": {
"tags": ["Trades"],
"summary": "Counters a trade.",
"parameters": [
{
"in": "path",
"name": "tradeId",
"description": "The trade id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Trades.Api.TradeRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.NewTradeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.NewTradeResponse"
}
}
}
},
"400": {
"description": "2: The trade cannot be found or you are not authorized to view it.\r\n4: You are not authorized to modify this trade.\r\n7: The user cannot trade. See field for whether the user who cannot trade is the sender or receiver.\r\n8: The trade request should include offers.\r\n9: Invalid number of trade offers.\r\n10: Invalid trade partner. See field for whether the invalid partner is the sender or receiver.\r\n11: Cannot add negative Robux amounts to a trade.\r\n12: One or more userAssets are invalid. See fieldData for details.\r\n13: Invalid number of userAssets in one side of the trade.\r\n15: The trade is unbalanced.\r\n16: Trade value ratio is not sufficient.\r\n17: You have insufficient Robux to make this offer.\r\n18: Too many Robux in one side of the offer. See field for whether the side is the sender or receiver.\r\n19: Unknown error while processing the trade.\r\n21: Cannot trade with yourself.\r\n22: User's privacy settings are too strict to allow trading. See field for whether the user is the sender or receiver."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "14: You are sending too many trade requests. Please slow down and try again later."
},
"502": {
"description": "0: An unknown error occured."
},
"503": {
"description": "5: Trading system is unavailable"
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_post_v1_trades__tradeId__counter"
}
}
},
"/v1/trades/{tradeId}/decline": {
"post": {
"tags": ["Trades"],
"summary": "Declines a trade.",
"parameters": [
{
"in": "path",
"name": "tradeId",
"description": "The trade id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "2: The trade cannot be found or you are not authorized to view it.\r\n3: The trade is inactive.\r\n4: You are not authorized to modify this trade.\r\n7: The user cannot trade. See field for whether the user who cannot trade is the sender or receiver."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "5: Trading system is unavailable"
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_post_v1_trades__tradeId__decline"
}
}
},
"/v1/trades/{tradeStatusType}": {
"get": {
"tags": ["Trades"],
"summary": "Fetches a list of the authenticated user's trades.",
"parameters": [
{
"in": "path",
"name": "tradeStatusType",
"description": "The trade status type.",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"pattern": "^[A-Za-z]*$",
"enum": [1, 2, 3, 4]
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "Sorted by trade creation date",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Trades.Api.TradeResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Trades.Api.TradeResponse_"
}
}
}
},
"400": {
"description": "1: Invalid trade status type."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v1_trades__tradeStatusType_"
}
}
},
"/v1/trades/{tradeStatusType}/count": {
"get": {
"tags": ["Trades"],
"summary": "Gets the total number of pending trades for the authenticated user.\nInbound is the only accepted tradeStatusType.",
"parameters": [
{
"in": "path",
"name": "tradeStatusType",
"description": "The trade status type to fetch a total count for.",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [1, 2, 3, 4]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeCountResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeCountResponse"
}
}
}
},
"400": {
"description": "1: Invalid trade status type."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v1_trades__tradeStatusType__count"
}
}
},
"/v1/translation-analytics/games/{gameId}/download-translation-analytics-report": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Download translation analytics report after the report is ready",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game's id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "startDateTime",
"description": "The inclusive start dateTime of report in UTC",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"in": "query",
"name": "endDateTime",
"description": "The exclusive end dateTime of report in UTC",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"in": "query",
"name": "reportType",
"description": "The report type",
"required": true,
"schema": {
"type": "string",
"enum": [
"GameTranslationStatus",
"GameTranslationStatusForTranslator",
"GameTranslationStatusForTranslatorGroup",
"Test"
]
}
},
{
"in": "query",
"name": "reportSubjectTargetId",
"description": "The translator group id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object"
}
},
"text/json": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n56: You need to provide a valid translator group id to get report.\r\n58: Start datetime or end datetime is invlaid.\r\n59: Report type is invalid"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "57: You do not have permission to request translation analytics report."
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_translation_analytics_games__gameId__download_translation_analytics_report"
}
}
},
"/v1/translation-analytics/games/{gameId}/request-translation-analytics-report": {
"post": {
"tags": ["Localization", "Universes"],
"summary": "Request translation analytics report to be generated",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The game's id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.RequestTranslationAnalyticsReportRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.RequestTranslationAnalyticsReportRequest"
}
}
},
"description": "The request body",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.RequestTranslationAnalyticsReportResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.RequestTranslationAnalyticsReportResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n56: You need to provide a valid translator group id to get report.\r\n58: Start datetime or end datetime is invlaid.\r\n59: Report type is invalid"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n57: You do not have permission to request translation analytics report."
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_post_v1_translation_analytics_games__gameId__request_translation_analytics_report"
}
}
},
"/v1/translation-analytics/metadata": {
"get": {
"tags": ["Localization", "Metadata"],
"summary": "Get metadata related to UI and rollout settings",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.TranslationAnalyticsMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.TranslationAnalyticsMetadataResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_translation_analytics_metadata"
}
}
},
"/v1/ui-configurations": {
"get": {
"tags": ["Localization", "Metadata"],
"summary": "Get ui configurations for frontend to use.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetUiConfigurationsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetUiConfigurationsResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_ui_configurations"
}
}
},
"/v1/universes/multiget": {
"get": {
"tags": ["Universes"],
"summary": "Gets a list of universes.",
"description": "If a universe can not be found for a given ID (such as -1) it will be skipped.",
"parameters": [
{
"in": "query",
"name": "ids",
"description": "The universe IDs to get. Limit 100.",
"required": true,
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.UniverseModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.UniverseModel_"
}
}
}
},
"400": {
"description": "8: No universe IDs sent to get.\r\n9: Too many universe IDs sent to get, the limit is: "
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_universes_multiget"
}
}
},
"/v1/universes/multiget/permissions": {
"get": {
"tags": ["Universes"],
"summary": "Returns an array of granted and declined permissions related to the universes with the ids in ids for the authenticated user.",
"description": "If a universe can not be found for a given ID (such as -1) it will be skipped.",
"parameters": [
{
"in": "query",
"name": "ids",
"description": "The universe ids.",
"required": true,
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.UniverseIdPermissionsModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.UniverseIdPermissionsModel_"
}
}
}
},
"400": {
"description": "8: No universe IDs sent to get.\r\n9: Too many universe IDs sent to get, the limit is: "
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_universes_multiget_permissions"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/universes/multiget/permissions",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/universes#get_legacy_develop_v1_universes_multiget_permissions"
}
]
}
},
"/v1/universes/multiget/teamcreate": {
"get": {
"tags": ["Team Create", "Universes"],
"summary": "Gets TeamCreate settings for multiple universes specified by Ids",
"parameters": [
{
"in": "query",
"name": "ids",
"description": "The universe Ids.",
"required": true,
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.UniverseTeamCreateSettingsModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.UniverseTeamCreateSettingsModel_"
}
}
}
},
"400": {
"description": "Roblox.Api.Develop.ResponseEnums.TeamCreateErrors.TooManyUniverseIdsSent"
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/team-create#develop_get_v1_universes_multiget_teamcreate"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/universes/multiget/teamcreate",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/team-create#get_legacy_develop_v1_universes_multiget_teamcreate"
}
]
}
},
"/v1/universes/user-public-publish-eligibility": {
"get": {
"tags": ["Universes"],
"summary": "Returns the result of various checks for a user's eligibility to publish a public universe",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UserPublicPublishEligibilityResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UserPublicPublishEligibilityResponse"
}
}
}
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_universes_user_public_publish_eligibility"
}
}
},
"/v1/universes/{universeId}": {
"get": {
"tags": ["Universes"],
"summary": "Gets a Roblox.Api.Develop.Models.UniverseModel.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The Universe id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseModel"
}
}
}
},
"400": {
"description": "1: The universe does not exist."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_universes__universeId_"
}
}
},
"/v1/universes/{universeId}/activate": {
"post": {
"tags": ["Universes"],
"summary": "Activates a universes.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: The universe does not exist.\r\n2: This universe does not have a root place."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n3: You are not authorized to configure this universe.\r\n6: The root place for this universe is under review and can not be activated.\r\n7: Creator already has the maximum number of places active."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_post_v1_universes__universeId__activate"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/universes/{universeId}/activate",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/universes#post_legacy_develop_v1_universes__universeId__activate"
}
]
}
},
"/v1/universes/{universeId}/activation-eligibility": {
"get": {
"tags": ["Universes"],
"summary": "Returns the result of various checks for a user's eligibility to activate a given universe from private to public universeId for authenticated user",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.ActivationEligibilityResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.ActivationEligibilityResponse"
}
}
}
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_universes__universeId__activation_eligibility"
}
}
},
"/v1/universes/{universeId}/badges": {
"get": {
"tags": ["Badges", "Universes"],
"summary": "Gets badges by their awarding game.",
"description": "Lists badges created under the universe's root place, with paging and optional sort.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "sortBy",
"description": "The key to sort badges by.",
"schema": {
"type": "string",
"enum": ["Rank", "DateCreated"]
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Badges.Api.BadgeResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Badges.Api.BadgeResponse_"
}
}
}
},
"400": {
"description": "26: The pagination cursor is invalid or incompatible with the current request."
},
"404": {
"description": "3: The game is invalid or does not exist."
}
},
"servers": [
{
"url": "https://badges.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_get_v1_universes__universeId__badges"
}
},
"post": {
"tags": ["Badges", "Universes"],
"summary": "Creates a new badge.",
"description": "Charges the selected payment source and creates the badge under the universe's root place.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The ID of the universe to create the badge for.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"name": {
"description": "The badge name.",
"type": "string"
},
"description": {
"description": "The badge description.",
"type": "string"
},
"paymentSourceType": {
"description": "Whether or not to pay for the badge with user funds, or group funds.",
"type": "integer",
"format": "int32",
"enum": [1, 2]
},
"files": {
"description": "The badge icon. Optional: when omitted and a curated default badge icon is configured on\r\nthe service, the badge is created with that default icon. When provided, exactly one file\r\nmust be supplied.",
"type": "string",
"format": "binary"
},
"expectedCost": {
"description": "User expected cost of a badge.",
"type": "integer",
"format": "int64"
},
"isActive": {
"description": "Whether or not the badge should be created in the active state.",
"type": "boolean"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Badges.BadgeResponseV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Badges.BadgeResponseV2"
}
}
}
},
"400": {
"description": "11: The badge icon is invalid.\r\n14: Invalid badge name.\r\n15: Invalid badge description.\r\n16: Payment source is invalid.\r\n18: Expected badge cost is different from the actual badge cost."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n6: Text moderated.\r\n12: You do not have permission to manage this game's badges.\r\n17: Insufficient funds."
},
"404": {
"description": "3: The game is invalid or does not exist."
},
"429": {
"description": "13: Too many requests, try again later."
}
},
"servers": [
{
"url": "https://badges.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_post_v1_universes__universeId__badges"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-badges/v1/universes/{universeId}/badges",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/badges#post_legacy_badges_v1_universes__universeId__badges"
}
]
}
},
"/v1/universes/{universeId}/configuration": {
"get": {
"tags": ["Universes"],
"summary": "Get settings for an owned universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsResponse"
}
}
}
},
"400": {
"description": "1: The universe does not exist."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: You are not authorized to configure this universe."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_universes__universeId__configuration"
}
},
"patch": {
"tags": ["Universes"],
"summary": "Update universe settings for an owned universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universeId.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsRequest"
}
}
},
"description": "The Roblox.Api.Develop.Models.UniverseSettingsRequest model.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsResponse"
}
}
}
},
"400": {
"description": "1: The universe does not exist.\r\n3: Invalid UniverseAvatarType.\r\n4: Invalid UniverseScaleType.\r\n5: Invalid UniverseAnimationType.\r\n6: Invalid UniverseCollisionType.\r\n7: New universe name or description has been rejected.\r\n8: New universe name is too long.\r\n10: Invalid UniverseBodyType.\r\n11: Invalid UniverseJointPositioningType.\r\n12: The universe has no root place.\r\n15: Price is required when isForSale is true.\r\n16: This game cannot be offered for sale because it is not public.\r\n17: This game cannot be offered for sale because it has private servers enabled.\r\n18: The game price is outside of the allowed range.\r\n19: Invalid genre.\r\n20: The request body is missing.\r\n21: Invalid device type.\r\n22: Invalid asset type.\r\n23: Invalid value, the min must be less than or equal to the max\r\n24: Invalid scale value\r\n41: You cannot change the private server price again so soon after the previous change. Please try again later."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You are not authorized to configure this universe.\r\n14: You are not authorized to sell games."
},
"409": {
"description": "9: Failed to shutdown all intances of game after changing AvatarType. The change has been reverted."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_patch_v1_universes__universeId__configuration"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://develop.roblox.com/v2/universes/{universeId}/configuration",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_patch_v2_universes__universeId__configuration"
}
]
}
},
"/v1/universes/{universeId}/configuration/playtesters": {
"delete": {
"tags": ["Universes"],
"summary": "Remove playtesters from an owned universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersRequest"
}
}
},
"description": "The playtesters to remove.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersResponse"
}
}
}
},
"400": {
"description": "1: The universe does not exist.\r\n48: The playtesters list is missing or empty.\r\n49: Too many playtesters were specified in a single request."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You are not authorized to configure this universe."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_delete_v1_universes__universeId__configuration_playtesters"
}
},
"get": {
"tags": ["Universes"],
"summary": "Get the list of playtesters for an owned universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersResponse"
}
}
}
},
"400": {
"description": "1: The universe does not exist."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: You are not authorized to configure this universe."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_universes__universeId__configuration_playtesters"
}
},
"post": {
"tags": ["Universes"],
"summary": "Add playtesters to an owned universe. Existing ids are ignored (additive union).",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersRequest"
}
}
},
"description": "The playtesters to add.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersResponse"
}
}
}
},
"400": {
"description": "1: The universe does not exist.\r\n48: The playtesters list is missing or empty.\r\n49: Too many playtesters were specified in a single request.\r\n51: One or more playtesters cannot be added due to safety restrictions."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You are not authorized to configure this universe."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_post_v1_universes__universeId__configuration_playtesters"
}
}
},
"/v1/universes/{universeId}/configuration/playtesters/eligibility": {
"post": {
"summary": "Check whether each candidate user can currently be added as a private playtester.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytestersRequest"
}
}
},
"description": "The candidate playtesters to evaluate.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytesterEligibilityResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytesterEligibilityResponse"
}
}
}
},
"400": {
"description": "1: The universe does not exist.\r\n48: The playtesters list is missing or empty.\r\n49: Too many playtesters were specified in a single request."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You are not authorized to configure this universe."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
]
}
},
"/v1/universes/{universeId}/configuration/vip-servers": {
"get": {
"tags": ["Private servers"],
"summary": "Get settings for an owned universe's VIP servers.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PrivateServerDetailsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PrivateServerDetailsResponse"
}
}
}
},
"400": {
"description": "1: The universe does not exist."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: You are not authorized to configure this universe."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/private-servers#develop_get_v1_universes__universeId__configuration_vip_servers"
}
}
},
"/v1/universes/{universeId}/deactivate": {
"post": {
"tags": ["Universes"],
"summary": "Deactivates a universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: The universe does not exist.\r\n2: This universe does not have a root place."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n3: You are not authorized to configure this universe."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_post_v1_universes__universeId__deactivate"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/universes/{universeId}/deactivate",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/universes#post_legacy_develop_v1_universes__universeId__deactivate"
}
]
}
},
"/v1/universes/{universeId}/free-badges-quota": {
"get": {
"tags": ["Badges", "Universes"],
"summary": "Gets the number of free badges left for the current UTC day by their awarding game.",
"description": "Reflects daily free-creation allowance for the universe when the feature is enabled.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"format": "int32",
"type": "integer"
}
},
"text/json": {
"schema": {
"format": "int32",
"type": "integer"
}
}
}
},
"404": {
"description": "3: The game is invalid or does not exist."
}
},
"servers": [
{
"url": "https://badges.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_get_v1_universes__universeId__free_badges_quota"
}
}
},
"/v1/universes/{universeId}/payouts": {
"get": {
"summary": "Gets recurring payouts for a group-owned universe.",
"parameters": [
{
"name": "universeId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicAllGroupUniversePayoutsResponseModel"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
]
}
},
"/v1/universes/{universeId}/permissions": {
"get": {
"tags": ["Universes"],
"summary": "Returns list of granted and declined permissions related to the universe with the id universeId for authenticated user",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniversePermissionsModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniversePermissionsModel"
}
}
}
},
"400": {
"description": "1: The universe does not exist."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_universes__universeId__permissions"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/universes/{universeId}/permissions",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/universes#get_legacy_develop_v1_universes__universeId__permissions"
}
]
}
},
"/v1/universes/{universeId}/places": {
"get": {
"tags": ["Places", "Universes"],
"summary": "Gets a list of places for a universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The asset id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "isUniverseCreation",
"description": "",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "Sorted by placeId",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.Models.IPlaceModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.Models.IPlaceModel_"
}
}
}
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#develop_get_v1_universes__universeId__places"
}
}
},
"/v1/universes/{universeId}/stats": {
"get": {
"tags": ["Universes"],
"summary": "Get statistics data for a universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "Type",
"required": true,
"schema": {
"type": "string",
"enum": ["PremiumUpsells", "PremiumVisits"]
}
},
{
"in": "query",
"name": "StartTime",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"in": "query",
"name": "EndTime",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.EconomyCreatorStats.Api.Models.StatisticsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.EconomyCreatorStats.Api.Models.StatisticsResponse"
}
}
}
},
"400": {
"description": "1: The Universe is invalid.\r\n3: Too many data points requested.\r\n4: The requested data type is not known."
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n2: Not authorized to perform this action."
}
},
"servers": [
{
"url": "https://economycreatorstats.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#economycreatorstats_get_v1_universes__universeId__stats"
}
}
},
"/v1/universes/{universeId}/teamcreate": {
"get": {
"tags": ["Team Create", "Universes"],
"summary": "Gets TeamCreate settings for an Roblox.Platform.Universes.IUniverse.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.Response.TeamCreateSettingsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.Response.TeamCreateSettingsResponse"
}
}
}
},
"400": {
"description": "Roblox.Api.Develop.ResponseEnums.TeamCreateErrors.InvalidUniverse"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Roblox.Api.Develop.ResponseEnums.TeamCreateErrors.Unauthorized"
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/team-create#develop_get_v1_universes__universeId__teamcreate"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/universes/{universeId}/teamcreate",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/team-create#get_legacy_develop_v1_universes__universeId__teamcreate"
}
]
},
"patch": {
"tags": ["Team Create", "Universes"],
"summary": "Edit team create settings for a universe.",
"description": "Enables, or disables team create for a universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Api.Develop.Models.UpdateTeamCreateSettingsRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "Roblox.Api.Develop.ResponseEnums.TeamCreateErrors.InvalidUniverse"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Roblox.Api.Develop.ResponseEnums.TeamCreateErrors.Unauthorized\r\n0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/team-create#develop_patch_v1_universes__universeId__teamcreate"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/universes/{universeId}/teamcreate",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/team-create#patch_legacy_develop_v1_universes__universeId__teamcreate"
}
]
}
},
"/v1/universes/{universeId}/teamcreate/memberships": {
"delete": {
"tags": ["Team Create", "Universes"],
"summary": "Removes a user from a TeamCreate permissions list.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Api.Develop.Models.TeamCreateMembershipRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "Roblox.Api.Develop.ResponseEnums.TeamCreateErrors.InvalidUniverse OR Roblox.Api.Develop.ResponseEnums.TeamCreateErrors.InvalidUser"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Roblox.Api.Develop.ResponseEnums.TeamCreateErrors.TeamCreateDisabled\r\n0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/team-create#develop_delete_v1_universes__universeId__teamcreate_memberships"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/universes/{universeId}/teamcreate/memberships",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/team-create#delete_legacy_develop_v1_universes__universeId__teamcreate_memberships"
}
]
}
},
"/v1/user-localization-settings/player-choice/{universeId}": {
"get": {
"tags": ["Localization"],
"summary": "Get user player choice settings for universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe's ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.GetPlayerChoiceUniverseSettingsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.GetPlayerChoiceUniverseSettingsResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"500": {
"description": "0: An unknown error occurred."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_user_localization_settings_player_choice__universeId_"
}
}
},
"/v1/user-localization-settings/universe/{universeId}": {
"get": {
"tags": ["Localization", "Universes"],
"summary": "Get user localization settings for universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe's ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.GetUserLocalizationSettingsForUniverseResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.GetUserLocalizationSettingsForUniverseResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n21: The language is not supported\r\n22: Invalid language code"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_get_v1_user_localization_settings_universe__universeId_"
}
},
"post": {
"tags": ["Localization", "Universes"],
"summary": "Set user localization settings for universe.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universe's ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Request.SetUserLocalizationSettingsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Request.SetUserLocalizationSettingsRequest"
}
}
},
"description": "The request body",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.SetUserLocalizationSettingsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Models.Response.SetUserLocalizationSettingsResponse"
}
}
}
},
"400": {
"description": "14: Invalid game id\r\n22: Invalid language code"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_post_v1_user_localization_settings_universe__universeId_"
}
}
},
"/v1/user/badges/{badgeId}": {
"delete": {
"tags": ["Badges"],
"summary": "Removes a badge from the authenticated user.",
"description": "Revokes the caller's own awarded badge instance when the badge exists on their account.",
"parameters": [
{
"in": "path",
"name": "badgeId",
"description": "The badge Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"404": {
"description": "1: Badge is invalid or does not exist."
}
},
"servers": [
{
"url": "https://badges.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_delete_v1_user_badges__badgeId_"
}
}
},
"/v1/user/currency": {
"get": {
"tags": ["Localization"],
"summary": "Gets currency for the authenticated user.",
"description": "Currency can only be retrieved for the authenticated user.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Economy.CurrencyResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Economy.CurrencyResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "1: The user is invalid."
}
},
"servers": [
{
"url": "https://economy.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/localization#economy_get_v1_user_currency"
}
}
},
"/v1/user/friend-requests/count": {
"get": {
"tags": ["Connections"],
"summary": "Return the number of pending friend requests.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Friends.Api.PendingFriendRequestCountModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Friends.Api.PendingFriendRequestCountModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://friends.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/friends#friends_get_v1_user_friend_requests_count"
}
}
},
"/v1/user/get-tags": {
"post": {
"tags": ["Users"],
"summary": "Gets the tags for multiple users",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Request.GetUserTagsRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Request.GetUserTagsRequestModel"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Response.GetUserTagsResponseModel"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Response.GetUserTagsResponseModel"
}
}
}
}
},
"400": {
"description": "4: Invalid parameters.\r\n8: Too many user Tags are requested."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"429": {
"description": "10: The flood limit has been exceeded."
}
},
"servers": [
{
"url": "https://contacts.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/users#contacts_post_v1_user_get_tags"
}
}
},
"/v1/user/groups/canmanage": {
"get": {
"tags": ["Groups", "Users"],
"summary": "Gets a list of Groups that a user can manage.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.GroupModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.GroupModel_"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/groups#develop_get_v1_user_groups_canmanage"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v1/user/groups/canmanage",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#get_legacy_develop_v1_user_groups_canmanage"
}
]
}
},
"/v1/user/groups/canmanagegamesoritems": {
"get": {
"tags": ["Assets", "Groups", "Universes", "Users"],
"summary": "Gets a list of groups a user can manage games or items for.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.GroupModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.GroupModel_"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#develop_get_v1_user_groups_canmanagegamesoritems"
}
}
},
"/v1/user/passwords/change": {
"post": {
"tags": ["Accounts"],
"summary": "Changes the password for the authenticated user.",
"description": "The current password is needed for verification that the password can be changed.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordChangeModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordChangeModel"
}
}
},
"description": "The request model including the current password, and the new password.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "Roblox.Web.Authentication.Passwords.PasswordResponseCodes.InvalidCurrentPassword\n OR\n Roblox.Web.Authentication.Passwords.PasswordResponseCodes.InvalidPassword"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Roblox.Web.Authentication.Passwords.PasswordResponseCodes.PinLocked\r\n0: Token Validation Failed"
},
"429": {
"description": "Roblox.Web.Authentication.Passwords.PasswordResponseCodes.Flooded"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_user_passwords_change"
}
}
},
"/v1/user/tag": {
"post": {
"tags": ["Users"],
"summary": "Sets the tag for a user",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Request.SetUserTagRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Request.SetUserTagRequestModel"
}
}
},
"description": "The tag receiving userId and the tag itself",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Response.SetUserTagResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Response.SetUserTagResponseModel"
}
}
}
},
"400": {
"description": "2: The target user is invalid or does not exist.\r\n4: Invalid parameters.\r\n6: The userTag is too long."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n5: The user cannot tag themselves."
},
"429": {
"description": "10: The flood limit has been exceeded."
}
},
"servers": [
{
"url": "https://contacts.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/users#contacts_post_v1_user_tag"
}
}
},
"/v1/user/tag/validate": {
"get": {
"tags": ["Users"],
"summary": "Validates the tag for a user",
"parameters": [
{
"in": "query",
"name": "alias",
"description": "The tag to validate",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Response.ValidateUserTagResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Contacts.Api.Response.ValidateUserTagResponseModel"
}
}
}
},
"400": {
"description": "4: Invalid parameters."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"429": {
"description": "10: The flood limit has been exceeded."
}
},
"servers": [
{
"url": "https://contacts.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/users#contacts_get_v1_user_tag_validate"
}
}
},
"/v1/user/trusted-friend-requests/count": {
"get": {
"tags": ["Connections"],
"summary": "Return the number of pending trusted friend requests.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Friends.Api.PendingFriendRequestCountModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Friends.Api.PendingFriendRequestCountModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://friends.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/friends#friends_get_v1_user_trusted_friend_requests_count"
}
}
},
"/v1/user/universes": {
"get": {
"tags": ["Universes"],
"summary": "Gets a list of universes for the authenticated user.",
"parameters": [
{
"in": "query",
"name": "isArchived",
"description": "Whether or not to return archived games.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "Sorted by universeId",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.Models.UniverseModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.Models.UniverseModel_"
}
}
}
},
"400": {
"description": "cursor is not valid."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_get_v1_user_universes"
}
}
},
"/v1/username": {
"post": {
"tags": ["Accounts"],
"summary": "Change the user's username",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameChangeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameChangeRequest"
}
}
},
"description": "The Roblox.Authentication.Api.Models.UsernameChangeRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "5: You don't have enough Robux to change your username.\r\n10: This username is already in use\r\n11: Username not appropriate for Roblox\r\n12: Usernames can be 3 to 20 characters long\r\n13: Usernames can’t start or end with _ and can have at most one _\r\n14: Only a-z, A-Z, 0-9, and _ are allowed\r\n15: Username is null\r\n16: Username might contain private information\r\n17: This username is not available\r\n18: Username is same as current"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n1: PIN is locked.\r\n2: A verified email is missing\r\n3: Your password is incorrect.\r\n100: Unknown birthday"
},
"500": {
"description": "0: An unknown error occured.\r\n5: You don't have enough Robux to change your username."
},
"503": {
"description": "4: The feature is currently not available. Please try again later."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_username"
}
}
},
"/v1/username/change/price": {
"get": {
"tags": ["Accounts"],
"summary": "Get the current price for a username change",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameChangePriceResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameChangePriceResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_username_change_price"
}
}
},
"/v1/usernames": {
"get": {
"tags": ["Accounts"],
"summary": "Gets a list of existing usernames on Roblox based on the query parameters",
"description": "This endpoint can be expanded in the future to include other query parameters such as \"startsWith\"",
"parameters": [
{
"in": "query",
"name": "username",
"description": "The username",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernamesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernamesResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_usernames"
}
}
},
"/v1/usernames/recover": {
"post": {
"tags": ["Accounts"],
"summary": "Sends an email of all accounts belonging to an email",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoverUsernameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoverUsernameRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoverUsernameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoverUsernameResponse"
}
}
}
},
"400": {
"description": "20: Invalid Email\r\n21: Invalid Phone\r\n23: No Account Found"
},
"403": {
"description": "0: Token Validation Failed\r\n11: Too many attempts. Please wait a bit."
},
"500": {
"description": "0: An unexpected error occurred."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_usernames_recover"
}
}
},
"/v1/usernames/users": {
"post": {
"tags": ["Users"],
"summary": "Get users by usernames.",
"description": "This endpoint will also check previous usernames.\nDoes not require X-CSRF-Token protection because this is essentially a get request but as a POST to avoid URI limits.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.MultiGetByUsernameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.MultiGetByUsernameRequest"
}
}
},
"description": "The Roblox.Users.Api.MultiGetByUsernameRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Users.Api.MultiGetUserByNameResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Users.Api.MultiGetUserByNameResponse_"
}
}
}
},
"400": {
"description": "2: Too many usernames."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/users#users_post_v1_usernames_users"
}
}
},
"/v1/usernames/validate": {
"get": {
"tags": ["Accounts"],
"summary": "Checks if a username is valid.",
"parameters": [
{
"in": "query",
"name": "Username",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "Birthday",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"in": "query",
"name": "Context",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationResponse"
}
}
}
},
"400": {
"description": "1: A valid username is required.\r\n2: A valid birthday or authenticated user is required."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_usernames_validate"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Checks if a username is valid.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationRequest"
}
}
},
"description": "The Roblox.Authentication.Api.Models.UsernameValidationRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationResponse"
}
}
}
},
"400": {
"description": "1: A valid username is required.\r\n2: A valid birthday or authenticated user is required."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_usernames_validate"
}
}
},
"/v1/users": {
"post": {
"tags": ["Users"],
"summary": "Get users by ids.",
"description": "Does not require X-CSRF-Token protection because this is essentially a get request but as a POST to avoid URI limits.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.MultiGetByUserIdRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.MultiGetByUserIdRequest"
}
}
},
"description": "The Roblox.Users.Api.MultiGetByUserIdRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Users.Api.MultiGetUserResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Users.Api.MultiGetUserResponse_"
}
}
}
},
"400": {
"description": "1: Too many ids."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/users#users_post_v1_users"
}
}
},
"/v1/users/authenticated": {
"get": {
"tags": ["Accounts"],
"summary": "Gets the minimal authenticated user.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.AuthenticatedGetUserResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.AuthenticatedGetUserResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_users_authenticated"
}
}
},
"/v1/users/authenticated/age-bracket": {
"get": {
"tags": ["Accounts"],
"summary": "Gets the age bracket of the authenticated user.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.UserAgeBracketResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.UserAgeBracketResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_users_authenticated_age_bracket"
}
}
},
"/v1/users/authenticated/country-code": {
"get": {
"tags": ["Accounts"],
"summary": "Gets the country code of the authenticated user.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.UserCountryCodeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.UserCountryCodeResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_users_authenticated_country_code"
}
}
},
"/v1/users/authenticated/roles": {
"get": {
"tags": ["Accounts"],
"summary": "Gets the (public) roles of the authenticated user, such as `\"Soothsayer\"` and `\"BetaTester\"`.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.UserRolesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.UserRolesResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#users_get_v1_users_authenticated_roles"
}
}
},
"/v1/users/avatar": {
"get": {
"tags": ["Avatars", "Thumbnails"],
"summary": "Get Avatar Full body shots for the given CSV of userIds",
"parameters": [
{
"in": "query",
"name": "userIds",
"description": "CSV for the userIds to get avatar full body shots",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "includeBackground",
"description": "Whether to include a background in the thumbnail (defaults to false)",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": [
"30x30",
"48x48",
"60x60",
"75x75",
"100x100",
"110x110",
"140x140",
"150x150",
"150x200",
"180x180",
"250x250",
"352x352",
"420x420",
"720x720"
],
"default": "30x30"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Jpeg", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#thumbnails_get_v1_users_avatar"
}
}
},
"/v1/users/avatar-3d": {
"get": {
"tags": ["Avatars", "Thumbnails"],
"summary": "Get Avatar 3d object for a user",
"parameters": [
{
"in": "query",
"name": "userId",
"description": "user Id for avatar",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "4: The requested Ids are invalid, of an invalid type or missing."
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 500
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 500
}
},
"x-roblox-scopes": [
{
"name": "thumbnail:read",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["thumbnail:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#thumbnails_get_v1_users_avatar_3d"
}
}
},
"/v1/users/avatar-bust": {
"get": {
"tags": ["Avatars", "Thumbnails"],
"summary": "Get Avatar Busts for the given CSV of userIds",
"parameters": [
{
"in": "query",
"name": "userIds",
"description": "CSV for the userIds to get avatar headshots",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "includeBackground",
"description": "Whether to include a background in the thumbnail (defaults to false)",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": [
"48x48",
"50x50",
"60x60",
"75x75",
"100x100",
"150x150",
"180x180",
"352x352",
"420x420"
],
"default": "48x48"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#thumbnails_get_v1_users_avatar_bust"
}
}
},
"/v1/users/avatar-headshot": {
"get": {
"tags": ["Avatars", "Thumbnails"],
"summary": "Get Avatar Headshots for the given CSV of userIds",
"parameters": [
{
"in": "query",
"name": "userIds",
"description": "CSV for the userIds to get avatar headshots",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "includeBackground",
"description": "Whether to include a background in the thumbnail (defaults to false)",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "includeProfileFrame",
"description": "Whether to composite the user's equipped profile frame into the thumbnail (defaults to false)",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": [
"48x48",
"50x50",
"60x60",
"75x75",
"100x100",
"110x110",
"150x150",
"180x180",
"352x352",
"420x420",
"720x720"
],
"default": "48x48"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Jpeg", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#thumbnails_get_v1_users_avatar_headshot"
}
}
},
"/v1/users/outfit-3d": {
"get": {
"tags": ["Thumbnails"],
"summary": "Get 3d object for an outfit",
"parameters": [
{
"in": "query",
"name": "outfitId",
"description": "CSV for the userIds to get user outfits",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "thumbnail:read",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
},
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["thumbnail:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#thumbnails_get_v1_users_outfit_3d"
}
}
},
"/v1/users/outfits": {
"get": {
"tags": ["Thumbnails"],
"summary": "Get outfits for the given CSV of userOutfitIds",
"parameters": [
{
"in": "query",
"name": "userOutfitIds",
"description": "CSV for the userOutfitIds to get user outfits",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "includeBackground",
"description": "Whether to include a background in the thumbnail (defaults to false)",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "size",
"description": "The thumbnail size, formatted widthxheight",
"schema": {
"type": "string",
"enum": ["150x150", "420x420"],
"default": "150x150"
}
},
{
"in": "query",
"name": "format",
"description": "The thumbnail format",
"schema": {
"type": "string",
"enum": ["Png", "Webp"],
"default": "Png"
}
},
{
"in": "query",
"name": "isCircular",
"description": "The circle thumbnail output parameter, true or false",
"schema": {
"type": "boolean",
"enum": ["true", "false"],
"default": "false"
}
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "1: There are too many requested Ids.\r\n2: The requested image format is invalid. Please see documentation for valid thumbnail format parameter name and values.\r\n3: The requested size is invalid. Please see documentation for valid thumbnail size parameter name and format.\r\n4: The requested Ids are invalid, of an invalid type or missing.\r\n10: Circular thumbnail requests are not allowed"
}
},
"servers": [
{
"url": "https://thumbnails.roblox.com"
}
],
"x-roblox-stability": "STABLE",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#thumbnails_get_v1_users_outfits"
}
}
},
"/v1/users/search": {
"get": {
"tags": ["Users"],
"summary": "Searches for users by keyword.",
"parameters": [
{
"in": "query",
"name": "keyword",
"description": "The search keyword.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sessionId",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Users.Api.SearchGetUserResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Users.Api.SearchGetUserResponse_"
}
}
}
},
"400": {
"description": "5: The keyword was filtered.\r\n6: The keyword is too short."
},
"429": {
"description": "4: Too many requests."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/users#users_get_v1_users_search"
}
}
},
"/v1/users/{userId}": {
"get": {
"tags": ["User profiles", "Users"],
"summary": "Gets detailed user information by id.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.GetUserResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.GetUserResponse"
}
}
}
},
"404": {
"description": "3: The user id is invalid."
}
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/cloud/v2/users/{user_id}",
"httpMethod": "GET"
}
],
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/user-profiles#users_get_v1_users__userId_"
}
}
},
"/v1/users/{userId}/assets/collectibles": {
"get": {
"tags": ["Inventories", "Users"],
"summary": "Gets all collectible assets owned by the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The userid of the owner of the collectibles.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "assetType",
"description": "The asset type for the collectibles you're trying to get.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21,
22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96
]
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "Sorted by userAssetId",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.CollectibleUserAssetModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.CollectibleUserAssetModel_"
}
}
}
},
"400": {
"description": "The specified asset type(s) are invalid."
},
"403": {
"description": "The specified user's inventory is hidden."
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/inventories#inventory_get_v1_users__userId__assets_collectibles"
}
}
},
"/v1/users/{userId}/avatar": {
"get": {
"tags": ["Avatars", "User profiles", "Users"],
"summary": "Returns details about a specified user's avatar.",
"description": "Includes assets, bodycolors, and playerAvatarType.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarModelV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarModelV2"
}
}
}
},
"400": {
"description": "1: The specified user does not exist.\r\n2: An account for the given userId does not exist!"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v1_users__userId__avatar"
}
}
},
"/v1/users/{userId}/bundles/{bundleType}": {
"get": {
"tags": ["Assets", "Avatars", "Interactions", "Users"],
"parameters": [
{
"in": "path",
"name": "userId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "bundleType",
"description": " ['BodyParts' = 1, 'AvatarAnimations' = 2, 'Shoes' = 3, 'DynamicHead' = 4]",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [1, 2, 3, 4]
}
},
{
"in": "query",
"name": "cursor",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "integer",
"format": "int32",
"default": 10
}
},
{
"in": "query",
"name": "sortOrder",
"description": " ['Asc' = 1, 'Desc' = 2]",
"schema": {
"type": "integer",
"format": "int32",
"enum": [1, 2],
"default": 2
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Catalog.Api.OwnedBundleModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Catalog.Api.OwnedBundleModel_"
}
}
}
}
},
"servers": [
{
"url": "https://catalog.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_users__userId__bundles__bundleType_"
}
}
},
"/v1/users/{userId}/can-trade-with": {
"get": {
"tags": ["Trades"],
"summary": "Returns whether you can trade with another user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The other user's id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.CanTradeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.CanTradeResponse"
}
}
}
},
"400": {
"description": "10: Invalid trade partner. See field for whether the invalid partner is the sender or receiver."
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v1_users__userId__can_trade_with"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://trades.roblox.com/v2/users/{userId}/can-trade-with",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v2_users__userId__can_trade_with"
}
]
}
},
"/v1/users/{userId}/can-view-inventory": {
"get": {
"tags": ["Accounts", "Inventories", "Users"],
"summary": "Gets whether the specified user's inventory can be viewed.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user identifier.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.CanViewInventoryResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.CanViewInventoryResponse"
}
}
}
},
"400": {
"description": "1: The specified user does not exist!"
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#inventory_get_v1_users__userId__can_view_inventory"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/cloud/v2/users/{user_id}/inventory-items",
"httpMethod": "GET",
"description": "Use the response code to determine whether you have permissions.",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/inventories#Cloud_ListInventoryItems"
}
]
}
},
"/v1/users/{userId}/categories": {
"get": {
"tags": ["Inventories", "Users"],
"summary": "Return inventory categories for a user",
"parameters": [
{
"in": "path",
"name": "userId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.CategoriesModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.CategoriesModel"
}
}
}
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/inventories#inventory_get_v1_users__userId__categories"
}
}
},
"/v1/users/{userId}/categories/favorites": {
"get": {
"tags": ["Interactions", "Inventories", "Users"],
"summary": "Return favorites categories for a user",
"parameters": [
{
"in": "path",
"name": "userId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.CategoriesModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.CategoriesModel"
}
}
}
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#inventory_get_v1_users__userId__categories_favorites"
}
}
},
"/v1/users/{userId}/challenges/authenticator/verify": {
"post": {
"tags": ["Accounts"],
"summary": "Verifies a two step verification challenge code via authenticator app.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.VerifyCodeRequest2"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n2: The user ID is invalid.\r\n10: The two step verification challenge code is invalid."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_authenticator_verify"
}
}
},
"/v1/users/{userId}/challenges/cross-device/retract": {
"post": {
"tags": ["Accounts"],
"summary": "Reverts a user's dialog state from ACTIVE to PENDING.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RetractDialogRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RetractDialogRequest"
}
}
},
"description": "The Roblox.TwoStepVerification.Api.RetractDialogRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RetractDialogResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RetractDialogResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n2: The user ID is invalid."
},
"403": {
"description": "0: Token Validation Failed\r\n19: Challenge denied."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_cross_device_retract"
}
}
},
"/v1/users/{userId}/challenges/cross-device/retry": {
"post": {
"tags": ["Accounts"],
"summary": "Retry a Cross Device two step verification approval.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RetryApprovalRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RetryApprovalRequest"
}
}
},
"description": "The Roblox.TwoStepVerification.Api.RetryApprovalRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RetryApprovalResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RetryApprovalResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n2: The user ID is invalid."
},
"403": {
"description": "0: Token Validation Failed\r\n19: Challenge denied."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_cross_device_retry"
}
}
},
"/v1/users/{userId}/challenges/cross-device/verify": {
"post": {
"tags": ["Accounts"],
"summary": "Verifies a two step verification approval via Cross Device. Cross Device approval does not use a verification code.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyApprovalRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyApprovalRequest"
}
}
},
"description": "The Roblox.TwoStepVerification.Api.VerifyApprovalRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyApprovalResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyApprovalResponse"
}
}
}
},
"400": {
"description": "0: An unknown error occurred with the request.\r\n1: Invalid challenge ID.\r\n2: The user ID is invalid."
},
"403": {
"description": "0: Token Validation Failed\r\n19: Challenge denied."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_cross_device_verify"
}
}
},
"/v1/users/{userId}/challenges/email/send-code": {
"post": {
"tags": ["Accounts"],
"summary": "Sends a two step verification challenge code via email.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.SendCodeRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID."
},
"403": {
"description": "0: Token Validation Failed\r\n2: The user ID is invalid."
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_email_send_code"
}
}
},
"/v1/users/{userId}/challenges/email/verify": {
"post": {
"tags": ["Accounts"],
"summary": "Verifies a two step verification challenge with a code sent via email.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.VerifyCodeRequest3"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n10: The two step verification challenge code is invalid."
},
"403": {
"description": "0: Token Validation Failed\r\n2: The user ID is invalid."
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_email_verify"
}
}
},
"/v1/users/{userId}/challenges/passkey/verify-finish": {
"post": {
"tags": ["Accounts"],
"summary": "Validates the assertion data returned by the passkey.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.VerifyCodeRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n2: The user ID is invalid.\r\n10: The two step verification challenge code is invalid."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_passkey_verify_finish"
}
}
},
"/v1/users/{userId}/challenges/passkey/verify-start": {
"post": {
"tags": ["Accounts"],
"summary": "Provides a challenge for the passkey to authenticate.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.SendCodeRequest2"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyStartPasskeyResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyStartPasskeyResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n2: The user ID is invalid."
},
"403": {
"description": "0: Token Validation Failed\r\n8: The user is not allowed to perform the requested action."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_passkey_verify_start"
}
}
},
"/v1/users/{userId}/challenges/password/verify": {
"post": {
"tags": ["Accounts"],
"summary": "Verifies a two step verification challenge with a password (code).",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.VerifyCodeRequest3"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n4: The password is invalid."
},
"403": {
"description": "0: Token Validation Failed\r\n2: The user ID is invalid."
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_password_verify"
}
}
},
"/v1/users/{userId}/challenges/recovery-codes/verify": {
"post": {
"tags": ["Accounts"],
"summary": "Verifies a two step verification challenge via a recovery code.",
"description": "Once a recovery code has been used to verify a challenge it cannot be used again.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.VerifyCodeRequest2"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n2: The user ID is invalid.\r\n10: The two step verification challenge code is invalid."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_recovery_codes_verify"
}
}
},
"/v1/users/{userId}/challenges/security-key/verify-finish": {
"post": {
"tags": ["Accounts"],
"summary": "Validates the assertion data returned by the security key.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.VerifyCodeRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n2: The user ID is invalid.\r\n10: The two step verification challenge code is invalid."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_security_key_verify_finish"
}
}
},
"/v1/users/{userId}/challenges/security-key/verify-start": {
"post": {
"tags": ["Accounts"],
"summary": "Provides a challenge for the security key to authenticate.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.SendCodeRequest2"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyStartSecurityKeyResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyStartSecurityKeyResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n2: The user ID is invalid."
},
"403": {
"description": "0: Token Validation Failed\r\n8: The user is not allowed to perform the requested action."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_security_key_verify_start"
}
}
},
"/v1/users/{userId}/challenges/sms/send-code": {
"post": {
"tags": ["Accounts"],
"summary": "Sends a two step verification code via SMS for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.SendCodeRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID."
},
"403": {
"description": "0: Token Validation Failed\r\n2: The user ID is invalid."
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_sms_send_code"
}
}
},
"/v1/users/{userId}/challenges/sms/verify": {
"post": {
"tags": ["Accounts"],
"summary": "Verifies a two step verification challenge with a code sent via SMS.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.VerifyCodeRequest3"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeResponse"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID.\r\n2: The user ID is invalid.\r\n10: The two step verification challenge code is invalid."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__challenges_sms_verify"
}
}
},
"/v1/users/{userId}/configuration": {
"get": {
"tags": ["Accounts"],
"summary": "Gets two step verification configuration for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The Id of the user to get the configuration for.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "challengeId",
"description": "The active challenge for the user (as an alternative when the user is unauthenticated).",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "actionType",
"description": "The action type the challengeId is associated with.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.UserConfiguration"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.UserConfiguration"
}
}
}
},
"400": {
"description": "1: Invalid challenge ID."
},
"403": {
"description": "2: The user ID is invalid."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_get_v1_users__userId__configuration"
}
}
},
"/v1/users/{userId}/configuration/authenticator/disable": {
"post": {
"tags": ["Accounts"],
"summary": "Disables two step verification via authenticator for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "2: The user ID is invalid.\r\n4: The password is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n8: The user is not allowed to perform the requested action."
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_authenticator_disable"
}
}
},
"/v1/users/{userId}/configuration/authenticator/enable": {
"post": {
"tags": ["Accounts"],
"summary": "Initiates enabling authenticator-based two step verification for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest"
}
}
},
"description": "The Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableAuthenticatorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableAuthenticatorResponse"
}
}
}
},
"400": {
"description": "2: The user ID is invalid.\r\n3: The email is invalid.\r\n4: The password is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n11: The two step verification configuration is already enabled."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_authenticator_enable"
}
}
},
"/v1/users/{userId}/configuration/authenticator/enable-verify": {
"post": {
"tags": ["Accounts"],
"summary": "Finishes enabling authenticator-based two step verification for the specified user.",
"description": "Enabling authenticator-based two step verification requires two parts to help ensure\r\nthe user has properly stored the authenticator key in their authenticator app.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableVerifyAuthenticatorRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableVerifyAuthenticatorRequest"
}
}
},
"description": "The Roblox.TwoStepVerification.Api.EnableVerifyAuthenticatorRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableVerifyAuthenticatorResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableVerifyAuthenticatorResponse"
}
}
}
},
"400": {
"description": "2: The user ID is invalid.\r\n4: The password is invalid.\r\n10: The two step verification challenge code is invalid.\r\n12: Invalid setup token."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n11: The two step verification configuration is already enabled."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_authenticator_enable_verify"
}
}
},
"/v1/users/{userId}/configuration/email/disable": {
"post": {
"tags": ["Accounts"],
"summary": "Disables two step verification via email for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "4: The password is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: The user ID is invalid.\r\n8: The user is not allowed to perform the requested action."
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_email_disable"
}
}
},
"/v1/users/{userId}/configuration/email/enable": {
"post": {
"tags": ["Accounts"],
"summary": "Enables two step verification via email for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest"
}
}
},
"description": "The request body.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "3: The email is invalid.\r\n4: The password is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: The user ID is invalid."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_email_enable"
}
}
},
"/v1/users/{userId}/configuration/security-key/disable": {
"post": {
"tags": ["Accounts"],
"summary": "Disables a batch of credentials for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.DisableSecurityKeyRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.DisableSecurityKeyRequest"
}
}
},
"description": "The request bodyRoblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "4: The password is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n8: The user is not allowed to perform the requested action."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_security_key_disable"
}
}
},
"/v1/users/{userId}/configuration/security-key/enable": {
"post": {
"tags": ["Accounts"],
"summary": "Initiates security key registration by providing credential creation options.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableSecurityKeyResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableSecurityKeyResponse"
}
}
}
},
"400": {
"description": "2: The user ID is invalid.\r\n4: The password is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n9: The two step verification configuration is invalid for this action.\r\n16: Reached limit of security keys registered."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_security_key_enable"
}
}
},
"/v1/users/{userId}/configuration/security-key/enable-verify": {
"post": {
"tags": ["Accounts"],
"summary": "Finishes security key registration and stores credential. Enables security key as a 2sv media type if it is a user's first key.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableVerifySecurityKeyRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableVerifySecurityKeyRequest"
}
}
},
"description": "The request body.Roblox.TwoStepVerification.Api.EnableVerifySecurityKeyRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "2: The user ID is invalid.\r\n17: Invalid security key nickname."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n17: Invalid security key nickname."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_security_key_enable_verify"
}
}
},
"/v1/users/{userId}/configuration/security-key/list": {
"post": {
"tags": ["Accounts"],
"summary": "List a user's registered security keys.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.ListSecurityKeyResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.ListSecurityKeyResponse"
}
}
}
},
"400": {
"description": "2: The user ID is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_security_key_list"
}
}
},
"/v1/users/{userId}/configuration/sms/disable": {
"post": {
"tags": ["Accounts"],
"summary": "Disables two step verification via SMS for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest"
}
}
},
"description": "The request body.Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "4: The password is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: The user ID is invalid.\r\n8: The user is not allowed to perform the requested action."
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_sms_disable"
}
}
},
"/v1/users/{userId}/configuration/sms/enable": {
"post": {
"tags": ["Accounts"],
"summary": "Enables two step verification via SMS for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "4: The password is invalid.\r\n15: The phone number is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: The user ID is invalid."
},
"503": {
"description": "7: Two step verification is currently under maintenance.\r\n8: The user is not allowed to perform the requested action."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__configuration_sms_enable"
}
}
},
"/v1/users/{userId}/currently-wearing": {
"get": {
"tags": ["Assets", "Avatars", "User profiles", "Users"],
"summary": "Gets a list of asset ids that the user is currently wearing.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetIdListModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetIdListModel"
}
}
}
},
"400": {
"description": "1: The specified user does not exist.\r\n2: An account for the given userId does not exist!"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#avatar_get_v1_users__userId__currently_wearing"
}
}
},
"/v1/users/{userId}/display-names": {
"patch": {
"tags": ["User profiles", "Users"],
"summary": "Set the display name for the authorized user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "the user id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.SetDisplayNameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Users.Api.SetDisplayNameRequest"
}
}
},
"description": "Roblox.Users.Api.SetDisplayNameRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: Display name is too short\r\n2: Display name is too long\r\n3: Display name contains invalid characters\r\n4: Display name has been moderated\r\n8: Display name has too many combinations of character sets"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n7: The user id is invalid."
},
"429": {
"description": "5: Display name updates for this user have been throttled"
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/user-profiles#users_patch_v1_users__userId__display_names"
}
}
},
"/v1/users/{userId}/display-names/validate": {
"get": {
"tags": ["Users"],
"summary": "Validate a display name for an existing user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "displayName",
"description": "The display name.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "1: Display name is too short\r\n2: Display name is too long\r\n3: Display name contains invalid characters\r\n4: Display name has been moderated\r\n8: Display name has too many combinations of character sets"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "7: The user id is invalid."
},
"429": {
"description": "5: Display name updates for this user have been throttled"
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/users#users_get_v1_users__userId__display_names_validate"
}
}
},
"/v1/users/{userId}/friends/statuses": {
"get": {
"tags": ["Connections", "Users"],
"summary": "Gets a list of friend statuses of specified users against the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user to check the friend statuses against.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "userIds",
"description": "",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.FriendStatusResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.FriendStatusResponse_"
}
}
}
},
"400": {
"description": "1: The target user is invalid or does not exist.\r\n15: Too many ids.\r\n16: Invalid ids."
}
},
"servers": [
{
"url": "https://friends.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/friends#friends_get_v1_users__userId__friends_statuses"
}
}
},
"/v1/users/{userId}/items/{itemType}/{itemTargetId}": {
"get": {
"tags": ["Assets", "Inventories", "Users"],
"summary": "Gets owned items of the specified item type. Game Servers can make requests for any user, but can only make requests for game passes that belong to the place sending the request.\nPlace creators can make requests as if they were the Game Server.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "ID of the user in question",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "itemType",
"description": "Type of the item in question (i.e. Asset, GamePass, Badge, Bundle)",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3, 4]
}
},
{
"in": "path",
"name": "itemTargetId",
"description": "ID of the item in question",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.IItemModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.IItemModel_"
}
}
}
},
"400": {
"description": "1: The specified user does not exist!\r\n5: The specified game pass does not exist! Are you using the new game pass ID?\r\n6: The specified item type does not exist.\r\n7: The specified Asset does not exist!\r\n10: The specified asset is not a badge!\r\n12: The specified bundle does not exist!"
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#inventory_get_v1_users__userId__items__itemType___itemTargetId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/cloud/v2/users/{user_id}/inventory-items",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/inventories#Cloud_ListInventoryItems"
}
]
}
},
"/v1/users/{userId}/items/{itemType}/{itemTargetId}/is-owned": {
"get": {
"tags": ["Inventories", "Users"],
"summary": "Gets whether a user owns an item of type itemType with id itemTargetId.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "ID of the user in question",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "itemType",
"description": "Type of the item in question (i.e. Asset, GamePass, Badge, Bundle)",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3, 4]
}
},
{
"in": "path",
"name": "itemTargetId",
"description": "ID of the item in question",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "boolean"
}
},
"text/json": {
"schema": {
"type": "boolean"
}
}
}
},
"400": {
"description": "1: The specified user does not exist!\r\n5: The specified game pass does not exist! Are you using the new game pass ID?\r\n6: The specified item type does not exist.\r\n7: The specified Asset does not exist!\r\n10: The specified asset is not a badge!\r\n12: The specified bundle does not exist!"
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/inventories#inventory_get_v1_users__userId__items__itemType___itemTargetId__is_owned"
}
}
},
"/v1/users/{userId}/outfits": {
"get": {
"tags": ["Avatars", "Users"],
"summary": "Deprecated, user v2.\r\nGets a list of outfits for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "outfitType",
"description": "The outfit type being searched for, null will return all outfitTypes.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "page",
"description": "The page number of the current page of requests, default is 1.",
"schema": {
"type": "integer",
"format": "int32",
"default": 1
}
},
{
"in": "query",
"name": "itemsPerPage",
"description": "The max number of outfits that can be returned.",
"schema": {
"type": "integer",
"format": "int32",
"default": 25
}
},
{
"in": "query",
"name": "isEditable",
"description": "Whether the outfits are editable. A null value will lead to no filtering.",
"schema": {
"type": "boolean"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "The placeId of the caller, not required to be passed in.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarFilteredPageResponse_Roblox.Api.Avatar.Models.OutfitModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarFilteredPageResponse_Roblox.Api.Avatar.Models.OutfitModel_"
}
}
}
},
"400": {
"description": "1: The specified user does not exist.\r\n2: An account for the given userId does not exist!"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v1_users__userId__outfits"
}
}
},
"/v1/users/{userId}/places/inventory": {
"get": {
"tags": ["Inventories", "Places", "Universes", "Users"],
"summary": "Gets Created, MyGames, or OtherGames places inventory for a user",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "placesTab",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3, 4, 5]
}
},
{
"in": "query",
"name": "itemsPerPage",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "cursor",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.PlaceModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.PlaceModel_"
}
}
}
},
"400": {
"description": "6: Invalid request"
},
"403": {
"description": "3: Insufficient permission."
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/inventories#inventory_get_v1_users__userId__places_inventory"
}
}
},
"/v1/users/{userId}/promotion-channels": {
"get": {
"tags": ["Accounts", "User profiles", "Users"],
"summary": "Get promotion channels for a given user ID",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The ID of the user to fetch the promotion channels for.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "alwaysReturnUrls",
"description": "Whether all promotion channel links should be returned as full URLs.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "filterLink",
"description": "Whether all promotion channel links should be filtered.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PromotionChannelsByUserIdResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PromotionChannelsByUserIdResponse"
}
}
}
},
"400": {
"description": "1: User not found."
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_get_v1_users__userId__promotion_channels"
}
}
},
"/v1/users/{userId}/recovery-codes": {
"get": {
"tags": ["Accounts"],
"summary": "Gets the current status of recovery codes for a user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RecoveryCodesStatusResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RecoveryCodesStatusResponse"
}
}
}
},
"400": {
"description": "2: The user ID is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_get_v1_users__userId__recovery_codes"
}
}
},
"/v1/users/{userId}/recovery-codes/clear": {
"post": {
"tags": ["Accounts"],
"summary": "Clears any existing recovery codes for the user.",
"description": "Clearing recovery codes voids any recovery codes previously generated for the user.\r\nNew recovery codes will have to be generated to pass two step verification via recovery code.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.ClearRecoveryCodesRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.ClearRecoveryCodesRequest"
}
}
},
"description": "The Roblox.TwoStepVerification.Api.ClearRecoveryCodesRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "2: The user ID is invalid.\r\n4: The password is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__recovery_codes_clear"
}
}
},
"/v1/users/{userId}/recovery-codes/regenerate": {
"post": {
"tags": ["Accounts"],
"summary": "Clears any existing recovery codes and generates a new batch of recovery codes.",
"description": "Two step verification recovery codes do not enforce that two step verification must be passed when logging in.\r\nAt least one two step verification media type must be enabled to trigger the two step verification flow.\r\nRecovery codes are intended to be used to pass two step verification when the enabled media type is unavailable.\r\n\r\nRecovery codes generated by this endpoint do not have an expiration.\r\n\r\nOnce a recovery code generated by this endpoint has been used it cannot be used again.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID to generate recovery codes for.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RegenerateRecoveryCodesRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RegenerateRecoveryCodesRequest"
}
}
},
"description": "The Roblox.TwoStepVerification.Api.RegenerateRecoveryCodesRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RegenerateRecoveryCodesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.RegenerateRecoveryCodesResponse"
}
}
}
},
"400": {
"description": "2: The user ID is invalid.\r\n4: The password is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"429": {
"description": "5: Too many requests."
},
"503": {
"description": "7: Two step verification is currently under maintenance."
}
},
"servers": [
{
"url": "https://twostepverification.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#twostepverification_post_v1_users__userId__recovery_codes_regenerate"
}
}
},
"/v1/users/{userId}/roblox-badges": {
"get": {
"tags": ["Accounts", "Badges", "User profiles", "Users"],
"summary": "Returns a list of Roblox badges belonging to a user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.RobloxBadgeResponse"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.RobloxBadgeResponse"
}
}
}
}
}
},
"servers": [
{
"url": "https://accountinformation.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountinformation_get_v1_users__userId__roblox_badges"
}
}
},
"/v1/users/{userId}/universes": {
"get": {
"tags": ["Interactions", "Universes", "Users"],
"summary": "Gets all the followings between a user with userId and universes",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.UserFollowingUniverseResponse"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.UserFollowingUniverseResponse"
}
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "User is not authorized for this action."
}
},
"servers": [
{
"url": "https://followings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#followings_get_v1_users__userId__universes"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-followings/v1/users/{userId}/universes",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/interactions#get_legacy_followings_v1_users__userId__universes"
}
]
}
},
"/v1/users/{userId}/universes/{universeId}": {
"delete": {
"tags": ["Interactions", "Universes", "Users"],
"summary": "Deletes the following between a user with userId and universe with universeId",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "universeId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.UserFollowingUniverseResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.UserFollowingUniverseResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "User is not authorized for this action.\r\n0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://followings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#followings_delete_v1_users__userId__universes__universeId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-followings/v1/users/{userId}/universes/{universeId}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/interactions#delete_legacy_followings_v1_users__userId__universes__universeId_"
}
]
},
"post": {
"tags": ["Interactions", "Universes", "Users"],
"summary": "Creates the following between a user with userId and universe with universeId",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "universeId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.UserFollowingUniverseResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.UserFollowingUniverseResponse"
}
}
}
},
"400": {
"description": "The user has reached the limit of number of followed universes."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "User is not authorized for this action.\r\n0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://followings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#followings_post_v1_users__userId__universes__universeId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-followings/v1/users/{userId}/universes/{universeId}",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/interactions#post_legacy_followings_v1_users__userId__universes__universeId_"
}
]
}
},
"/v1/users/{userId}/universes/{universeId}/status": {
"get": {
"tags": ["Interactions", "Universes", "Users"],
"summary": "Gets the status of a following relationship between a user and a universe.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "universeId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.UserFollowingUniverseStatusResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.UserFollowingUniverseStatusResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "User is not authorized for this action."
}
},
"servers": [
{
"url": "https://followings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#followings_get_v1_users__userId__universes__universeId__status"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-followings/v1/users/{userId}/universes/{universeId}/status",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/interactions#get_legacy_followings_v1_users__userId__universes__universeId__status"
}
]
}
},
"/v1/users/{userId}/username-history": {
"get": {
"tags": ["User profiles", "Users"],
"summary": "Retrieves the username history for a particular user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Users.Api.UsernameHistoryResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Users.Api.UsernameHistoryResponse_"
}
}
}
},
"400": {
"description": "3: The user id is invalid."
}
},
"servers": [
{
"url": "https://users.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/user-profiles#users_get_v1_users__userId__username_history"
}
}
},
"/v1/validators/email": {
"get": {
"tags": ["Accounts"],
"summary": "Tries to check if an email is valid",
"parameters": [
{
"in": "query",
"name": "Email",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.EmailValidationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.EmailValidationResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_validators_email"
}
}
},
"/v1/validators/recommendedUsernameFromDisplayName": {
"get": {
"tags": ["Accounts"],
"summary": "Validates the given display name, and if valid, will convert it to a valid username and return suggested username(s) if available.",
"parameters": [
{
"in": "query",
"name": "DisplayName",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "BirthDay",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_validators_recommendedUsernameFromDisplayName"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Validates the given display name, and if valid, will convert it to a valid username and return suggested username(s) if available.\n \nThis is a POST request and explicitly does not receive the parameter values from the query",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameFromDisplayNameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameFromDisplayNameRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameResponse"
}
}
}
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_validators_recommendedUsernameFromDisplayName"
}
}
},
"/v1/validators/username": {
"get": {
"tags": ["Accounts"],
"summary": "Tries to get a valid username if the current username is taken",
"parameters": [
{
"in": "query",
"name": "Username",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "BirthDay",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_validators_username"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Tries to get a valid username if the current username is taken\nThis is a POST request and explicitly does not receive the parameter values from the query",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecommendedUsernameResponse"
}
}
}
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_validators_username"
}
}
},
"/v1/xbox/connection": {
"get": {
"tags": ["Accounts"],
"summary": "Check if the current user has an Xbox connected.\nAlso returns the gamertag of the Xbox account if connected.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.XboxConnectionModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.XboxConnectionModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": ""
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_xbox_connection"
}
}
},
"/v1/xbox/disconnect": {
"post": {
"tags": ["Accounts"],
"summary": "Unlink the current ROBLOX account from the Xbox live account.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiSuccessResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Forbidden\r\n0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_xbox_disconnect"
}
}
},
"/v1/xbox/get-login-consecutive-days": {
"get": {
"tags": ["Accounts"],
"summary": "Get the consecutive days the xbox user has been logged in.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.XboxLoginConsecutiveDaysResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.XboxLoginConsecutiveDaysResponse"
}
}
}
},
"400": {
"description": "36: Invalid Xbox Live Account"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": ""
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v1_xbox_get_login_consecutive_days"
}
}
},
"/v1/xbox/translate": {
"post": {
"tags": ["Accounts"],
"summary": "Translate the xbox user to roblox user.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.XboxTranslateRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.XboxTranslateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.XboxCollectionsOfUserResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.XboxCollectionsOfUserResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "\r\n0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v1_xbox_translate"
}
}
},
"/v2/android-binaries/{version}/channels/{channelName}": {
"get": {
"tags": ["Metadata"],
"summary": "Retrieve the Android binary information for a given version and channel name.",
"parameters": [
{
"in": "path",
"name": "version",
"description": "The version string of the application. i.e. 2.660.392",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "channelName",
"description": "The name of the channel. E.g. ZFlag, ZIntegration",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.AndroidBinaryResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.AndroidBinaryResponse"
}
}
}
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v2_android_binaries__version__channels__channelName_"
}
}
},
"/v2/asset": {
"get": {
"tags": ["Assets"],
"parameters": [
{
"in": "header",
"name": "Accept-Encoding",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "AssetType",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Usage-Context",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "id",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "userAssetId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "assetVersionId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "version",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "universeId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "clientInsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "scriptinsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "modulePlaceId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "serverplaceid",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "assetName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "hash",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "marAssetHash",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "marCheckSum",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "expectedAssetType",
"schema": {
"type": "string",
"default": ""
}
},
{
"in": "query",
"name": "skipSigningScripts",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "permissionContext",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "doNotFallbackToBaselineRepresentation",
"schema": {
"type": "boolean"
}
},
{
"in": "query",
"name": "contentRepresentationPriorityList",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "accessContext",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v2_asset"
}
}
},
"/v2/assetId/{assetId}": {
"get": {
"tags": ["Assets"],
"parameters": [
{
"in": "path",
"name": "assetId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Accept-Encoding",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "AssetType",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Usage-Context",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "skipSigningScripts",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "clientInsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "scriptinsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "modulePlaceId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "serverplaceid",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "expectedAssetType",
"schema": {
"type": "string",
"default": ""
}
},
{
"in": "query",
"name": "doNotFallbackToBaselineRepresentation",
"schema": {
"type": "boolean"
}
},
{
"in": "query",
"name": "contentRepresentationPriorityList",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "accessContext",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v2_assetId__assetId_"
}
}
},
"/v2/assetId/{assetId}/version/{versionNumber}": {
"get": {
"tags": ["Assets"],
"parameters": [
{
"in": "path",
"name": "assetId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "versionNumber",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "header",
"name": "Accept-Encoding",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "AssetType",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Usage-Context",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "skipSigningScripts",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "clientInsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "scriptinsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "modulePlaceId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "serverplaceid",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "expectedAssetType",
"schema": {
"type": "string",
"default": ""
}
},
{
"in": "query",
"name": "doNotFallbackToBaselineRepresentation",
"schema": {
"type": "boolean"
}
},
{
"in": "query",
"name": "contentRepresentationPriorityList",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "accessContext",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v2_assetId__assetId__version__versionNumber_"
}
}
},
"/v2/assets/batch": {
"post": {
"tags": ["Assets"],
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Browser-Asset-Request",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Assets.BatchAssetRequestItem"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Assets.BatchAssetRequestItem"
}
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_post_v2_assets_batch"
}
}
},
"/v2/assets/{assetId}/owners": {
"get": {
"tags": ["Assets", "Inventories", "Users"],
"summary": "Gets a list of owners of an asset.",
"parameters": [
{
"in": "path",
"name": "assetId",
"description": "The asset id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "Sorted by userAssetId",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.V2.AssetOwnerResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.V2.AssetOwnerResponse_"
}
}
}
},
"400": {
"description": "1: The asset id is invalid."
},
"403": {
"description": "2: You do not have permission to view the owners of this asset."
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#inventory_get_v2_assets__assetId__owners"
}
}
},
"/v2/auth/metadata": {
"get": {
"tags": ["Accounts", "Metadata"],
"summary": "Gets Auth meta data",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AuthMetaDataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AuthMetaDataResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_auth_metadata"
}
}
},
"/v2/avatar": {
"patch": {
"tags": ["Avatars"],
"summary": "Sets the avatar to the incoming avatar using field masks.",
"description": "Only allows items that you own, are not expired, and are wearable asset types.\r\nAny assets being worn before this method is called are automatically removed.\n\nPlease use PATCH v4/avatar",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.UpdateAvatarRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.UpdateAvatarRequestModel"
}
}
},
"description": "Model of avatar that we are updating to.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.UpdateAvatarResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.UpdateAvatarResponseModel"
}
}
}
},
"400": {
"description": "3: Invalid assetId\r\n5: Meta does not apply to specified asset type\r\n7: Required meta is not provided for the specific asset type"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"500": {
"description": "2: Failed to wear asset."
}
},
"deprecated": true,
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_patch_v2_avatar"
}
}
},
"/v2/avatar/avatar": {
"get": {
"tags": ["Avatars"],
"summary": "Returns details about the authenticated user's avatar.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "checkAssetAvailability",
"description": "Whether to return assets with availability status.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarModelV3"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarModelV3"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v2_avatar_avatar"
}
}
},
"/v2/avatar/set-body-colors": {
"post": {
"tags": ["Avatars"],
"summary": "Sets the authenticated user's body colors.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Platform.Avatar.BodyColorsModelV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Platform.Avatar.BodyColorsModelV2"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarApiSuccessResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"deprecated": true,
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"description": "Please use PATCH v4/avatar",
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v2_avatar_set_body_colors"
}
}
},
"/v2/avatar/set-wearing-assets": {
"post": {
"tags": ["Avatars"],
"summary": "Sets the avatar's current assets to the list.",
"description": "Only allows items that you own, are not expired, and are wearable asset types.\r\nAny assets being worn before this method is called are automatically removed.\n\nPlease use PATCH v4/avatar",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.WearRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.WearRequestModel"
}
}
},
"description": "Model of assets to be worn.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.WearResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.WearResponseModel"
}
}
}
},
"400": {
"description": "3: Invalid assetId\r\n5: Meta does not apply to specified asset type\r\n7: Required meta is not provided for the specific asset type"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"500": {
"description": "2: Failed to wear asset."
}
},
"deprecated": true,
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v2_avatar_set_wearing_assets"
}
}
},
"/v2/avatar/users/{userId}/avatar": {
"get": {
"tags": ["Avatars", "Users"],
"summary": "Returns details about a specified user's avatar.",
"description": "Includes assets, bodycolors, and playerAvatarType.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "checkAssetAvailability",
"description": "Whether to return assets with availability status.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarModelV3"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarModelV3"
}
}
}
},
"400": {
"description": "1: The specified user does not exist.\r\n2: An account for the given userId does not exist!"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v2_avatar_users__userId__avatar"
}
}
},
"/v2/avatar/users/{userId}/outfits": {
"get": {
"tags": ["Avatars", "Users"],
"summary": "Gets a list of outfits for the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "paginationToken",
"description": "The token received from the response to get the next page. For the first request, this value should be empty. Note : If no value is sent the 1st page will be returned.",
"schema": {
"type": "string",
"default": ""
}
},
{
"in": "query",
"name": "outfitType",
"description": "The outfit type being searched for, null will return all outfitTypes.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "page",
"description": "The page number of the current page of requests, default is 1.",
"schema": {
"type": "integer",
"format": "int32",
"default": 1
}
},
{
"in": "query",
"name": "itemsPerPage",
"description": "The max number of outfits that can be returned.",
"schema": {
"type": "integer",
"format": "int32",
"default": 25
}
},
{
"in": "query",
"name": "isEditable",
"description": "Whether the outfits are editable. A null value will lead to no filtering.",
"schema": {
"type": "boolean"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "The placeId of the caller, not required to be passed in.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarPageResponse_Roblox.Api.Avatar.Models.OutfitModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarPageResponse_Roblox.Api.Avatar.Models.OutfitModel_"
}
}
}
},
"400": {
"description": "1: The specified user does not exist.\r\n2: An account for the given userId does not exist!"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v2_avatar_users__userId__outfits"
}
}
},
"/v2/client-version/{binaryType}": {
"get": {
"tags": ["Metadata"],
"summary": "Get client version information for specific binary type",
"parameters": [
{
"in": "path",
"name": "binaryType",
"description": "Platform(WindowsPlayer, WindowsStudio, MacPlayer or MacStudio) for which we want the latest version",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.ClientVersionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.ClientVersionResponse"
}
}
}
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v2_client_version__binaryType_"
}
}
},
"/v2/client-version/{binaryType}/channel/{channelName}": {
"get": {
"tags": ["Metadata"],
"summary": "Get client version information for specific binary type",
"parameters": [
{
"in": "path",
"name": "binaryType",
"description": "Platform(WindowsPlayer, WindowsStudio, MacPlayer or MacStudio) for which we want the latest version",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "channelName",
"description": "Channel Name",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.ClientVersionResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.ClientVersionResponse"
}
}
}
},
"401": {
"description": "5: Not authorized to perform this action."
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v2_client_version__binaryType__channel__channelName_"
}
}
},
"/v2/collectible-items/{collectibleItemId}/owners": {
"get": {
"tags": ["Assets", "Inventories", "Users"],
"summary": "Gets a list of owners of a collectible item.",
"parameters": [
{
"in": "path",
"name": "collectibleItemId",
"description": "The collectible item ID.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string",
"default": ""
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [1, 2],
"default": 1
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.V2.CollectibleItemOwnerResponse_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.V2.CollectibleItemOwnerResponse_"
}
}
}
},
"400": {
"description": "1: The collectible item id is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "2: You do not have permission to view the owners of this item."
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#inventory_get_v2_collectible_items__collectibleItemId__owners"
}
}
},
"/v2/compression-dictionaries": {
"get": {
"tags": ["Metadata"],
"summary": "Returns a listing of all known compression dictionaries, including their SHA256 and creation date.\nThis will be sorted by creation date, with the most recent dictionaries first.",
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v2_compression_dictionaries"
}
}
},
"/v2/compression-dictionaries/{dictionarySha256}": {
"get": {
"tags": ["Metadata"],
"summary": "Returns the specified compression dictionary as a file download.",
"parameters": [
{
"in": "path",
"name": "dictionarySha256",
"description": "The SHA256 of the dictionary we wish to download.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v2_compression_dictionaries__dictionarySha256_"
}
}
},
"/v2/games/{universeId}/media": {
"get": {
"tags": ["Thumbnails", "Universes"],
"summary": "Get the game media data",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The id of the universe we get media data from.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "fetchAllExperienceRelatedMedia",
"description": "to tell if the API query is to fetch all related media for this experience",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Games.GameMediaItemResponseV2_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Games.GameMediaItemResponseV2_"
}
}
}
},
"400": {
"description": "3: The universe's root place is invalid."
},
"404": {
"description": "2: The requested universe does not exist."
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#games_get_v2_games__universeId__media"
}
}
},
"/v2/groups/{groupId}/invitations": {
"get": {
"summary": "List open invitations to a group",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "Cursor",
"in": "query",
"description": "Cursor returned by a previous page. Omit for the first page.",
"schema": {
"type": "string"
}
},
{
"name": "Limit",
"in": "query",
"description": "Page size: 10, 25, 50, or 100. Defaults to 10.",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "SortOrder",
"in": "query",
"description": "Sort order. Only `Asc` is currently supported; defaults to `Asc`.",
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.SortOrder"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitationCursorPageResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
]
},
"post": {
"summary": "Invite a user to a group",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "isSecure",
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/CreateGroupInvitationRequestModel"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateGroupInvitationRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/CreateGroupInvitationRequestModel"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/CreateGroupInvitationRequestModel"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitation"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
]
}
},
"/v2/groups/{groupId}/invitations/{invitationId}": {
"delete": {
"summary": "Revoke an invitation to a group (member manager)",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "invitationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SuccessResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
]
},
"get": {
"summary": "Get an invitation to a group",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "invitationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitation"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
]
},
"patch": {
"summary": "Accept or decline an invitation to a group (recipient)",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "invitationId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json-patch+json": {
"schema": {
"$ref": "#/components/schemas/UpdateGroupInvitationRequestModel"
}
},
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateGroupInvitationRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/UpdateGroupInvitationRequestModel"
}
},
"application/*+json": {
"schema": {
"$ref": "#/components/schemas/UpdateGroupInvitationRequestModel"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SuccessResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
]
}
},
"/v2/groups/{groupId}/roles/{roleId}/invitations": {
"get": {
"summary": "List open invitations to a group that grant a role",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "roleId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "Cursor",
"in": "query",
"description": "Cursor returned by a previous page. Omit for the first page.",
"schema": {
"type": "string"
}
},
{
"name": "Limit",
"in": "query",
"description": "Page size: 10, 25, 50, or 100. Defaults to 10.",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "SortOrder",
"in": "query",
"description": "Sort order. Only `Asc` is currently supported; defaults to `Asc`.",
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.SortOrder"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitationCursorPageResponse"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
]
}
},
"/v2/groups/{groupId}/users/{userId}/invitation": {
"get": {
"summary": "Get the open invitation to a group for a user",
"parameters": [
{
"name": "groupId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "userId",
"in": "path",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GroupInvitation"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
},
"500": {
"description": "Server Error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorResponse"
}
}
}
}
},
"servers": [
{
"url": "https://groups.roblox.com"
}
],
"x-roblox-stability": "BETA",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
]
}
},
"/v2/identity-verification/login": {
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for login with identity verification",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.IdentityVerificationLoginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.IdentityVerificationLoginRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"403": {
"description": "0: Token Validation Failed\r\n1: Invalid login ticket.\r\n2: Invalid result token.\r\n3: Invalid user.\r\n4: Authentication failure.\r\n44: Login is unavailable in your country."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_identity_verification_login"
}
}
},
"/v2/inventory/asset/{assetId}": {
"delete": {
"tags": ["Assets", "Inventories"],
"summary": "Give up an asset owned by the authenticated user.\nAssets that are created by Roblox user or are limited edition are not eligible for deletion\nand will return NotEligibleForDelete.",
"parameters": [
{
"in": "path",
"name": "assetId",
"description": "ID of the asset to delete.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n4: You are not authorized."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You don't own the specified item.\r\n3: The item is not allowed to be deleted."
},
"404": {
"description": "1: The item does not exist."
},
"500": {
"description": "0: An unknown error occured."
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#inventory_delete_v2_inventory_asset__assetId_"
}
}
},
"/v2/login": {
"post": {
"tags": ["Accounts"],
"summary": "Authenticates a user.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginRequest"
}
}
},
"description": "Roblox.Authentication.Api.Models.LoginRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
}
}
},
"400": {
"description": "0: An unexpected error occurred.\r\n3: Username and Password are required. Please try again.\r\n8: Login with received credential type is not supported."
},
"403": {
"description": "0: Token Validation Failed\r\n1: Incorrect username or password. Please try again.\r\n2: You must pass the robot test before logging in.\r\n4: Account has been locked. Please request a password reset.\r\n5: Unable to login. Please use Social Network sign on.\r\n6: Account issue. Please contact Support.\r\n9: Unable to login with provided credentials. Default login is required.\r\n10: Received credentials are unverified.\r\n12: Existing login session found. Please log out first.\r\n14: The account is unable to log in. Please log in to the LuoBu app.\r\n15: Too many attempts. Please wait a bit.\r\n27: The account is unable to login. Please log in with the VNG app.\r\n44: Login is unavailable in your country."
},
"429": {
"description": "7: Too many attempts. Please wait a bit."
},
"503": {
"description": "11: Service unavailable. Please try again."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_login"
}
}
},
"/v2/login/linked": {
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for logging in a user, specifically for linked\nauthentication on PCGDK",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginRequest"
}
}
},
"description": "Roblox.Authentication.Api.Models.LoginRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
}
}
},
"400": {
"description": "0: An unexpected error occurred.\r\n3: Username and Password are required. Please try again.\r\n8: Login with received credential type is not supported."
},
"403": {
"description": "0: Token Validation Failed\r\n1: Incorrect username or password. Please try again.\r\n2: You must pass the robot test before logging in.\r\n4: Account has been locked. Please request a password reset.\r\n5: Unable to login. Please use Social Network sign on.\r\n6: Account issue. Please contact Support.\r\n9: Unable to login with provided credentials. Default login is required.\r\n10: Received credentials are unverified.\r\n12: Existing login session found. Please log out first.\r\n14: The account is unable to log in. Please log in to the LuoBu app.\r\n15: Too many attempts. Please wait a bit.\r\n27: The account is unable to login. Please log in with the VNG app.\r\n43: This account is not eligible for this platform.\r\n44: Login is unavailable in your country."
},
"429": {
"description": "7: Too many attempts. Please wait a bit."
},
"503": {
"description": "11: Service unavailable. Please try again."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_login_linked"
}
}
},
"/v2/logout": {
"post": {
"tags": ["Accounts"],
"summary": "Destroys the current authentication session.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_logout"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://auth.roblox.com/v3/logout",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v3_logout"
}
]
}
},
"/v2/logoutfromallsessionsandreauthenticate": {
"post": {
"tags": ["Accounts"],
"summary": "Logs out user from all other sessions.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.LogoutFromAllSessionsAndReauthenticateRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.LogoutFromAllSessionsAndReauthenticateRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_logoutfromallsessionsandreauthenticate"
}
}
},
"/v2/marAssetHash/{marAssetHash}/marCheckSum/{marCheckSum}": {
"get": {
"tags": ["Assets"],
"parameters": [
{
"in": "path",
"name": "marAssetHash",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "path",
"name": "marCheckSum",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Accept-Encoding",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "AssetType",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-AssetFormat",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "skipSigningScripts",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "clientInsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "scriptinsert",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "modulePlaceId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "serverplaceid",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "expectedAssetType",
"schema": {
"type": "string",
"default": ""
}
}
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://assetdelivery.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#assetdelivery_get_v2_marAssetHash__marAssetHash__marCheckSum__marCheckSum_"
}
}
},
"/v2/metadata": {
"get": {
"tags": ["Accounts", "Metadata"],
"summary": "Get the metadata",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.MetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.MetadataResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_metadata"
}
}
},
"/v2/ota-version/{binaryType}": {
"get": {
"tags": ["Metadata"],
"summary": "Get OTA information for a specific binary type with a given version on some channel.\nReturns empty list if no updates are found or channel/application with the given version does not exist in CVS.",
"parameters": [
{
"in": "path",
"name": "binaryType",
"description": "Binary type of the application to get info for",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "channel",
"description": "Channel name. If not provided, production is assumed.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "version",
"description": "Application version",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "tag",
"description": "Tag to filter results by. Only applicable to non-studio application types.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "name",
"description": "Name to filter results by. Only applicable to non-studio application types.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.OtaVersionResponse"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.OtaVersionResponse"
}
}
}
}
},
"400": {
"description": "2: Invalid binaryType.\r\n4: Invalid app version.\r\n6: Missing or invalid channel.\r\n7: Unsupported binaryType."
},
"401": {
"description": "5: Not authorized to perform this action."
},
"501": {
"description": "9: The requested tag is not implemented."
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v2_ota_version__binaryType_"
}
}
},
"/v2/outfits/create": {
"post": {
"tags": ["Avatars"],
"summary": "Creates a new outfit.",
"description": "Fails if any of the assetIds are not owned by the user, or not wearable types.\r\nThe name property of the request is optional as one will be auto-generated when the request has a null name.\n\nPlease use POST v4/outfits/create",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitUpdateModelV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitUpdateModelV2"
}
}
},
"description": "The new outfit.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "3: Body colors must be valid BrickColor IDs\r\n4: Invalid outfit name\r\n5: Asset is not wearable by you and was not added to the outfit\r\n7: Invalid Player Avatar Type. Valid types are R6 and R15\r\n8: Invalid assetIds\r\n9: Meta does not apply to specified asset type\r\n10: Required meta is not provided for the specific asset type\r\n12: Outfit type invalid or not permitted\r\n13: Invalid Scale"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n1: You already have the maximum number of outfits"
},
"500": {
"description": "6: An error occurred while creating the outfit"
}
},
"deprecated": true,
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v2_outfits_create"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://avatar.roblox.com/v3/outfits/create",
"httpMethod": "POST",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v3_outfits_create"
}
]
}
},
"/v2/outfits/{userOutfitId}": {
"patch": {
"tags": ["Avatars"],
"summary": "Updates the contents of an outfit.",
"description": "Fails if the user does not own any of the assetIds or if they are not wearable asset types.\r\nAccepts partial updates.\n\nPlease use PATCH v4/outfits/{outfitId}",
"parameters": [
{
"in": "path",
"name": "userOutfitId",
"description": "The user outfit id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitUpdateModelV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitUpdateModelV2"
}
}
},
"description": "The updated outfit.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitModel"
}
}
}
},
"400": {
"description": "3: Body colors must be valid BrickColor IDs\r\n4: Invalid outfit name\r\n5: Asset is not wearable by you\r\n8: Invalid Player Avatar Type. Valid types are R6 and R15\r\n11: Meta does not apply to specified asset type\r\n12: Meta is required for this specific asset type\r\n13: Invalid Outfit Type\r\n14: Invalid scale"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You don't have permission to update this outfit."
},
"404": {
"description": "1: The specified userOutfit does not exist!"
},
"500": {
"description": "6: An error occurred while trying to update the outfit"
}
},
"deprecated": true,
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_patch_v2_outfits__userOutfitId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://avatar.roblox.com/v3/outfits/{userOutfitId}",
"httpMethod": "PATCH",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_patch_v3_outfits__userOutfitId_"
}
]
}
},
"/v2/passwords/current-status": {
"get": {
"tags": ["Accounts"],
"summary": "Returns password status for current user, asynchronously.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordStatusResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordStatusResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_passwords_current_status"
}
}
},
"/v2/passwords/reset": {
"get": {
"tags": ["Accounts", "Metadata"],
"summary": "Gets metadata needed for the password reset view.",
"parameters": [
{
"in": "query",
"name": "TargetType",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2]
}
},
{
"in": "query",
"name": "Ticket",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordResetMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordResetMetadataResponse"
}
}
}
},
"400": {
"description": "3: Request was empty.\r\n9: The target type is invalid.\r\n11: The password reset ticket is invalid.\r\n14: The nonce is invalid."
},
"403": {
"description": "11: The password reset ticket is invalid.\r\n16: The ticket is expired."
},
"500": {
"description": "0: Unknown error occured."
},
"503": {
"description": "1: Feature temporarily disabled. Please try again later."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_passwords_reset"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Resets a password for a user that belongs to the password reset ticket.",
"description": "This will log the user out of all sessions and re-authenticate.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordResetModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordResetModel"
}
}
},
"description": "The request model including the target type, ticket, user id, and new password, Roblox.Authentication.Api.Models.PasswordResetModel",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
}
}
},
"400": {
"description": "3: Request was empty.\r\n11: The password reset ticket is invalid.\r\n12: The user is invalid.\r\n20: The password is invalid.\r\n21: Passwords do not match."
},
"403": {
"description": "0: Token Validation Failed\r\n16: The ticket is expired.\r\n17: The nonce is expired.\r\n44: Login is unavailable in your country."
},
"500": {
"description": "0: Unknown error occured."
},
"503": {
"description": "1: Feature temporarily disabled. Please try again later."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_passwords_reset"
}
}
},
"/v2/passwords/reset/send": {
"post": {
"tags": ["Accounts"],
"summary": "Sends a password reset email or challenge to the specified target.",
"description": "Phone target must be a csv with 3 values: \"internationalPrefixNumber,nationalNumber,countryCode\"",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SendResetPasswordRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SendResetPasswordRequest"
}
}
},
"description": "The request model containing the target type and a target.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SendResetPasswordResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SendResetPasswordResponse"
}
}
}
},
"400": {
"description": "3: Request was empty.\r\n9: The target type is invalid.\r\n10: The target is invalid.\r\n12: The user is invalid."
},
"403": {
"description": "0: Token Validation Failed\r\n18: Captcha is required.\r\n23: Authenticate with Luobu instead."
},
"429": {
"description": "2: Too many attempts. Please try again later."
},
"500": {
"description": "0: Unknown error occured.\r\n19: Message could not be sent."
},
"503": {
"description": "1: Feature temporarily disabled. Please try again later."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_passwords_reset_send"
}
}
},
"/v2/passwords/reset/verify": {
"post": {
"tags": ["Accounts"],
"summary": "Verifies a password reset challenge solution.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordResetVerificationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordResetVerificationRequest"
}
}
},
"description": "The request model containing the nonce and the solution. Roblox.Authentication.Api.Models.PasswordResetVerificationRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordResetVerificationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordResetVerificationResponse"
}
}
}
},
"400": {
"description": "3: Request was empty.\r\n9: The target type is invalid.\r\n14: The nonce is invalid."
},
"403": {
"description": "0: Token Validation Failed\r\n13: The code is invalid."
},
"500": {
"description": "0: Unknown error occured."
},
"503": {
"description": "1: Feature temporarily disabled. Please try again later."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_passwords_reset_verify"
}
}
},
"/v2/passwords/validate": {
"get": {
"tags": ["Accounts"],
"summary": "Endpoint for checking if a password is valid.",
"parameters": [
{
"in": "query",
"name": "Username",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "Password",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationResponse"
}
}
}
},
"400": {
"description": "1: Valid Username and Password are required. Please try again."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_passwords_validate"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for checking if a password is valid.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationModel"
}
}
},
"description": "The Roblox.Authentication.Api.Models.PasswordValidationModel.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordValidationResponse"
}
}
}
},
"400": {
"description": "1: Valid Username and Password are required. Please try again."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_passwords_validate"
}
}
},
"/v2/places/{placeId}": {
"get": {
"tags": ["Places"],
"summary": "Gets the place configuration for the place with the id placeId",
"parameters": [
{
"in": "path",
"name": "placeId",
"description": "The place id for the place to be updated.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceModelV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceModelV2"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Authenticated user is not authorized to manage this place."
},
"404": {
"description": "placeId Place not found."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#develop_get_v2_places__placeId_"
}
},
"patch": {
"tags": ["Places"],
"summary": "Updates the place configuration for the place with the id placeId",
"parameters": [
{
"in": "path",
"name": "placeId",
"description": "The place id for the place to be updated.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceConfigurationModelV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceConfigurationModelV2"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceModelV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceModelV2"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Authenticated user is not authorized to manage this place.\r\n0: Token Validation Failed"
},
"404": {
"description": "placeId Place not found."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#develop_patch_v2_places__placeId_"
}
}
},
"/v2/push-notifications/chrome-manifest": {
"get": {
"tags": ["Metadata", "Notifications"],
"summary": "Get Chrome Manifest to link GCM project to Chrome Browser",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.ChromeManifestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.ChromeManifestModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#notifications_get_v2_push_notifications_chrome_manifest"
}
}
},
"/v2/push-notifications/deregister-all-devices": {
"post": {
"tags": ["Notifications"],
"summary": "De-register all devices to disable push notifications",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.SuccessResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.SuccessResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_post_v2_push_notifications_deregister_all_devices"
}
}
},
"/v2/push-notifications/deregister-current-device": {
"post": {
"tags": ["Notifications"],
"summary": "De-register current device to disable push notifications",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.SuccessResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.SuccessResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_post_v2_push_notifications_deregister_current_device"
}
}
},
"/v2/push-notifications/deregister-current-device-ios-pushkit": {
"post": {
"tags": ["Notifications"],
"summary": "De-register current device to disable pushkit notifications",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.SuccessResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.SuccessResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_post_v2_push_notifications_deregister_current_device_ios_pushkit"
}
}
},
"/v2/push-notifications/get-current-device-destination": {
"get": {
"tags": ["Metadata", "Notifications"],
"summary": "Gets the current device destination",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.GetCurrentPushDestinationResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.GetCurrentPushDestinationResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#notifications_get_v2_push_notifications_get_current_device_destination"
}
}
},
"/v2/push-notifications/get-destinations": {
"get": {
"tags": ["Accounts", "Notifications"],
"summary": "Gets valid destinations associated with the signed user",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.GetPushDestinationsResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.GetPushDestinationsResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#notifications_get_v2_push_notifications_get_destinations"
}
}
},
"/v2/push-notifications/metadata": {
"get": {
"tags": ["Metadata", "Notifications"],
"summary": "Gets the corresponding metadata for the specified notification",
"parameters": [
{
"in": "query",
"name": "notificationToken",
"description": "Token for the notification",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "notificationId",
"description": "Id of the specified notification",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.GetMetadataResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.GetMetadataResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#notifications_get_v2_push_notifications_metadata"
}
}
},
"/v2/push-notifications/register-android-native": {
"post": {
"tags": ["Notifications"],
"summary": "Register Android Native for push notifications",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegisterAndroidRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegisterAndroidRequestModel"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegistrationResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegistrationResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_post_v2_push_notifications_register_android_native"
}
}
},
"/v2/push-notifications/register-ios-native": {
"post": {
"tags": ["Notifications"],
"summary": "Registers IOS device for push notifications",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegisterIOSNativeRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegisterIOSNativeRequestModel"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegistrationResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegistrationResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_post_v2_push_notifications_register_ios_native"
}
}
},
"/v2/push-notifications/register-ios-pushkit": {
"post": {
"tags": ["Notifications"],
"summary": "Registers IOS device for pushkit notifications",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegisterIOSPushKitRequestModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegisterIOSPushKitRequestModel"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegistrationResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.RegistrationResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_post_v2_push_notifications_register_ios_pushkit"
}
}
},
"/v2/recovery/metadata": {
"get": {
"tags": ["Accounts", "Metadata"],
"summary": "Get metadata for forgot endpoints",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoveryMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoveryMetadataResponse"
}
}
}
},
"503": {
"description": "7: The Roblox WeChat API is currently unavailable."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_recovery_metadata"
}
}
},
"/v2/revert/account": {
"get": {
"tags": ["Accounts"],
"summary": "Get Revert Account ticket info",
"parameters": [
{
"in": "query",
"name": "ticket",
"description": "Ticket Guid to revert account.",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RevertAccountInfoResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RevertAccountInfoResponse"
}
}
}
},
"400": {
"description": "2: The account revert ticket is not valid"
},
"403": {
"description": "13: Revert links are disabled for users in the Enhanced Protection Program."
},
"503": {
"description": "1: This feature is disabled"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_revert_account"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Submit Revert Account Request",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RevertAccountSubmitRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RevertAccountSubmitRequest"
}
}
},
"description": "The Roblox.Authentication.Api.Models.RevertAccountSubmitRequest containing the necessary information to revert account.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginResponse"
}
}
}
},
"400": {
"description": "2: The account revert ticket is not valid\r\n3: Password is not valid\r\n4: Passwords do not match\r\n5: Password cannot be used\r\n8: The account security ticket is expired."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "0: Unknown\r\n1: This feature is disabled"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_revert_account"
}
}
},
"/v2/revert/invalidate-tickets": {
"post": {
"tags": ["Accounts"],
"summary": "Invalidates all account security tickets for the authenticated user.\nThis endpoint should be called before enrolling in EPP to ensure old revert links cannot be used.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "1: This feature is disabled"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_revert_invalidate_tickets"
}
}
},
"/v2/search/items/details": {
"get": {
"tags": ["Assets", "Avatars"],
"summary": "Search for catalog items.",
"description": "This endpoint is for search by item type ids.",
"parameters": [
{
"in": "query",
"name": "Taxonomy",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "AssetTypeIds",
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int32",
"type": "integer"
}
}
},
{
"in": "query",
"name": "BundleTypeIds",
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int32",
"type": "integer"
}
}
},
{
"in": "query",
"name": "CategoryFilter",
"description": "The category filter types, representing generic collections of catalog items requested by client. ['None' = 0, 'Featured' = 1, 'Collectibles' = 2, 'CommunityCreations' = 3, 'Landing' = 4, 'Premium' = 5, 'Recommended' = 6, 'HighDefinition' = 7]",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3, 4, 5, 6, 7]
}
},
{
"in": "query",
"name": "SortAggregation",
"description": " ['Past12Hours' = 0, 'PastDay' = 1, 'Past3Days' = 2, 'PastWeek' = 3, 'PastMonth' = 4, 'AllTime' = 5]",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3, 4, 5]
}
},
{
"in": "query",
"name": "SortType",
"description": "Price values to be consolidated after roll out to api site. ['Relevance' = 0, 'Favorited' = 1, 'Sales' = 2, 'Created' = 3, 'Updated' = 3, 'PriceAsc' = 4, 'PriceDesc' = 5]",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3, 4, 5]
}
},
{
"in": "query",
"name": "CreatorType",
"description": " ['All' = 0, 'User' = 1, 'Group' = 2]",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2]
}
},
{
"in": "query",
"name": "CreatorTargetId",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "CreatorName",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "MaxPrice",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "MinPrice",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "Keyword",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "IncludeNotForSale",
"schema": {
"type": "boolean"
}
},
{
"in": "query",
"name": "TriggeredByTopicDiscovery",
"schema": {
"type": "boolean"
}
},
{
"in": "query",
"name": "SalesTypeFilter",
"description": "The Sales Type filter options for search. ['Unknown' = 0, 'All' = 1, 'Collectibles' = 2, 'Premium' = 3, 'TimedOptions' = 4]",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3, 4]
}
},
{
"in": "query",
"name": "Topics",
"description": "The input topics format is split by \",\". E.g \"topics=cat,hat,red\".",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 28, 30, 60, 120],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "string",
"enum": ["Desc"],
"default": "Desc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.CatalogSearchPageResponse_Roblox.Catalog.Api.CatalogSearchDetailedResponseItemV2_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.CatalogSearchPageResponse_Roblox.Catalog.Api.CatalogSearchDetailedResponseItemV2_"
}
}
}
},
"400": {
"description": "1: Category subcategory selection not supported.\r\n2: Creator id not found.\r\n3: Creator type not found or cannot search by CreatorTargetId with CreatorType.All\r\n4: Genre not found.\r\n5: Sort combination not supported.\r\n6: Invalid price range.\r\n10: StartRequest is invalid."
},
"403": {
"description": "7: User is unauthorized.\r\n22: In-experience search is denied for this place or universe."
},
"429": {
"description": "8: The flood limit has been exceeded.\r\n8: The flood limit has been exceeded."
},
"503": {
"description": "18: Search request timed out"
}
},
"servers": [
{
"url": "https://catalog.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v2_search_items_details"
}
}
},
"/v2/session/refresh": {
"post": {
"tags": ["Accounts"],
"summary": "Logs out user from the current session and create a new one.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_session_refresh"
}
}
},
"/v2/signup": {
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for signing up a new user",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Authentication.Api.Models.SignupRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupResponse"
}
}
}
},
"400": {
"description": "Bad request\r\n16: User agreement ids are null.\r\n21: Empty account switch blob required"
},
"403": {
"description": "0: Token Validation Failed\r\n2: Captcha Failed.\r\n4: Invalid Birthday.\r\n5: Invalid Username.\r\n6: Username already taken.\r\n7: Invalid Password.\r\n8: Password and Username are same.\r\n9: Password is too simple.\r\n10: Email is invalid.\r\n11: Asset is invalid.\r\n12: Too many attempts. Please wait a bit.\r\n17: One time Passcode session was not valid\r\n22: Maximum logged in accounts limit reached.\r\n44: Login is unavailable in your country."
},
"429": {
"description": "3: Too many attempts. Please wait a bit."
},
"500": {
"description": "Internal server error\r\n15: Insert acceptances failed.\r\n27: Pre-auth passkey registration failed"
},
"503": {
"description": "Service unavailable"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_signup"
}
}
},
"/v2/signup/linked": {
"post": {
"tags": ["Accounts"],
"summary": "Endpoint for signing up a new user through linked authentication.",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Authentication.Api.Models.SignupRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupResponse"
}
}
}
},
"400": {
"description": "Bad request\r\n16: User agreement ids are null.\r\n21: Empty account switch blob required"
},
"403": {
"description": "0: Token Validation Failed\r\n2: Captcha Failed.\r\n4: Invalid Birthday.\r\n5: Invalid Username.\r\n6: Username already taken.\r\n7: Invalid Password.\r\n8: Password and Username are same.\r\n9: Password is too simple.\r\n10: Email is invalid.\r\n11: Asset is invalid.\r\n12: Too many attempts. Please wait a bit.\r\n17: One time Passcode session was not valid\r\n22: Maximum logged in accounts limit reached.\r\n29: Account Linking already exists on this account\r\n30: Account Linking required but failed\r\n44: Login is unavailable in your country."
},
"429": {
"description": "3: Too many attempts. Please wait a bit."
},
"500": {
"description": "Internal server error\r\n15: Insert acceptances failed.\r\n27: Pre-auth passkey registration failed\r\n30: Account Linking required but failed"
},
"503": {
"description": "30: Account Linking required but failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_signup_linked"
}
}
},
"/v2/sponsored-campaigns": {
"get": {
"tags": ["Advertising"],
"summary": "Gets a page of Roblox.AdConfiguration.Api.SponsoredCampaignModel with specified input parameters.",
"parameters": [
{
"in": "query",
"name": "campaignTargetType",
"description": "The campaign target type enum value",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3]
}
},
{
"in": "query",
"name": "campaignTargetId",
"description": "The id of the campaign target",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "includeReportingStats",
"description": "Indicates whether to include reporting stats in the response",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "isArchived",
"description": "Indicates whether to retrieve archived ads",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "pageCursor",
"description": "The cursor of the page to retrieve. If empty, fetches the first page",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.GetSponsoredCampaignsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.GetSponsoredCampaignsResponse"
}
}
}
},
"400": {
"description": "22: Invalid campaign target ID.\r\n23: Invalid campaign target type."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"503": {
"description": "1: This feature is disabled."
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_get_v2_sponsored_campaigns"
}
}
},
"/v2/sponsored-campaigns/create": {
"post": {
"tags": ["Advertising"],
"summary": "Creates a complete ad. Including ad campaign, ad set, escrow, and the ad.\r\nCurrently intended for creation of sponsorships only.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.CreateSponsoredCampaignRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.CreateSponsoredCampaignRequest"
}
}
},
"description": "Roblox.AdConfiguration.Api.Models.CreateSponsoredCampaignRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"format": "int64",
"type": "integer"
}
},
"text/json": {
"schema": {
"format": "int64",
"type": "integer"
}
}
}
},
"400": {
"description": "2: Daily budget is lower than minimum allowed.\r\n3: Total budget must be greater than 0.\r\n4: Ad name cannot be empty.\r\n5: Start date must not be a future date.\r\n6: End date must be a future date.\r\n7: Start date must be earlier than end date.\r\n8: Total budget does not match daily spend and number of days being scheduled\r\n9: Cannot load the universe for the specified universe id.\r\n11: Invalid target age bracket.\r\n12: Invalid target gender.\r\n13: Invalid target device type.\r\n14: Invalid ad set id.\r\n15: Ad name cannot exceed 255 characters.\r\n16: Insufficient Robux balance.\r\n17: Name has already been taken.\r\n18: Daily budget is higher than maximum allowed.\r\n19: Invalid group id.\r\n20: Number of days scheduled exceeded maximum days allowed.\r\n21: Your experience is currently not eligible for advertising.\r\n22: Invalid campaign target ID.\r\n23: Invalid campaign target type.\r\n24: Invalid creative ID.\r\n25: Invalid creative type.\r\n28: Total budget must be campaign duration * daily bid\r\n29: The target is not eligible for new campaigns\r\n30: Invalid user ID"
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n10: Insufficient permissions."
},
"403": {
"description": "0: Token Validation Failed"
},
"500": {
"description": "0: An unknown error occurred.\r\n31: Internal server error"
},
"503": {
"description": "1: This feature is disabled."
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_post_v2_sponsored_campaigns_create"
}
}
},
"/v2/sponsored-campaigns/eligible-asset-type-ids": {
"get": {
"tags": ["Advertising"],
"summary": "Get all asset type IDs that are eligible to be sponsored.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"format": "int32",
"type": "integer"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"format": "int32",
"type": "integer"
}
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "10: Insufficient permissions."
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_get_v2_sponsored_campaigns_eligible_asset_type_ids"
}
}
},
"/v2/sponsored-campaigns/eligible-campaign-targets": {
"post": {
"tags": ["Advertising"],
"summary": "Returns a collection of Roblox.AdConfiguration.Api.Models.CampaignTargetModel that the user is authorized to sponsor, ordered by most recently advertised",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.GetEligibleCampaignTargetsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.GetEligibleCampaignTargetsRequest"
}
}
},
"description": "Roblox.AdConfiguration.Api.Models.GetEligibleCampaignTargetsRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.GetCampaignTargetsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.GetCampaignTargetsResponse"
}
}
}
},
"400": {
"description": "19: Invalid group id."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n10: Insufficient permissions."
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_post_v2_sponsored_campaigns_eligible_campaign_targets"
}
}
},
"/v2/sponsored-campaigns/multi-get-can-user-sponsor": {
"get": {
"tags": ["Advertising"],
"summary": "Checks whether the targets are eligible for sponsorship, and\r\nif the user is authorized to sponsor the targets.",
"parameters": [
{
"in": "query",
"name": "campaignTargetType",
"description": "Ads.Management.Service.CampaignTargetType.",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2, 3]
}
},
{
"in": "query",
"name": "campaignTargetIds",
"description": "The IDs of the campaign targets.",
"required": true,
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
}
},
"text/json": {
"schema": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Forbidden"
},
"500": {
"description": "Server Error"
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_get_v2_sponsored_campaigns_multi_get_can_user_sponsor"
}
}
},
"/v2/sponsored-campaigns/stop": {
"post": {
"tags": ["Advertising"],
"summary": "Stops a sponsored campaign / ad (ad set) from running. Initiated by a user.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.StopSponsoredCampaignRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.StopSponsoredCampaignRequest"
}
}
},
"description": "Roblox.AdConfiguration.Api.Models.StopSponsoredCampaignRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"format": "int64",
"type": "integer"
}
},
"text/json": {
"schema": {
"format": "int64",
"type": "integer"
}
}
}
},
"400": {
"description": "10: Insufficient permissions.\r\n14: Invalid ad set id.\r\n31: Internal server error"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"503": {
"description": "1: This feature is disabled."
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_post_v2_sponsored_campaigns_stop"
}
}
},
"/v2/sponsored-games": {
"get": {
"tags": ["Advertising"],
"summary": "Gets a page of Roblox.AdConfiguration.Api.SponsoredGameV2Model with specified input parameters.",
"parameters": [
{
"in": "query",
"name": "universeId",
"description": "The universe id of the ad campaign.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "includeReportingStats",
"description": "Indicates whether to include reporting stats in the response.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "isArchived",
"description": "Indicates whether to retrieve archived ads.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "pageCursor",
"description": "The cursor of the page to retrieve.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.GetSponsoredGamesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.GetSponsoredGamesResponse"
}
}
}
},
"400": {
"description": "9: Cannot load the universe for the specified universe id.\r\n9: Cannot load the universe for the specified universe id."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"503": {
"description": "1: This feature is disabled."
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_get_v2_sponsored_games"
}
}
},
"/v2/sponsored-games/create": {
"post": {
"tags": ["Advertising"],
"summary": "Creates a new sponsored game ad with specified input parameters.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.CreateSponsoredGameV2Request"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.CreateSponsoredGameV2Request"
}
}
},
"description": "Roblox.AdConfiguration.Api.CreateSponsoredGameV2Request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "2: Daily budget is lower than minimum allowed.\r\n3: Total budget must be greater than 0.\r\n4: Ad name cannot be empty.\r\n5: Start date must not be a future date.\r\n6: End date must be a future date.\r\n7: Start date must be earlier than end date.\r\n8: Total budget does not match daily spend and number of days being scheduled\r\n9: Cannot load the universe for the specified universe id.\r\n11: Invalid target age bracket.\r\n12: Invalid target gender.\r\n13: Invalid target device type.\r\n14: Invalid ad set id.\r\n15: Ad name cannot exceed 255 characters.\r\n16: Insufficient Robux balance.\r\n17: Name has already been taken.\r\n18: Daily budget is higher than maximum allowed.\r\n19: Invalid group id.\r\n20: Number of days scheduled exceeded maximum days allowed.\r\n21: Your experience is currently not eligible for advertising.\r\n22: Invalid campaign target ID.\r\n23: Invalid campaign target type.\r\n24: Invalid creative ID.\r\n25: Invalid creative type.\r\n28: Total budget must be campaign duration * daily bid\r\n29: The target is not eligible for new campaigns\r\n30: Invalid user ID"
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n10: Insufficient permissions."
},
"403": {
"description": "0: Token Validation Failed"
},
"500": {
"description": "0: An unknown error occurred.\r\n31: Internal server error"
},
"503": {
"description": "1: This feature is disabled."
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_post_v2_sponsored_games_create"
}
}
},
"/v2/sponsored-games/stop": {
"post": {
"tags": ["Advertising"],
"summary": "To stop a sponsored-game ad (ad set) from running, initiated by a user.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.StopSponsoredGameV2Request"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.StopSponsoredGameV2Request"
}
}
},
"description": "Roblox.AdConfiguration.Api.Models.StopSponsoredGameV2Request",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "14: Invalid ad set id."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n10: Insufficient permissions."
},
"503": {
"description": "1: This feature is disabled."
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_post_v2_sponsored_games_stop"
}
}
},
"/v2/sponsored-games/universes": {
"get": {
"tags": ["Advertising"],
"summary": "Gets a list of universes for the authenticated user, or the given group, ordered by most recently created sponsored game ads.",
"parameters": [
{
"in": "query",
"name": "groupId",
"description": "The group id, if applicable.",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.GetRecentAdsRankedUniversesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.GetRecentAdsRankedUniversesResponse"
}
}
}
},
"400": {
"description": "19: Invalid group id."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "10: Insufficient permissions."
}
},
"servers": [
{
"url": "https://adconfiguration.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/advertising#adconfiguration_get_v2_sponsored_games_universes"
}
}
},
"/v2/stream-notifications/clear-unread": {
"post": {
"tags": ["Notifications"],
"summary": "Clears the unread Notification stream count",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.SuccessResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.SuccessResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_post_v2_stream_notifications_clear_unread"
}
}
},
"/v2/stream-notifications/get-latest-game-updates": {
"get": {
"tags": ["Notifications", "Universes"],
"summary": "Get the latest non aggregated Game Updates sent to the logged in user",
"parameters": [
{
"in": "query",
"name": "universeIds",
"description": "List of universe IDs",
"required": true,
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
{
"in": "query",
"name": "sinceDateTime",
"description": "For retrieving only updates that created after a time point.",
"schema": {
"type": "string",
"format": "date-time"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.GameUpdateNotificationModel"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.GameUpdateNotificationModel"
}
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_get_v2_stream_notifications_get_latest_game_updates"
}
}
},
"/v2/stream-notifications/get-recent": {
"get": {
"tags": ["Notifications"],
"summary": "Gets the recent entries from the notification stream",
"parameters": [
{
"in": "query",
"name": "startIndex",
"description": "Index to start the entries from. (Optional : Defaults to 0 which means the most recent entry)",
"schema": {
"type": "integer",
"format": "int32",
"default": 0
}
},
{
"in": "query",
"name": "maxRows",
"description": "Number of entries to be returned. (Optional : Defaults to 10 entries)",
"schema": {
"type": "integer",
"format": "int32",
"default": 10
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.NotificationStreamEntriesModel"
}
}
},
"text/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.NotificationStreamEntriesModel"
}
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_get_v2_stream_notifications_get_recent"
}
}
},
"/v2/stream-notifications/metadata": {
"get": {
"tags": ["Metadata", "Notifications"],
"summary": "Get Notification Stream metadata.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.ResponseModels.NotificationStreamMetadataResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.ResponseModels.NotificationStreamMetadataResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#notifications_get_v2_stream_notifications_metadata"
}
}
},
"/v2/stream-notifications/unread-count": {
"get": {
"tags": ["Notifications"],
"summary": "Gets the count of unread Notification stream entries",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.UnreadStreamNotificationsModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.UnreadStreamNotificationsModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://notifications.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/notifications#notifications_get_v2_stream_notifications_unread_count"
}
}
},
"/v2/supported-languages/games/{gameId}": {
"get": {
"tags": ["Universes"],
"summary": "Get the supported languages for a game.",
"parameters": [
{
"in": "path",
"name": "gameId",
"description": "The id of the game.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageWithLocales_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageWithLocales_"
}
}
}
},
"400": {
"description": "14: Invalid game id"
},
"503": {
"description": "17: Feature is disabled"
}
},
"servers": [
{
"url": "https://gameinternationalization.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#gameinternationalization_get_v2_supported_languages_games__gameId_"
}
}
},
"/v2/teamtest/{placeId}": {
"delete": {
"tags": ["Places", "Team Create"],
"summary": "Close a game instance that is being used for team testing",
"parameters": [
{
"in": "path",
"name": "placeId",
"description": "The Id of the place we are setting the metadata for.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "gameId",
"description": "the Guid of the game instance System.Guid",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/places#develop_delete_v2_teamtest__placeId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-develop/v2/teamtest/{placeId}",
"httpMethod": "DELETE",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/places#delete_legacy_develop_v2_teamtest__placeId_"
}
]
}
},
"/v2/trades/send": {
"post": {
"tags": ["Trades"],
"summary": "Sends a new trade.",
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Trades.Api.Models.V2.TradeRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.NewTradeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.NewTradeResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n4: You are not authorized to modify this trade."
},
"403": {
"description": "0: Token Validation Failed"
},
"404": {
"description": "0: An unknown error occured."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_post_v2_trades_send"
}
}
},
"/v2/trades/{tradeId}": {
"get": {
"tags": ["Trades"],
"summary": "Gets the details of a trade.",
"parameters": [
{
"in": "path",
"name": "tradeId",
"description": "The id of the trade.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradeDetailsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradeDetailsResponse"
}
}
}
},
"400": {
"description": "0: An unknown error occured."
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n4: You are not authorized to modify this trade."
},
"403": {
"description": "4: You are not authorized to modify this trade."
},
"404": {
"description": "0: An unknown error occured."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v2_trades__tradeId_"
}
}
},
"/v2/trades/{tradeId}/counter": {
"post": {
"tags": ["Trades"],
"summary": "Counters an existing trade.",
"parameters": [
{
"in": "path",
"name": "tradeId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"$ref": "#/components/requestBodies/Roblox.Trades.Api.Models.V2.TradeRequest"
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.NewTradeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.NewTradeResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n4: You are not authorized to modify this trade."
},
"403": {
"description": "0: Token Validation Failed"
},
"404": {
"description": "0: An unknown error occured."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_post_v2_trades__tradeId__counter"
}
}
},
"/v2/universes/{universeId}/configuration": {
"patch": {
"tags": ["Universes"],
"summary": "Update universe settings for an owned universe.\r\nV2 Contains data for avatar scale and asset override.",
"parameters": [
{
"in": "path",
"name": "universeId",
"description": "The universeId.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsRequestV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsRequestV2"
}
}
},
"description": "The Roblox.Api.Develop.Models.UniverseSettingsRequest model.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsResponseV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseSettingsResponseV2"
}
}
}
},
"400": {
"description": "1: The universe does not exist.\r\n3: Invalid UniverseAvatarType.\r\n4: Invalid UniverseScaleType.\r\n5: Invalid UniverseAnimationType.\r\n6: Invalid UniverseCollisionType.\r\n7: New universe name or description has been rejected.\r\n8: New universe name is too long.\r\n10: Invalid UniverseBodyType.\r\n11: Invalid UniverseJointPositioningType.\r\n12: The universe has no root place.\r\n15: Price is required when isForSale is true.\r\n16: This game cannot be offered for sale because it is not public.\r\n17: This game cannot be offered for sale because it has private servers enabled.\r\n18: The game price is outside of the allowed range.\r\n19: Invalid genre.\r\n20: The request body is missing.\r\n21: Invalid device type.\r\n22: Invalid asset type.\r\n23: Invalid value, the min must be less than or equal to the max\r\n24: Invalid scale value\r\n28: OptIn/Out Regions Not Supported.\r\n41: You cannot change the private server price again so soon after the previous change. Please try again later.\r\n44: The provided audience configuration is invalid. Ensure the audience list contains only supported audience values.\r\n52: Promotional text has been rejected."
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You are not authorized to configure this universe.\r\n14: You are not authorized to sell games.\r\n29: Luobu app terms of service user agreement is missing.\r\n30: Unknown error while updating Opt in out region.\r\n45: The creator of this experience is not eligible to set this audience."
},
"409": {
"description": "9: Failed to shutdown all intances of game after changing AvatarType. The change has been reverted."
},
"500": {
"description": "43: Failed to update the audience configuration. The change was not applied. Please try again."
},
"503": {
"description": "53: Promotional text safety validation is temporarily unavailable."
}
},
"servers": [
{
"url": "https://develop.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#develop_patch_v2_universes__universeId__configuration"
}
}
},
"/v2/user-channel": {
"get": {
"tags": ["Metadata"],
"summary": "Get channel name for currently logged in user",
"parameters": [
{
"in": "query",
"name": "binaryType",
"description": "",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.UserChannelResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.UserChannelResponse"
}
}
}
}
},
"servers": [
{
"url": "https://clientsettings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/metadata#clientsettings_get_v2_user_channel"
}
}
},
"/v2/user/passwords/change": {
"post": {
"tags": ["Accounts"],
"summary": "Changes the password for the authenticated user.",
"description": "The current password is needed for verification that the password can be changed.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordChangeModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.PasswordChangeModel"
}
}
},
"description": "The request model including the current password, and the new password.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "Roblox.Web.Authentication.Passwords.PasswordResponseCodes.InvalidCurrentPassword\n OR\n Roblox.Web.Authentication.Passwords.PasswordResponseCodes.InvalidPassword"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "Roblox.Web.Authentication.Passwords.PasswordResponseCodes.PinLocked\r\n0: Token Validation Failed"
},
"429": {
"description": "Roblox.Web.Authentication.Passwords.PasswordResponseCodes.Flooded"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_user_passwords_change"
}
}
},
"/v2/username": {
"post": {
"tags": ["Accounts"],
"summary": "Change the user's username",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameChangeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameChangeRequest"
}
}
},
"description": "The Roblox.Authentication.Api.Models.UsernameChangeRequest",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"400": {
"description": "5: You don't have enough Robux to change your username.\r\n10: This username is already in use\r\n11: Username not appropriate for Roblox\r\n12: Usernames can be 3 to 20 characters long\r\n13: Usernames can’t start or end with _ and can have at most one _\r\n14: Only a-z, A-Z, 0-9, and _ are allowed\r\n15: Username is null\r\n16: Username might contain private information\r\n17: This username is not available\r\n18: Username is same as current"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n1: PIN is locked.\r\n2: A verified email is missing\r\n3: Your password is incorrect.\r\n100: Unknown birthday"
},
"500": {
"description": "0: An unknown error occured.\r\n5: You don't have enough Robux to change your username."
},
"503": {
"description": "4: The feature is currently not available. Please try again later."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_username"
}
}
},
"/v2/username/change/price": {
"get": {
"tags": ["Accounts"],
"summary": "Get the current price for a username change",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameChangePriceResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameChangePriceResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_username_change_price"
}
}
},
"/v2/usernames": {
"get": {
"tags": ["Accounts"],
"summary": "Gets a list of existing usernames on Roblox based on the query parameters",
"description": "This endpoint can be expanded in the future to include other query parameters such as \"startsWith\"",
"parameters": [
{
"in": "query",
"name": "username",
"description": "The username",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernamesResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernamesResponse"
}
}
}
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_usernames"
}
}
},
"/v2/usernames/recover": {
"post": {
"tags": ["Accounts"],
"summary": "Sends an email of all accounts belonging to an email",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoverUsernameRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoverUsernameRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoverUsernameResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.RecoverUsernameResponse"
}
}
}
},
"400": {
"description": "20: Invalid Email\r\n21: Invalid Phone\r\n23: No Account Found"
},
"403": {
"description": "0: Token Validation Failed\r\n11: Too many attempts. Please wait a bit."
},
"500": {
"description": "0: An unexpected error occurred."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_usernames_recover"
}
}
},
"/v2/usernames/validate": {
"get": {
"tags": ["Accounts"],
"summary": "Checks if a username is valid.",
"parameters": [
{
"in": "query",
"name": "Username",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "Birthday",
"required": true,
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"in": "query",
"name": "Context",
"required": true,
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2]
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationResponse"
}
}
}
},
"400": {
"description": "1: A valid username is required.\r\n2: A valid birthday or authenticated user is required."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_get_v2_usernames_validate"
}
},
"post": {
"tags": ["Accounts"],
"summary": "Checks if a username is valid.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationRequest"
}
}
},
"description": "The Roblox.Authentication.Api.Models.UsernameValidationRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.UsernameValidationResponse"
}
}
}
},
"400": {
"description": "1: A valid username is required.\r\n2: A valid birthday or authenticated user is required."
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v2_usernames_validate"
}
}
},
"/v2/users/me/can-trade": {
"get": {
"tags": ["Trades"],
"summary": "Checks if the calling user can trade with others.",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.CanTradeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.CanTradeResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n4: You are not authorized to modify this trade."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v2_users_me_can_trade"
}
}
},
"/v2/users/{userId}/can-trade-with": {
"get": {
"tags": ["Trades"],
"summary": "Checks if the user can trade with a specific user.",
"parameters": [
{
"in": "path",
"name": "userId",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.CanTradeWithResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.CanTradeWithResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n4: You are not authorized to modify this trade."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v2_users__userId__can_trade_with"
}
}
},
"/v2/users/{userId}/favorite/games": {
"get": {
"tags": ["Interactions", "Universes", "Users"],
"summary": "Gets users favorite games.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "accessFilter",
"description": "Filtering option via access level.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [1, 2, 4],
"default": 2
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Desc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Web.Responses.Games.GameFavoriteResponseModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Web.Responses.Games.GameFavoriteResponseModel_"
}
}
}
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#games_get_v2_users__userId__favorite_games"
}
}
},
"/v2/users/{userId}/games": {
"get": {
"tags": ["Universes", "Users"],
"summary": "Gets games created by the specified user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user Id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "accessFilter",
"description": "Filtering option via access level.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [1, 2, 4],
"default": 2
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Web.Responses.Games.GameResponseV2_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Web.Responses.Games.GameResponseV2_"
}
}
}
}
},
"servers": [
{
"url": "https://games.roblox.com"
}
],
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/universes#games_get_v2_users__userId__games"
}
}
},
"/v2/users/{userId}/inventory": {
"get": {
"tags": ["Assets", "Inventories", "Users"],
"summary": "Get user's inventory by multiple Roblox.Platform.Assets.AssetType.",
"description": "GamePass and Badges not allowed.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The inventory owner's userId.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "assetTypes",
"description": "The asset types to query.",
"required": true,
"style": "form",
"explode": false,
"schema": {
"type": "array",
"items": {
"description": " ['Image' = 1, 'TShirt' = 2, 'Audio' = 3, 'Mesh' = 4, 'Lua' = 5, 'HTML' = 6, 'Text' = 7, 'Hat' = 8, 'Place' = 9, 'Model' = 10, 'Shirt' = 11, 'Pants' = 12, 'Decal' = 13, 'Avatar' = 16, 'Head' = 17, 'Face' = 18, 'Gear' = 19, 'Badge' = 21, 'GroupEmblem' = 22, 'Animation' = 24, 'Arms' = 25, 'Legs' = 26, 'Torso' = 27, 'RightArm' = 28, 'LeftArm' = 29, 'LeftLeg' = 30, 'RightLeg' = 31, 'Package' = 32, 'YouTubeVideo' = 33, 'GamePass' = 34, 'App' = 35, 'Code' = 37, 'Plugin' = 38, 'SolidModel' = 39, 'MeshPart' = 40, 'HairAccessory' = 41, 'FaceAccessory' = 42, 'NeckAccessory' = 43, 'ShoulderAccessory' = 44, 'FrontAccessory' = 45, 'BackAccessory' = 46, 'WaistAccessory' = 47, 'ClimbAnimation' = 48, 'DeathAnimation' = 49, 'FallAnimation' = 50, 'IdleAnimation' = 51, 'JumpAnimation' = 52, 'RunAnimation' = 53, 'SwimAnimation' = 54, 'WalkAnimation' = 55, 'PoseAnimation' = 56, 'LocalizationTableManifest' = 59, 'LocalizationTableTranslation' = 60, 'EmoteAnimation' = 61, 'Video' = 62, 'TexturePack' = 63, 'TShirtAccessory' = 64, 'ShirtAccessory' = 65, 'PantsAccessory' = 66, 'JacketAccessory' = 67, 'SweaterAccessory' = 68, 'ShortsAccessory' = 69, 'LeftShoeAccessory' = 70, 'RightShoeAccessory' = 71, 'DressSkirtAccessory' = 72, 'FontFamily' = 73, 'FontFace' = 74, 'MeshHiddenSurfaceRemoval' = 75, 'EyebrowAccessory' = 76, 'EyelashAccessory' = 77, 'MoodAnimation' = 78, 'DynamicHead' = 79, 'CodeSnippet' = 80, 'AdsVideo' = 81, 'OtaUpdate' = 82, 'Screenshot' = 83, 'RuntimePropertySet' = 84, 'StorePreviewVideo' = 85, 'GamePreviewVideo' = 86, 'CreatorExperienceConfig' = 87, 'FaceMakeup' = 88, 'LipMakeup' = 89, 'EyeMakeup' = 90, 'VoxelFragment' = 91, 'AvatarBackground' = 92, 'TextDocument' = 93, 'Post' = 94, 'AnimatedImage' = 95, 'ComputeFunction' = 96]",
"enum": [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21,
22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96
]
}
}
},
{
"in": "query",
"name": "filterDisapprovedAssets",
"description": "Filters moderated assets when enabled.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "showApprovedOnly",
"description": "Filters moderated assets and assets pending review when enabled.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.V2.UserAssetItemModelV2_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.V2.UserAssetItemModelV2_"
}
}
}
},
"400": {
"description": "1: Invalid user Id.\r\n2: Invalid asset type Id."
},
"403": {
"description": "3: Insufficient permission.\r\n4: You are not authorized to view this user's inventory."
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/assets#inventory_get_v2_users__userId__inventory"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/cloud/v2/users/{user_id}/inventory-items",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/inventories#Cloud_ListInventoryItems"
}
]
}
},
"/v2/users/{userId}/inventory/{assetTypeId}": {
"get": {
"tags": ["Inventories", "Users"],
"summary": "Gets user's inventory based on specific asset type",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user Id of the inventory owner",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "path",
"name": "assetTypeId",
"description": "The asset type Id of the items to get",
"required": true,
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"in": "query",
"name": "limit",
"description": "The number of results per request.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [10, 25, 50, 100],
"default": 10
}
},
{
"in": "query",
"name": "cursor",
"description": "The paging cursor for the previous or next page.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The order the results are sorted in.",
"schema": {
"type": "string",
"enum": ["Asc", "Desc"],
"default": "Asc"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.InventoryItemModel_"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.InventoryItemModel_"
}
}
}
},
"400": {
"description": "1: Invalid user Id.\r\n2: Invalid asset type Id."
},
"403": {
"description": "3: Insufficient permission.\r\n4: You are not authorized to view this user's inventory."
}
},
"servers": [
{
"url": "https://inventory.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/inventories#inventory_get_v2_users__userId__inventory__assetTypeId_"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/cloud/v2/users/{user_id}/inventory-items",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/inventories#Cloud_ListInventoryItems"
}
]
}
},
"/v2/users/{userId}/tradableItems": {
"get": {
"tags": ["Trades"],
"summary": "Gets tradable items for a user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The id of the user.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "search",
"description": "Optional search query to filter items by.",
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "itemTargetTypes",
"description": "Optional list of item target types to filter by.",
"explode": true,
"schema": {
"type": "array",
"items": {
"description": "The type of the underlying of a tradable item. ['Unknown' = 0, 'HatAccessory' = 1, 'HairAccessory' = 2, 'FaceAccessory' = 3, 'NeckAccessory' = 4, 'ShoulderAccessory' = 5, 'FrontAccessory' = 6, 'BackAccessory' = 7, 'WaistAccessory' = 8, 'Gear' = 9, 'Face' = 10, 'JacketAccessory' = 11, 'SweaterAccessory' = 12, 'DressSkirtAccessory' = 13, 'Character' = 14, 'DynamicHead' = 15, 'Shoes' = 16, 'Animation' = 17]",
"enum": [
"Unknown",
"HatAccessory",
"HairAccessory",
"FaceAccessory",
"NeckAccessory",
"ShoulderAccessory",
"FrontAccessory",
"BackAccessory",
"WaistAccessory",
"Gear",
"Face",
"JacketAccessory",
"SweaterAccessory",
"DressSkirtAccessory",
"Character",
"DynamicHead",
"Shoes",
"Animation"
],
"type": "string"
}
}
},
{
"in": "query",
"name": "sortBy",
"description": "The key to sort tradable items by.",
"schema": {
"type": "string",
"enum": ["Unknown", "CreationTime", "AcquisitionTime"],
"default": "CreationTime"
}
},
{
"in": "query",
"name": "sortOrder",
"description": "The sort order for the tradable items.",
"schema": {
"type": "integer",
"format": "int32",
"enum": [0, 1, 2],
"default": 2
}
},
{
"in": "query",
"name": "limit",
"description": "The maximum number of items to return.",
"schema": {
"type": "integer",
"format": "int32",
"default": 25
}
},
{
"in": "query",
"name": "cursor",
"description": "The pagination cursor.",
"schema": {
"type": "string",
"default": ""
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.GetUserTradableItemsResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.GetUserTradableItemsResponse"
}
}
}
},
"400": {
"description": "25: The cursor provided is invalid."
},
"401": {
"description": "0: Authorization has been denied for this request.\r\n4: You are not authorized to modify this trade."
},
"403": {
"description": "4: You are not authorized to modify this trade."
},
"404": {
"description": "0: An unknown error occured."
}
},
"servers": [
{
"url": "https://trades.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/trades#trades_get_v2_users__userId__tradableItems"
}
}
},
"/v2/users/{userId}/universes": {
"get": {
"tags": ["Interactions", "Universes", "Users"],
"summary": "Gets all universes followed by a user.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.FollowsByTypeResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Followings.Api.Models.FollowsByTypeResponse"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "User is not authorized for this action."
}
},
"servers": [
{
"url": "https://followings.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/interactions#followings_get_v2_users__userId__universes"
},
"x-roblox-recommended-alternatives": [
{
"url": "https://apis.roblox.com/legacy-followings/v2/users/{userId}/universes",
"httpMethod": "GET",
"documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/interactions#get_legacy_followings_v2_users__userId__universes"
}
]
}
},
"/v3/logout": {
"post": {
"tags": ["Accounts"],
"summary": "Destroys the current authentication session while reporting metrics like url and reason for logout.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.LogoutV3Request"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.LogoutV3Request"
}
}
},
"description": "The logout request with postBody which includes reason, url, and userIdString.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
}
}
}
},
"403": {
"description": "0: Token Validation Failed"
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v3_logout"
}
}
},
"/v3/outfits/create": {
"post": {
"tags": ["Avatars"],
"summary": "Creates a new outfit.",
"description": "Fails if any of the assetIds are not owned by the user, or not wearable types.\r\nThe name property of the request is optional as one will be auto-generated when the request has a null name.\n\nPlease use POST v4/outfits/create",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitUpdateModelV3"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitUpdateModelV3"
}
}
},
"description": "The new outfit.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitModel"
}
}
}
},
"400": {
"description": "3: Body colors must be valid BrickColor IDs\r\n4: Invalid outfit name\r\n5: Asset is not wearable by you and was not added to the outfit\r\n7: Invalid Player Avatar Type. Valid types are R6 and R15\r\n8: Invalid assetIds\r\n9: Meta does not apply to specified asset type\r\n10: Required meta is not provided for the specific asset type\r\n12: Outfit type invalid or not permitted\r\n13: Invalid Scale"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n1: You already have the maximum number of outfits"
},
"500": {
"description": "6: An error occurred while creating the outfit"
}
},
"deprecated": true,
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v3_outfits_create"
}
}
},
"/v3/outfits/{userOutfitId}": {
"patch": {
"tags": ["Avatars"],
"summary": "Updates the contents of an outfit.",
"description": "Fails if the user does not own any of the assetIds or if they are not wearable asset types.\r\nAccepts partial updates.\n\nPlease use PATCH v4/outfits/{outfitId}",
"parameters": [
{
"in": "path",
"name": "userOutfitId",
"description": "The user outfit id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitUpdateModelV3"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitUpdateModelV3"
}
}
},
"description": "The updated outfit.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitModel"
}
}
}
},
"400": {
"description": "3: Body colors must be valid BrickColor IDs\r\n4: Invalid outfit name\r\n5: Asset is not wearable by you\r\n8: Invalid Player Avatar Type. Valid types are R6 and R15\r\n11: Meta does not apply to specified asset type\r\n12: Meta is required for this specific asset type\r\n13: Invalid Outfit Type\r\n14: Invalid scale"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You don't have permission to update this outfit."
},
"404": {
"description": "1: The specified userOutfit does not exist!"
},
"500": {
"description": "6: An error occurred while trying to update the outfit"
}
},
"deprecated": true,
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_patch_v3_outfits__userOutfitId_"
}
}
},
"/v3/outfits/{userOutfitId}/details": {
"get": {
"tags": ["Avatars"],
"summary": "Gets details about the contents of an outfit.",
"parameters": [
{
"in": "path",
"name": "userOutfitId",
"description": "The user outfit id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "checkAssetAvailability",
"description": "Whether to return assets with availability status.",
"schema": {
"type": "boolean",
"default": false
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitDetailsModelV2"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitDetailsModelV2"
}
}
}
},
"400": {
"description": "2: The outfit for the specified userOutfit is invalid."
},
"403": {
"description": "3: The requester does not have access to the details for the given user outfit."
},
"404": {
"description": "1: The specified userOutfitId is invalid."
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v3_outfits__userOutfitId__details"
}
}
},
"/v3/users/{userId}/two-step-verification/login": {
"post": {
"tags": ["Accounts"],
"summary": "Authenticates as a user given a two step verification verification token.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The user ID to authenticate as.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.TwoStepVerificationLoginRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.TwoStepVerificationLoginRequest"
}
}
},
"description": "The Roblox.Authentication.Api.TwoStepVerificationLoginRequest.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.TwoStepVerificationV3LoginResponse"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.TwoStepVerificationV3LoginResponse"
}
}
}
},
"400": {
"description": "1: User is invalid.\r\n5: Invalid two step verification ticket.\r\n10: Invalid verification token."
},
"403": {
"description": "0: Token Validation Failed\r\n11: Maxium logged in accounts limit reached.\r\n44: Login is unavailable in your country."
}
},
"servers": [
{
"url": "https://auth.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [{}],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/accounts#auth_post_v3_users__userId__two_step_verification_login"
}
}
},
"/v4/avatar": {
"get": {
"tags": ["Avatars"],
"summary": "Gets the currently wearing avatar definition for the authenticated user.",
"description": "Returns an Roblox.Api.Avatar.Models.V4.AvatarDefinition containing an Roblox.Api.Avatar.Models.V4.AvatarModelV4 and Roblox.Api.Avatar.Models.V4.AvatarConfigurations.",
"parameters": [
{
"in": "query",
"name": "selectionTypes",
"description": "Selection types for the avatar data to return.",
"required": true,
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int32",
"description": "Defines the data that can be requested or modified while retrieving or\r\nupdating the AvatarDefinition.",
"enum": [0, 1, 2, 3, 4, 5, 6],
"type": "integer"
}
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarDefinition"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarDefinition"
}
}
}
},
"401": {
"description": "0: Authorization has been denied for this request."
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v4_avatar"
}
},
"patch": {
"tags": ["Avatars"],
"summary": "Sets the avatar to the incoming avatar using field masks.",
"description": "Only allows items that you own, are not expired, and are wearable asset types.\r\nAny assets being worn before this method is called are automatically removed.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Request.UpdateAvatarDefinitionRequestV4"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Request.UpdateAvatarDefinitionRequestV4"
}
}
},
"description": "Model of avatar that we are updating to.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.UpdateAvatarDefinitionResponseV4"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.UpdateAvatarDefinitionResponseV4"
}
}
}
},
"400": {
"description": "3: Invalid assetId\r\n5: Meta does not apply to specified asset type\r\n7: Required meta is not provided for the specific asset type"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed"
},
"500": {
"description": "2: Failed to wear asset."
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_patch_v4_avatar"
}
}
},
"/v4/avatar/users/{userId}": {
"get": {
"tags": ["Avatars", "User profiles"],
"summary": "Gets the currently wearing avatar definition for the specified user.",
"description": "Returns an Roblox.Api.Avatar.Models.V4.AvatarDefinition containing an Roblox.Api.Avatar.Models.V4.AvatarModelV4 and Roblox.Api.Avatar.Models.V4.AvatarConfigurations.\r\nBehavior is aligned with the V2 `GET v2/avatar/users/{userId}/avatar` endpoint.",
"parameters": [
{
"in": "path",
"name": "userId",
"description": "The target user id.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"in": "query",
"name": "selectionTypes",
"description": "Selection types for the avatar data to return.",
"required": true,
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int32",
"description": "Defines the data that can be requested or modified while retrieving or\r\nupdating the AvatarDefinition.",
"enum": [0, 1, 2, 3, 4, 5, 6],
"type": "integer"
}
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarDefinition"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarDefinition"
}
}
}
},
"400": {
"description": "1: The specified user does not exist.\r\n2: An account for the given userId does not exist!"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v4_avatar_users__userId_"
}
}
},
"/v4/outfits/create": {
"post": {
"tags": ["Avatars"],
"summary": "Creates a new outfit.",
"description": "Fails if any of the assetIds are not owned by the user, or not wearable types.\r\nThe name property of the request is optional as one will be auto-generated when the request has a null name.",
"parameters": [
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Request.CreateOutfitDefinitionRequestV4"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Request.CreateOutfitDefinitionRequestV4"
}
}
},
"description": "The outfit definition to create.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.CreateOutfitDefinitionResponseV4"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.CreateOutfitDefinitionResponseV4"
}
}
}
},
"400": {
"description": "3: Body colors must be valid BrickColor IDs\r\n4: Invalid outfit name\r\n5: Asset is not wearable by you and was not added to the outfit\r\n7: Invalid Player Avatar Type. Valid types are R6 and R15\r\n8: Invalid assetIds\r\n9: Meta does not apply to specified asset type\r\n10: Required meta is not provided for the specific asset type\r\n12: Outfit type invalid or not permitted\r\n13: Invalid Scale"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n1: You already have the maximum number of outfits"
},
"500": {
"description": "6: An error occurred while creating the outfit"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_post_v4_outfits_create"
}
}
},
"/v4/outfits/{outfitId}": {
"patch": {
"tags": ["Avatars"],
"summary": "Updates the contents of an outfit.",
"description": "Fails if the user does not own any of the assetIds or if they are not wearable asset types.\r\nAccepts partial updates via update types.",
"parameters": [
{
"in": "path",
"name": "outfitId",
"description": "The user outfit id.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Request.UpdateOutfitDefinitionRequestV4"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Request.UpdateOutfitDefinitionRequestV4"
}
}
},
"description": "The outfit definition fields to update.",
"required": true
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.UpdateOutfitDefinitionResponseV4"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.UpdateOutfitDefinitionResponseV4"
}
}
}
},
"400": {
"description": "3: Body colors must be valid BrickColor IDs\r\n4: Invalid outfit name\r\n5: Asset is not wearable by you\r\n8: Invalid Player Avatar Type. Valid types are R6 and R15\r\n11: Meta does not apply to specified asset type\r\n12: Meta is required for this specific asset type\r\n13: Invalid Outfit Type\r\n14: Invalid scale"
},
"401": {
"description": "0: Authorization has been denied for this request."
},
"403": {
"description": "0: Token Validation Failed\r\n2: You don't have permission to update this outfit."
},
"404": {
"description": "1: The specified userOutfit does not exist!"
},
"500": {
"description": "6: An error occurred while trying to update the outfit"
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_patch_v4_outfits__outfitId_"
}
}
},
"/v4/outfits/{outfitId}/details": {
"get": {
"tags": ["Avatars"],
"summary": "Gets the definition for an outfit.",
"description": "Returns an Roblox.Api.Avatar.Models.V4.OutfitDefinition containing an Roblox.Api.Avatar.Models.V4.OutfitModelV4 and background Roblox.Api.Avatar.Models.V4.OutfitConfigurations.\r\nBehavior is aligned with the V1/V3 `GET v{1|3}/outfits/{userOutfitId}/details` endpoints (authentication optional).",
"parameters": [
{
"in": "path",
"name": "outfitId",
"description": "The outfit id.",
"required": true,
"schema": {
"type": "string"
}
},
{
"in": "query",
"name": "selectionTypes",
"description": "Selection types for the outfit data to return.",
"explode": true,
"schema": {
"type": "array",
"items": {
"format": "int32",
"description": "Defines the data that can be requested while retrieving an OutfitDefinition.",
"enum": [0, 1],
"type": "integer"
}
}
},
{
"in": "query",
"name": "checkAssetAvailability",
"description": "Whether to return assets with availability status.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"in": "header",
"name": "Roblox-Place-Id",
"description": "",
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.OutfitDefinition"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.OutfitDefinition"
}
}
}
},
"400": {
"description": "2: The outfit for the specified userOutfit is invalid."
},
"403": {
"description": "3: The requester does not have access to the details for the given user outfit."
},
"404": {
"description": "1: The specified userOutfitId is invalid."
}
},
"servers": [
{
"url": "https://avatar.roblox.com"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{},
{
"roblox-legacy-cookie": []
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/avatars#avatar_get_v4_outfits__outfitId__details"
}
}
},
"/virtual-events/v3/game-events/{eventId}": {
"delete": {
"tags": ["Game Events"],
"summary": "Permanently delete an existing game event. Returns 204 No Content on success.\r\nPermission is enforced via an explicit pre-check: callers that can read but not edit\r\nreceive 403; callers that cannot read receive 404.",
"operationId": "GameEvent_Delete",
"parameters": [
{
"name": "eventId",
"in": "path",
"description": "Game event ID to delete (from path).",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"responses": {
"204": {
"description": "The event was deleted."
},
"401": {
"description": "Caller is not authenticated.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
},
"403": {
"description": "Caller can read the event but lacks delete permission.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
},
"404": {
"description": "Event does not exist or caller cannot see it.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
},
"500": {
"description": "The backend rejected the delete after the permission pre-check passed.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 20
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 20
}
},
"x-roblox-scopes": [
{
"name": "universe.event:write",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.event:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/virtual-events#GameEvent_Delete"
}
},
"get": {
"tags": ["Game Events"],
"summary": "Get a single game event by ID.\r\nUse `?fields=` to request a subset of fields; unknown field names return 400.",
"operationId": "GameEvent_Get",
"parameters": [
{
"name": "eventId",
"in": "path",
"description": "Game event ID (from path).",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "fields",
"in": "query",
"description": "Optional field mask (comma-separated; omit or use * for all fields).",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "The requested game event.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GameEventResponse"
}
}
}
},
"400": {
"description": "Malformed `?fields=` or invalid event ID.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
},
"404": {
"description": "Event does not exist.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe.event:read",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.event:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/virtual-events#GameEvent_Get"
}
},
"patch": {
"tags": ["Game Events"],
"summary": "Partially update a game event. Only fields present in the request body are changed; omitted or null fields are left\r\nunchanged. Empty body is a no-op and returns the current game event resource.",
"operationId": "GameEvent_Update",
"parameters": [
{
"name": "eventId",
"in": "path",
"description": "Game event ID from the route.",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"description": "Partial update payload. Omitted or null fields are treated as no change.",
"content": {
"application/json-patch+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateGameEventRequest"
}
],
"description": "Request body for `PATCH /v3/game-events/{eventId}`.\r\nEvery field is optional; null = \"no change\". An empty body is a no-op and returns the current resource."
}
},
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateGameEventRequest"
}
],
"description": "Request body for `PATCH /v3/game-events/{eventId}`.\r\nEvery field is optional; null = \"no change\". An empty body is a no-op and returns the current resource."
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateGameEventRequest"
}
],
"description": "Request body for `PATCH /v3/game-events/{eventId}`.\r\nEvery field is optional; null = \"no change\". An empty body is a no-op and returns the current resource."
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateGameEventRequest"
}
],
"description": "Request body for `PATCH /v3/game-events/{eventId}`.\r\nEvery field is optional; null = \"no change\". An empty body is a no-op and returns the current resource."
}
}
}
},
"responses": {
"200": {
"description": "The updated game event resource.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GameEventResponse"
}
}
}
},
"400": {
"description": "Validation failure or backend reject.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
},
"401": {
"description": "Caller is not authenticated.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
},
"403": {
"description": "Caller can read but lacks edit permission.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
},
"404": {
"description": "Event not found.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 20
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 20
}
},
"x-roblox-scopes": [
{
"name": "universe.event:write",
"targetResourceSpecifier": ""
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.event:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/virtual-events#GameEvent_Update"
}
}
},
"/virtual-events/v3/universes/{universeId}/game-events": {
"get": {
"tags": ["Game Events"],
"summary": "List game events under a universe.\r\nUse `?fields=` to trim the response payload.\r\nResponse is always 200 (empty list for unknown universe).",
"operationId": "GameEvents_List",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "Universe that owns the events (from path).",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
},
{
"name": "pageSize",
"in": "query",
"description": "Requested page size.",
"schema": {
"type": "integer",
"format": "int32"
}
},
{
"name": "pageToken",
"in": "query",
"description": "Continuation token from a prior page's `nextPageToken`.",
"schema": {
"type": "string"
}
},
{
"name": "reverse",
"in": "query",
"description": "When true, treats `pageToken` as a backward-pagination cursor.",
"schema": {
"type": "boolean",
"default": false
}
},
{
"name": "startsBefore",
"in": "query",
"description": "Upper bound on event start time.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "startsAfter",
"in": "query",
"description": "Lower bound on event start time.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "endsBefore",
"in": "query",
"description": "Upper bound on event end time.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "endsAfter",
"in": "query",
"description": "Lower bound on event end time. Defaults to now when neither bound is set.",
"schema": {
"type": "string",
"format": "date-time"
}
},
{
"name": "visibility",
"in": "query",
"description": "Visibility filter.",
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/EventVisibility"
}
]
}
},
{
"name": "fields",
"in": "query",
"description": "Field mask (comma-separated; omit or `*` for all fields).",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "A page of game events.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedGameEventsResponse"
}
}
}
},
"400": {
"description": "Invalid `?fields=`, out-of-range `pageSize`, or bad query parameter.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 100
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 100
}
},
"x-roblox-scopes": [
{
"name": "universe.event:read",
"targetResourceSpecifier": "universes"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.event:read"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/virtual-events#GameEvents_List"
}
},
"post": {
"tags": ["Game Events"],
"summary": "Create a new game event. Returns the full resource on success.",
"operationId": "GameEvents_Create",
"parameters": [
{
"name": "universeId",
"in": "path",
"description": "Universe that will own the new event (from path).",
"required": true,
"schema": {
"type": "integer",
"format": "int64"
}
}
],
"requestBody": {
"description": "The create payload.",
"content": {
"application/json-patch+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateGameEventRequest"
}
],
"description": "Request body for `POST /v3/universes/{universeId}/game-events`.\r\n`universeId` comes from the URL path, not the body.\r\nVirtualEventsApi.Models.V3.Request.CreateGameEventRequest.Visibility is restricted to Public/Private — Moderated is server-side only.\r\nNullable CLR properties allow JSON binding to materialize incomplete requests; required\r\nfields are enforced by the virtual-events gRPC service when `CreateVirtualEvent` runs."
}
},
"application/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateGameEventRequest"
}
],
"description": "Request body for `POST /v3/universes/{universeId}/game-events`.\r\n`universeId` comes from the URL path, not the body.\r\nVirtualEventsApi.Models.V3.Request.CreateGameEventRequest.Visibility is restricted to Public/Private — Moderated is server-side only.\r\nNullable CLR properties allow JSON binding to materialize incomplete requests; required\r\nfields are enforced by the virtual-events gRPC service when `CreateVirtualEvent` runs."
}
},
"text/json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateGameEventRequest"
}
],
"description": "Request body for `POST /v3/universes/{universeId}/game-events`.\r\n`universeId` comes from the URL path, not the body.\r\nVirtualEventsApi.Models.V3.Request.CreateGameEventRequest.Visibility is restricted to Public/Private — Moderated is server-side only.\r\nNullable CLR properties allow JSON binding to materialize incomplete requests; required\r\nfields are enforced by the virtual-events gRPC service when `CreateVirtualEvent` runs."
}
},
"application/*+json": {
"schema": {
"allOf": [
{
"$ref": "#/components/schemas/CreateGameEventRequest"
}
],
"description": "Request body for `POST /v3/universes/{universeId}/game-events`.\r\n`universeId` comes from the URL path, not the body.\r\nVirtualEventsApi.Models.V3.Request.CreateGameEventRequest.Visibility is restricted to Public/Private — Moderated is server-side only.\r\nNullable CLR properties allow JSON binding to materialize incomplete requests; required\r\nfields are enforced by the virtual-events gRPC service when `CreateVirtualEvent` runs."
}
}
}
},
"responses": {
"200": {
"description": "The newly-created game event resource.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GameEventResponse"
}
}
}
},
"400": {
"description": "Validation failure or server-side reject (moderation, age requirement, ...).",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
},
"401": {
"description": "Caller is not authenticated.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
},
"403": {
"description": "Caller lacks permission or quota is exhausted.",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VirtualEventsApi.ProblemDetails"
}
}
}
}
},
"x-roblox-stability": "EXPERIMENTAL",
"x-roblox-rate-limits": {
"perApiKeyOwner": {
"period": "MINUTE",
"maxInPeriod": 20
},
"perOauth2Authorization": {
"period": "MINUTE",
"maxInPeriod": 20
}
},
"x-roblox-scopes": [
{
"name": "universe.event:write",
"targetResourceSpecifier": "universes"
}
],
"x-roblox-engine-usability": {
"apiKeyWithHttpService": false
},
"security": [
{
"roblox-api-key": []
},
{
"roblox-oauth2": ["universe.event:write"]
}
],
"externalDocs": {
"url": "https://create.roblox.com/docs/cloud/reference/features/virtual-events#GameEvents_Create"
}
}
}
},
"components": {
"requestBodies": {
"Roblox.AccountInformation.Api.Models.PhoneRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PhoneRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.AccountInformation.Api.Models.PhoneRequest"
}
}
},
"description": "Roblox.AccountInformation.Api.Models.PhoneRequest",
"required": true
},
"Roblox.Api.Develop.Models.PlaceConfigurationModel": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceConfigurationModel"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaceConfigurationModel"
}
}
},
"required": true
},
"Roblox.Api.Develop.Models.TeamCreateMembershipRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.TeamCreateMembershipRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.TeamCreateMembershipRequest"
}
}
},
"description": "The request body.",
"required": true
},
"Roblox.Api.Develop.Models.UpdateTeamCreateSettingsRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UpdateTeamCreateSettingsRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UpdateTeamCreateSettingsRequest"
}
}
},
"description": "The request body containing the team create settings.",
"required": true
},
"Roblox.Authentication.Api.Models.SignupRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.SignupRequest"
}
}
},
"description": "Roblox.Authentication.Api.Models.SignupRequest",
"required": true
},
"Roblox.PrivateMessages.Api.Models.BatchMessagesRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.BatchMessagesRequest"
}
}
},
"required": true
},
"Roblox.Trades.Api.Models.V2.TradeRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradeRequest"
}
}
},
"required": true
},
"Roblox.Trades.Api.TradeRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeRequest"
}
}
},
"description": "The trade request.",
"required": true
},
"Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest"
}
}
},
"description": "The Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest.",
"required": true
},
"Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest"
}
}
},
"description": "The request body.Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest.",
"required": true
},
"Roblox.TwoStepVerification.Api.SendCodeRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.SendCodeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.SendCodeRequest"
}
}
},
"description": "The request body.Roblox.TwoStepVerification.Api.SendCodeRequest.",
"required": true
},
"Roblox.TwoStepVerification.Api.SendCodeRequest2": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.SendCodeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.SendCodeRequest"
}
}
},
"description": "The request bodyRoblox.TwoStepVerification.Api.SendCodeRequest.",
"required": true
},
"Roblox.TwoStepVerification.Api.VerifyCodeRequest": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeRequest"
}
}
},
"description": "The request bodyRoblox.TwoStepVerification.Api.VerifyCodeRequest.",
"required": true
},
"Roblox.TwoStepVerification.Api.VerifyCodeRequest2": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeRequest"
}
}
},
"description": "The Roblox.TwoStepVerification.Api.VerifyCodeRequest.",
"required": true
},
"Roblox.TwoStepVerification.Api.VerifyCodeRequest3": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeRequest"
}
},
"text/json": {
"schema": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.VerifyCodeRequest"
}
}
},
"description": "The request body.Roblox.TwoStepVerification.Api.VerifyCodeRequest.",
"required": true
},
"postV1Badges_badgeid_icon": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"Files": {
"type": "string",
"format": "binary"
}
}
}
}
}
},
"postV1Badges_badgeid_iconsLanguageCodes_languagecode_": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"Files": {
"type": "string",
"format": "binary"
}
}
}
}
}
}
},
"schemas": {
"AcceptGroupJoinRequestRequest": {
"type": "object",
"properties": {},
"description": "A join request ID."
},
"ActionResult": {
"type": "object",
"additionalProperties": false
},
"AnalyticsQueryPublicApi.BreakdownValue": {
"required": ["dimension", "value"],
"type": "object",
"properties": {
"dimension": {
"type": "string",
"description": "The dimension name."
},
"value": {
"type": "string",
"description": "The dimension value."
},
"displayValue": {
"type": "string",
"description": "A human-readable display value when the dimension is a unique ID.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A breakdown dimension value in a query result."
},
"AnalyticsQueryPublicApi.DataPoint": {
"required": ["time", "value"],
"type": "object",
"properties": {
"time": {
"type": "string",
"description": "The timestamp of the data point in UTC.",
"format": "date-time"
},
"value": {
"type": "number",
"description": "The numeric value of the data point.",
"format": "double"
},
"stringValues": {
"type": "array",
"items": {
"type": "string"
},
"description": "String values associated with the data point, when applicable.",
"nullable": true
},
"status": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.DataStatus"
}
},
"additionalProperties": false,
"description": "A single data point in a metric query result."
},
"AnalyticsQueryPublicApi.DataStatus": {
"enum": ["Valid", "Projected", "NotStatisticallySignificant"],
"type": "string",
"description": "The status of a data point in a query result."
},
"AnalyticsQueryPublicApi.DimensionValues": {
"required": ["dimension"],
"type": "object",
"properties": {
"dimension": {
"type": "string",
"description": "The dimension name."
},
"values": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DimensionValue"
},
"description": "The values for the dimension."
}
},
"additionalProperties": false,
"description": "The values for a single dimension returned by a dimension values query."
},
"AnalyticsQueryPublicApi.DimensionValuesRequest": {
"required": ["endTime", "metric", "startTime"],
"type": "object",
"properties": {
"metric": {
"type": "string",
"description": "The metric that provides context for resolving dimension namespaces."
},
"dimensions": {
"type": "array",
"items": {
"type": "string"
},
"description": "The dimensions to retrieve values for. Each entry is a single dimension name."
},
"startTime": {
"type": "string",
"description": "The inclusive start of the query time range. Any UTC offset is accepted; results are always bucketed in UTC.",
"format": "date-time"
},
"endTime": {
"type": "string",
"description": "The exclusive end of the query time range. Any UTC offset is accepted; results are always bucketed in UTC.",
"format": "date-time"
},
"filter": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.QueryFilter"
},
"description": "Filters to apply to the query."
},
"granularity": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.MetricGranularity"
},
"limit": {
"type": "integer",
"description": "The maximum number of values to return per dimension.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "A request to query dimension values."
},
"AnalyticsQueryPublicApi.DimensionValuesResponse": {
"type": "object",
"properties": {
"values": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.DimensionValues"
},
"description": "The dimension values returned by the query."
}
},
"additionalProperties": false,
"description": "The response for a dimension values query."
},
"AnalyticsQueryPublicApi.FilterOperation": {
"enum": [
"In",
"NotIn",
"GreaterThan",
"GreaterThanOrEqual",
"LessThan",
"LessThanOrEqual",
"Match"
],
"type": "string",
"description": "The operation to apply to a query filter."
},
"AnalyticsQueryPublicApi.MetricGranularity": {
"enum": [
"OneMinute",
"HalfHour",
"OneHour",
"OneDay",
"OneWeek",
"OneMonth",
"None"
],
"type": "string",
"description": "The time granularity of metric data points in a query."
},
"AnalyticsQueryPublicApi.MetricValue": {
"type": "object",
"properties": {
"breakdowns": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.BreakdownValue"
},
"description": "The breakdown values for this series."
},
"dataPoints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.DataPoint"
},
"description": "The data points for this series."
}
},
"additionalProperties": false,
"description": "A metric value for a single breakdown series."
},
"AnalyticsQueryPublicApi.OperationError": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The server-assigned resource path.",
"nullable": true
},
"done": {
"type": "boolean",
"description": "If false, the operation is still in progress. If true, the operation is completed."
},
"error": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.QueryError"
},
"metadata": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.OperationMetadata"
}
},
"additionalProperties": false,
"description": "A completed long-running operation that failed with an error."
},
"AnalyticsQueryPublicApi.OperationMetadata": {
"type": "object",
"properties": {
"createdTime": {
"type": "string",
"description": "The time the operation was created.",
"format": "date-time",
"nullable": true
}
},
"additionalProperties": false,
"description": "The metadata associated with a long-running operation."
},
"AnalyticsQueryPublicApi.QueryError": {
"required": ["message"],
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "The error code.",
"format": "int32"
},
"message": {
"type": "string",
"description": "The message associated with the query error."
}
},
"additionalProperties": false,
"description": "The error returned from a query request."
},
"AnalyticsQueryPublicApi.QueryFilter": {
"required": ["dimension", "operation"],
"type": "object",
"properties": {
"dimension": {
"type": "string",
"description": "The dimension name to filter on."
},
"values": {
"type": "array",
"items": {
"type": "string"
},
"description": "The values to filter by."
},
"operation": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.FilterOperation"
}
},
"additionalProperties": false,
"description": "A filter applied to a query dimension."
},
"AnalyticsQueryPublicApi.QueryRequest": {
"required": ["endTime", "granularity", "metric", "startTime"],
"type": "object",
"properties": {
"metric": {
"type": "string",
"description": "The metric to query."
},
"granularity": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.MetricGranularity"
},
"startTime": {
"type": "string",
"description": "The inclusive start of the query time range. Any UTC offset is accepted; results are always bucketed in UTC.",
"format": "date-time"
},
"endTime": {
"type": "string",
"description": "The exclusive end of the query time range. Any UTC offset is accepted; results are always bucketed in UTC.",
"format": "date-time"
},
"breakdown": {
"type": "array",
"items": {
"type": "string"
},
"description": "The dimensions to group results by. Each entry is a single dimension name."
},
"filter": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.QueryFilter"
},
"description": "Filters to apply to the query."
},
"limit": {
"type": "integer",
"description": "The maximum number of breakdown series to return.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "A request to query time series metric data."
},
"AnalyticsQueryPublicApi.QueryResponse": {
"type": "object",
"properties": {
"values": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.MetricValue"
},
"description": "The metric values returned by the query."
}
},
"additionalProperties": false,
"description": "The response for a metric query."
},
"ApiEmptyResponseModel": {
"type": "object",
"additionalProperties": false
},
"Asset": {
"type": "object",
"properties": {
"assetType": {
"type": "string",
"description": "The asset type. Required for [Create Asset](#POST-v1-assets).",
"format": "enum"
},
"assetId": {
"type": "integer",
"description": "The unique identifier of the asset. Required for [Update Asset](#PATCH-v1-assets-_asset_).",
"format": "int64",
"readOnly": true
},
"creationContext": {
"$ref": "#/components/schemas/CreationContext"
},
"description": {
"type": "string",
"description": "The description of the asset. Limit to 1000 characters. Required for [Create Asset](#POST-v1-assets)."
},
"displayName": {
"type": "string",
"description": "Display name of the asset. Required for [Create Asset](#POST-v1-assets)."
},
"path": {
"type": "string",
"description": "The returned resource path of the asset. Format: `assets/{assetId}`. Example: `assets/2205400862`."
},
"revisionId": {
"type": "string",
"description": "Revision ID of the asset. Equivalent to `versionNumber`. Every change of the asset automatically commits a new version. The format is an integer string. Example: `1`.",
"readOnly": true
},
"revisionCreateTime": {
"type": "string",
"description": "The creation timestamp of the current revision.",
"format": "date-time",
"readOnly": true
},
"moderationResult": {
"$ref": "#/components/schemas/ModerationResult"
},
"icon": {
"type": "string",
"description": "The resource path for the icon."
},
"previews": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Preview"
},
"description": "A list of previews, each with an asset path and alt text. Previews must be **Image** assets."
},
"state": {
"$ref": "#/components/schemas/State"
},
"socialLink": {
"$ref": "#/components/schemas/SocialLink"
}
},
"description": "Represents an asset."
},
"AssetAction": {
"enum": [
"Invalid",
"Edit",
"Use",
"Download",
"CopyFromRcc",
"UpdateFromRcc"
],
"type": "string",
"description": "Asset permission actions that can be granted.\n \nActions:\n* Invalid - default value, not a valid action.\n* Edit - grants the ability to edit and manage the asset.\n* Use - grants the ability to use the asset.\n* Download - grants the ability to download the asset.\n* CopyFromRcc - grants the ability to copy the asset from RCC, used to enable AssetService:CreatePlaceAsync().\n* UpdateFromRcc - grants the ability to update the asset from RCC, used to enable AssetService:UpdatePlaceAsync().\n \nValid AssetType - SubjectType - Action combinations:\n* Animation - Group/User/Universe - Use\n* Audio - Group/User/Universe - Use\n* Decal - All/Group/User/Universe - Use\n* Image - All/Group/User/Universe - Use\n* Mesh - All/Group/User/Universe - Use\n* MeshPart - Group/User/Universe - Use\n* Model - User - Edit\n * Group/User/Universe - Use\n* Place - All - Download\n * Universe - CopyFromRcc/UpdateFromRcc\n* Video - Group/User/Universe - Use."
},
"AssetGrantRequest": {
"type": "object",
"properties": {
"assetId": {
"type": "integer",
"description": "The asset ID to grant permission to.",
"format": "int64"
},
"grantToDependencies": {
"type": "boolean",
"description": "Whether to extend the permission grant to dependencies of the asset. This will be done asynchronously after the main grant."
},
"parentVersionNumber": {
"type": "integer",
"description": "The version number of 'assetId' to use for determining asset dependencies.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Asset grant requests with additional options to grant to dependencies."
},
"AssetPermissions.Error": {
"type": "object",
"properties": {
"code": {
"$ref": "#/components/schemas/AssetPermissions.ErrorCode"
},
"message": {
"type": "string",
"description": "The human readable error message.",
"nullable": true
}
},
"additionalProperties": false,
"description": "The error object for results."
},
"AssetPermissions.ErrorCode": {
"enum": [
"UnknownError",
"InvalidRequest",
"AssetNotFound",
"CannotManageAsset",
"PublicAssetCannotBeGrantedTo",
"CannotManageSubject",
"SubjectNotFound",
"AssetTypeNotEnabled",
"PermissionLimitReached",
"DependenciesLimitReached",
"NotRequestable",
"RequesterNotAConnection",
"AlreadyPending",
"AlreadyHasAccess",
"RequestNotFound",
"InvalidRequestStatus",
"RateLimited",
"CallerNotOwner",
"BatchSizeLimitExceeded"
],
"type": "string",
"description": "Enums for customized error code in error responses."
},
"AssetPermissions.ErrorResponse": {
"type": "object",
"properties": {
"error": {
"$ref": "#/components/schemas/AssetPermissions.Error"
}
},
"additionalProperties": false,
"description": "The error object for responses."
},
"AssetPrivacy": {
"type": "string",
"description": "The privacy setting of the asset. Requested asset privacy is only applicable to asset types that allow privacy override. For more details see [Asset Privacy](/projects/assets/privacy.md).",
"enum": ["default", "restricted", "openUse"]
},
"AssetQuota": {
"type": "object",
"properties": {
"path": {
"example": "users/123/asset-quotas/some-asset-quota",
"type": "string",
"description": "The resource path of the asset quota.\n\nFormat: `users/{user_id}/asset-quotas/{asset_quota_id}`"
},
"quotaType": {
"example": "QUOTA_TYPE_UNSPECIFIED",
"enum": [
"QUOTA_TYPE_UNSPECIFIED",
"RATE_LIMIT_UPLOAD",
"RATE_LIMIT_CREATOR_STORE_DISTRIBUTE"
],
"type": "string",
"description": "Type of quota.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | QUOTA_TYPE_UNSPECIFIED | The default quota type. |\n | RATE_LIMIT_UPLOAD | Rate limit on how often one can upload an asset. |\n | RATE_LIMIT_CREATOR_STORE_DISTRIBUTE | Rate limit on how often one can distribute an asset on the Creator Store. |",
"format": "enum"
},
"assetType": {
"example": "ASSET_TYPE_UNSPECIFIED",
"enum": [
"ASSET_TYPE_UNSPECIFIED",
"IMAGE",
"TSHIRT",
"AUDIO",
"MESH",
"LUA",
"HAT",
"PLACE",
"MODEL",
"SHIRT",
"PANTS",
"DECAL",
"HEAD",
"FACE",
"GEAR",
"ANIMATION",
"TORSO",
"RIGHT_ARM",
"LEFT_ARM",
"LEFT_LEG",
"RIGHT_LEG",
"YOUTUBE_VIDEO",
"APP",
"CODE",
"PLUGIN",
"SOLID_MODEL",
"MESH_PART",
"HAIR_ACCESSORY",
"FACE_ACCESSORY",
"NECK_ACCESSORY",
"SHOULDER_ACCESSORY",
"FRONT_ACCESSORY",
"BACK_ACCESSORY",
"WAIST_ACCESSORY",
"CLIMB_ANIMATION",
"DEATH_ANIMATION",
"FALL_ANIMATION",
"IDLE_ANIMATION",
"JUMP_ANIMATION",
"RUN_ANIMATION",
"SWIM_ANIMATION",
"WALK_ANIMATION",
"POSE_ANIMATION",
"LOCALIZATION_TABLE_MANIFEST",
"LOCALIZATION_TABLE_TRANSLATION",
"EMOTE_ANIMATION",
"VIDEO",
"TEXTURE_PACK",
"TSHIRT_ACCESSORY",
"SHIRT_ACCESSORY",
"PANTS_ACCESSORY",
"JACKET_ACCESSORY",
"SWEATER_ACCESSORY",
"SHORTS_ACCESSORY",
"LEFT_SHOE_ACCESSORY",
"RIGHT_SHOE_ACCESSORY",
"DRESS_SKIRT_ACCESSORY",
"FONT_FAMILY",
"FONT_FACE",
"MESH_HIDDEN_SURFACE_REMOVAL",
"EYEBROW_ACCESSORY",
"EYELASH_ACCESSORY",
"MOOD_ANIMATION",
"DYNAMIC_HEAD",
"CODE_SNIPPET",
"ADS_VIDEO"
],
"type": "string",
"description": "The asset type the quota is for.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | ASSET_TYPE_UNSPECIFIED | The default asset type. |\n | IMAGE | Image |\n | TSHIRT | Tshirt |\n | AUDIO | Audio |\n | MESH | Mesh |\n | LUA | Lua |\n | HAT | Hat |\n | PLACE | Place |\n | MODEL | Model |\n | SHIRT | Classic Shirt |\n | PANTS | Classic Pants |\n | DECAL | Decal |\n | HEAD | Head |\n | FACE | Face |\n | GEAR | Gear |\n | ANIMATION | Animation |\n | TORSO | Torso |\n | RIGHT_ARM | Right Arm |\n | LEFT_ARM | Left Arm |\n | LEFT_LEG | Left Leg |\n | RIGHT_LEG | Right Leg |\n | YOUTUBE_VIDEO | YouTube Video |\n | APP | App |\n | CODE | Code |\n | PLUGIN | Plugin |\n | SOLID_MODEL | Solid Model |\n | MESH_PART | Mesh Part |\n | HAIR_ACCESSORY | Hair Accessory |\n | FACE_ACCESSORY | Face Accessory |\n | NECK_ACCESSORY | Neck Accessory |\n | SHOULDER_ACCESSORY | Shoulder Accessory |\n | FRONT_ACCESSORY | Front Accessory |\n | BACK_ACCESSORY | Back Accessory |\n | WAIST_ACCESSORY | Waist Accessory |\n | CLIMB_ANIMATION | Climb Animation |\n | DEATH_ANIMATION | Death Animation |\n | FALL_ANIMATION | Fall Animation |\n | IDLE_ANIMATION | Idle Animation |\n | JUMP_ANIMATION | Jump Animation |\n | RUN_ANIMATION | Run Animation |\n | SWIM_ANIMATION | Swim Animation |\n | WALK_ANIMATION | Walk Animation |\n | POSE_ANIMATION | Pose Animation |\n | LOCALIZATION_TABLE_MANIFEST | Localization Table Manifest |\n | LOCALIZATION_TABLE_TRANSLATION | Localization Table Translation |\n | EMOTE_ANIMATION | Emote Animation |\n | VIDEO | Video |\n | TEXTURE_PACK | Texture Pack |\n | TSHIRT_ACCESSORY | Tshirt Accessory |\n | SHIRT_ACCESSORY | Shirt Accessory |\n | PANTS_ACCESSORY | Pants Accessory |\n | JACKET_ACCESSORY | Jacket Accessory |\n | SWEATER_ACCESSORY | Sweater Accessory |\n | SHORTS_ACCESSORY | Shorts Accessory |\n | LEFT_SHOE_ACCESSORY | Left Shoe Accessory |\n | RIGHT_SHOE_ACCESSORY | Right Shoe Accessory |\n | DRESS_SKIRT_ACCESSORY | Dress Skirt Accessory |\n | FONT_FAMILY | Font Family |\n | FONT_FACE | Font Face |\n | MESH_HIDDEN_SURFACE_REMOVAL | Mesh Hidden Surface Removal |\n | EYEBROW_ACCESSORY | Eyebrow Accessory |\n | EYELASH_ACCESSORY | Eyelash Accessory |\n | MOOD_ANIMATION | Mood Animation |\n | DYNAMIC_HEAD | Dynamic Head |\n | CODE_SNIPPET | Code Snippet |\n | ADS_VIDEO | Ads Video |",
"format": "enum"
},
"usage": {
"type": "integer",
"description": "The current usage of the quota.",
"format": "int64"
},
"capacity": {
"type": "integer",
"description": "The capacity of the quota.",
"format": "int64"
},
"period": {
"example": "PERIOD_UNSPECIFIED",
"enum": ["PERIOD_UNSPECIFIED", "MONTH", "DAY"],
"type": "string",
"description": "The period of time the quota is for.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | PERIOD_UNSPECIFIED | The default period, which is invalid. Specify another value. |\n | MONTH | Month |\n | DAY | Day |",
"format": "enum"
},
"usageResetTime": {
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The time the usage will reset for this quota.",
"format": "date-time"
}
},
"description": "Represents a quota for an asset-related action.\n\nFor example, a user might be able to upload 100 audio files per month and\nhave uploaded 15 already. In this example:\n- `quotaType` is `RATE_LIMIT_UPLOAD`\n- `assetType` is `AUDIO`\n- `usage` is `15`\n- `capacity` is `100`\n- `period` is `MONTH`\n`usageResetTime` indicates when a new period begins and usage resets to 0.\nThis value **doesn't** necessarily correlate with the first day of a\ncalendar month or midnight on a given day. For more information on the\nupload process, see the\n[usage\nguide](https://create.roblox.com/docs/en-us/cloud/open-cloud/usage-assets).",
"x-aep-resource": {
"patterns": ["users/{user_id}/asset-quotas/{asset_quota_id}"],
"plural": "asset-quotas",
"singular": "asset-quota"
},
"x-resource": true
},
"AssetVersion": {
"type": "object",
"properties": {
"creationContext": {
"$ref": "#/components/schemas/CreationContext"
},
"path": {
"type": "string",
"description": "The returned resource path of the asset version. Format: `assets/{assetId}/versions/{version}`. Example: `assets/2205400862/versions/1`."
},
"moderationResult": {
"$ref": "#/components/schemas/ModerationResult"
},
"published": {
"type": "boolean",
"description": "Only applies to place asset types. Indicates if the place has been published or not."
}
},
"description": "An asset version."
},
"AssignRoleGroupMembershipRequest": {
"required": ["role"],
"type": "object",
"properties": {
"role": {
"example": "groups/123/roles/456",
"type": "string",
"description": "The resource path of the role to assign.\n\nFormat: `groups/{group_id}/roles/{group_role_id}`"
}
},
"description": "Assigns a role to the specified group membership."
},
"AttributeAggregationFunction": {
"enum": ["Invalid", "Average", "Median", "Sum"],
"type": "string",
"description": "Matchmaking attribute aggregation function type."
},
"Audio": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/ToolboxService.Asset"
}
],
"properties": {
"durationSeconds": {
"type": "integer",
"description": "The duration of the audio file in seconds.",
"format": "int32"
},
"audioType": {
"allOf": [
{
"$ref": "#/components/schemas/SearchAudioTypeModel"
}
],
"description": "The type of audio (Music or SoundEffect).",
"deprecated": true,
"x-enumNames": ["Music", "SoundEffect", "Unknown"],
"x-enum-varnames": ["Music", "SoundEffect", "Unknown"]
},
"artist": {
"type": "string",
"description": "The audio artist.",
"nullable": true
},
"title": {
"type": "string",
"description": "The audio title.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Representation of an audio asset.",
"nullable": true
},
"AudioSearchFilters": {
"type": "object",
"properties": {
"audioTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchAudioTypeModel"
},
"description": "Audio types to include (e.g. Music, SoundEffect)",
"nullable": true
},
"minDurationSeconds": {
"maximum": 2147483647,
"minimum": 0,
"type": "integer",
"description": "The minimum duration for audio in seconds. If included, must be greater than or equal to 0.",
"format": "int32"
},
"maxDurationSeconds": {
"maximum": 2147483647,
"minimum": 1,
"type": "integer",
"description": "The maximum duration for audio in seconds. If included, must be greater than or equal to 1.",
"format": "int32",
"nullable": true
},
"artist": {
"type": "string",
"description": "The name of the artist to filter by.",
"nullable": true
},
"album": {
"type": "string",
"description": "The name of the album to filter by.",
"nullable": true
},
"musicChartType": {
"allOf": [
{
"$ref": "#/components/schemas/MusicChartType"
}
],
"description": "Indicates which music charts to filter from.",
"x-enumNames": ["None", "Current", "Week", "Month", "Year"],
"x-enum-varnames": ["None", "Current", "Week", "Month", "Year"]
}
},
"additionalProperties": false,
"description": "Audio-specific search filter parameters.",
"nullable": true
},
"BatchGrantPermissionsRequest": {
"type": "object",
"properties": {
"subjectType": {
"$ref": "#/components/schemas/SubjectType"
},
"subjectId": {
"type": "string",
"description": "The subject ID to grant to. Must be empty for SubjectType 'All'.",
"nullable": true
},
"action": {
"$ref": "#/components/schemas/AssetAction"
},
"requests": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetGrantRequest"
},
"description": "Array of asset grant requests. If populated, 'requests' will override 'assetIds'.",
"nullable": true
},
"assetIds": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "[Deprecated] The list of asset IDs to grant this permission to. 'requests' will be prioritized over this list.",
"nullable": true,
"deprecated": true
},
"enableDeepAccessCheck": {
"type": "boolean",
"description": "[Do not use] An optional boolean to indicate if a deep access check should be done. This is not intended for public use."
}
},
"additionalProperties": false,
"description": "Request object to grant one permission to multiple assets."
},
"BatchGrantPermissionsResponse": {
"type": "object",
"properties": {
"successAssetIds": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "The list of asset IDs that granted successfully.",
"nullable": true
},
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GrantPermissionError"
},
"description": "The list of grants that had errors.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response object to grant one permission to multiple assets."
},
"BulkDeleteSavesRequest": {
"required": ["targets"],
"type": "object",
"properties": {
"targets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DeleteSaveRequest"
},
"description": "A list of saves being deleted",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request model for bulk deleting saves",
"nullable": true
},
"BulkDeleteSavesResponse": {
"type": "object",
"properties": {
"deletedCount": {
"type": "integer",
"description": "Number of saves that were successfully deleted",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Response model for bulk delete saves operation",
"nullable": true
},
"CalculateExperimentMdeData": {
"type": "object",
"properties": {
"exposurePercent": {
"type": "integer",
"description": "Exposure percent in range 0-100. Percent of eligible users seeing the experiment.",
"format": "int32"
},
"durationSeconds": {
"type": "integer",
"description": "Planned duration of the experiment in whole seconds.\r\nValues must be an exact multiple of `86400`.",
"format": "int64"
},
"baselineWeight": {
"type": "number",
"description": "Relative weight (in [0, 100]) for the baseline (control) variant.",
"format": "double"
},
"variantWeights": {
"type": "array",
"items": {
"type": "number",
"format": "double"
},
"description": "Relative weights (each in [0, 100]) for each non-baseline variant.",
"nullable": true
},
"universeGoalMetric": {
"allOf": [
{
"$ref": "#/components/schemas/UniverseExperimentMetric"
}
],
"description": "The goal metric whose detectable effect is being calculated.\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME\n\nUNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER",
"x-enum-varnames": [
"AverageSessionTime",
"PlaytimePerUser",
"Day1Retention",
"Day7Retention",
"PayerConversionRate",
"AverageRevenuePerUser",
"AverageRevenuePerPayingUser"
]
},
"targetingCriteria": {
"allOf": [
{
"$ref": "#/components/schemas/TargetingCriteria"
}
],
"description": "Targeting criteria used to scope the analytics window.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request body for\r\n`POST /v1/experimentation/universes/{universeId}/experiments:calculateMde`."
},
"CalculateExperimentMdeResponse": {
"type": "object",
"properties": {
"operation": {
"allOf": [
{
"$ref": "#/components/schemas/MdeOperation"
}
],
"description": "The MDE async operation.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for\r\n`POST /v1/experimentation/universes/{universeId}/experiments:calculateMde`."
},
"CategoryResponse": {
"type": "object",
"properties": {
"category": {
"allOf": [
{
"$ref": "#/components/schemas/EventCategory"
}
],
"description": "The event category type of an event.\r\n \r\nMirror of:\r\nhttps://github.rbx.com/Roblox/virtual-events/blob/master/services/virtual-events/src/Implementations/Types/EventCategory.cs"
},
"rank": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"ClientStatusGetRequest": {
"type": "object",
"properties": {
"browserTrackerId": {
"type": "integer",
"description": "The client's browser tracker id.",
"format": "int64",
"nullable": true
}
},
"additionalProperties": false,
"description": "Get Client Status request."
},
"ClientStatusSetRequest": {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "The client's status to send.",
"nullable": true
},
"browserTrackerId": {
"type": "integer",
"description": "The client's browser tracker id.",
"format": "int64",
"nullable": true
}
},
"additionalProperties": false,
"description": "Set Client Status request."
},
"CompleteExperimentRequest": {
"type": "object",
"properties": {
"variantId": {
"type": "string",
"description": "ID of the variant to roll out as the winning variant. If omitted, the experiment is\r\nstopped without rolling out a winner.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request body for\r\n`POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:complete`."
},
"CompleteExperimentResponse": {
"type": "object",
"properties": {
"operation": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentOperation"
}
],
"description": "The async operation that completed the experiment.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for\r\n`POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:complete`."
},
"ConditionalRuleDefinition": {
"type": "object",
"properties": {
"tokens": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RpnTokenDto"
},
"description": "Postfix RPN token sequence.",
"nullable": true
}
},
"additionalProperties": false,
"description": "JSON shape of an RPN conditional rule in public API requests."
},
"ConditionalRulesChangesPayload": {
"type": "object",
"properties": {
"rulesOrder": {
"allOf": [
{
"$ref": "#/components/schemas/RulesOrderDeltaPayload"
}
],
"nullable": true
},
"rules": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RuleDeltaPayload"
},
"nullable": true
}
},
"additionalProperties": false,
"description": "Minimal delta for conditional rules on a revision (optional extension on list revisions)."
},
"ConditionalRulesPayload": {
"type": "object",
"properties": {
"rules": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ConditionalRuleDefinition"
},
"description": "RPN rules keyed by condition id. On `draft:overwrite`, omitting a rule id that exists on published removes that rule; JSON `null` tombstones;\r\n`{ \"tokens\": [] }` is an explicit empty rule.",
"nullable": true
},
"rulesOrder": {
"type": "array",
"items": {
"type": "string"
},
"description": "Evaluation order (condition ids).",
"nullable": true
}
},
"additionalProperties": false,
"description": "Public JSON shape for conditional rules (`rules` + `rulesOrder`), aligned with CMS `ConditionalRules`."
},
"ConfigDraftEntry": {
"type": "object",
"properties": {
"value": {
"description": "The value of the configuration entry.",
"nullable": true
},
"description": {
"type": "string",
"description": "A description of the configuration entry.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A draft entry containing a value and optional description."
},
"ConfigRepositoryDraft": {
"type": "object",
"properties": {
"draftHash": {
"type": "string",
"description": "The hash of the draft for concurrency control.",
"nullable": true
},
"entries": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ConfigDraftEntry"
},
"description": "The configuration entries in the draft (key to value and optional description).",
"nullable": true
},
"conditionalRules": {
"allOf": [
{
"$ref": "#/components/schemas/ConditionalRulesPayload"
}
],
"description": "Conditional rules staged on the draft, when any exist.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A representation of the current draft changes for a configuration repository."
},
"ConfigRepositoryFull": {
"type": "object",
"properties": {
"entries": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ConfigValueFull"
},
"description": "The configuration entries (key-value with metadata such as description, last modified/accessed times).",
"nullable": true
},
"metadata": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigRepositoryMetadata"
}
],
"description": "Metadata about the configuration repository.",
"nullable": true
},
"conditionalRules": {
"allOf": [
{
"$ref": "#/components/schemas/ConditionalRulesPayload"
}
],
"description": "Conditional RPN rules and evaluation order, when any exist.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A full representation of a configuration repository, including all entries and their metadata."
},
"ConfigRepositoryMetadata": {
"type": "object",
"properties": {
"configVersion": {
"type": "integer",
"description": "The version of the configuration repository.",
"format": "int64"
}
},
"additionalProperties": false,
"description": "Metadata about the configuration repository."
},
"ConfigRepositoryValues": {
"type": "object",
"properties": {
"metadata": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigRepositoryMetadata"
}
],
"description": "Metadata about the configuration repository.",
"nullable": true
},
"entries": {
"type": "object",
"additionalProperties": {
"nullable": true
},
"description": "The configuration entries (key-value pairs) in the repository.",
"nullable": true
},
"conditionalRules": {
"allOf": [
{
"$ref": "#/components/schemas/ConditionalRulesPayload"
}
],
"description": "Conditional RPN rules and evaluation order, when any exist.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A representation of a configuration repository with just the values (no metadata or decorators).\r\nThis response can be used as a direct copy-and-paste to the draft update endpoints."
},
"ConfigResponse": {
"type": "object",
"properties": {
"recurrence": {
"type": "string",
"description": "Cron expression defining the event's recurrence schedule, if any.",
"nullable": true
},
"recurrenceEndTime": {
"type": "string",
"description": "The latest UTC timestamp at which automatic recurrence scheduling can occur.",
"format": "date-time",
"nullable": true
},
"notificationAudience": {
"allOf": [
{
"$ref": "#/components/schemas/EventNotificationAudience"
}
],
"description": "The audience that should receive notifications for this event."
}
},
"additionalProperties": false
},
"ConfigValueFull": {
"type": "object",
"properties": {
"variants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ConfigVariantDto"
},
"description": "Non-default branches (e.g. conditional), when present.",
"nullable": true
},
"value": {
"description": "The value of the configuration entry.",
"nullable": true
},
"description": {
"type": "string",
"description": "A description of the configuration entry.",
"nullable": true
},
"lastModifiedTime": {
"type": "string",
"description": "The time when the configuration entry was last modified.",
"format": "date-time"
},
"lastAccessedTime": {
"type": "string",
"description": "The time when the configuration entry was last accessed.",
"format": "date-time"
}
},
"additionalProperties": false,
"description": "A full representation of a configuration value, including its metadata."
},
"ConfigVariantDto": {
"type": "object",
"properties": {
"type": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigVariantType"
}
],
"description": "Variant discriminator (e.g. conditional branch).\n\nconditional",
"x-enum-varnames": ["Conditional"]
},
"variantTypeId": {
"type": "string",
"description": "Identifier for this variant within CreatorConfigsPublicApi.Models.ConfigVariantDto.Type (e.g. conditional rule id for CreatorConfigsPublicApi.Models.ConfigVariantType.Conditional).",
"nullable": true
},
"value": {
"nullable": true
}
},
"additionalProperties": false,
"description": "A non-default branch on a config entry (public API discriminated variant)."
},
"ConfigVariantType": {
"enum": ["conditional"],
"type": "string",
"description": "Discriminator for entries in CreatorConfigsPublicApi.Models.ConfigVariantDto variant lists (full config and revision snapshots).\n\nconditional",
"x-enum-varnames": ["Conditional"]
},
"ContentMessage": {
"type": "object",
"properties": {
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the message was created.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the message was last updated.",
"format": "date-time"
},
"plainText": {
"type": "string",
"description": "The plain text content of the message."
},
"author": {
"readOnly": true,
"example": "users/156",
"type": "string",
"description": "The resource path of the user who created the message."
},
"messageReaction": {
"readOnly": true,
"type": "array",
"items": {
"$ref": "#/components/schemas/MessageReaction"
},
"description": "The reactions to the message, if this feature is enabled for this message."
}
},
"description": "Represents the content of a message.",
"x-oneOf": {
"Author": ["author"],
"content": ["plainText"]
}
},
"CreateCustomMatchmakingSignalRequest": {
"type": "object",
"properties": {
"scoringConfigurationId": {
"type": "string",
"description": "The ID of the scoring configuration that has the signal to be created.",
"nullable": true
},
"signalConfiguration": {
"$ref": "#/components/schemas/CustomSignalConfiguration"
}
},
"additionalProperties": false,
"description": "Request to create a custom matchmaking signal."
},
"CreateCustomMatchmakingSignalResponse": {
"type": "object",
"properties": {
"scoringConfiguration": {
"$ref": "#/components/schemas/MatchmakingScoringConfiguration"
}
},
"additionalProperties": false,
"description": "Response to create a custom matchmaking signal."
},
"CreateEntryRequest": {
"required": ["value"],
"type": "object",
"properties": {
"value": {
"type": "integer",
"description": "The value to set the new entry. If the input value exceeds the maximum value supported by int64, which is 9,223,372,036,854,775,807, the request fails with a 400 Bad Request error.",
"format": "int64"
}
},
"description": "Creates a new entry with the value provided."
},
"CreateExperimentData": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Experiment display name.",
"nullable": true
},
"description": {
"type": "string",
"description": "Experiment description.",
"nullable": true
},
"experimentConfiguration": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentConfiguration"
}
],
"description": "Experiment configuration (variants + product-type-specific data).",
"nullable": true
},
"exposurePercent": {
"type": "integer",
"description": "Exposure percent in range 0-100. Percent of eligible users seeing the experiment.",
"format": "int32"
},
"targetingCriteria": {
"allOf": [
{
"$ref": "#/components/schemas/TargetingCriteria"
}
],
"description": "Targeting criteria scoping which users are eligible for the experiment.",
"nullable": true
},
"durationSeconds": {
"type": "integer",
"description": "Experiment duration in whole seconds.",
"format": "int64"
},
"universeGoalMetric": {
"allOf": [
{
"$ref": "#/components/schemas/UniverseExperimentMetric"
}
],
"description": "Goal metric for the experiment.\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME\n\nUNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER",
"x-enum-varnames": [
"AverageSessionTime",
"PlaytimePerUser",
"Day1Retention",
"Day7Retention",
"PayerConversionRate",
"AverageRevenuePerUser",
"AverageRevenuePerPayingUser"
]
}
},
"additionalProperties": false,
"description": "Request body for `POST /v1/experimentation/universes/{universeId}/experiments`.\r\nPayload describing a new experiment."
},
"CreateExperimentResponse": {
"type": "object",
"properties": {
"operation": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentOperation"
}
],
"description": "Resulting async operation describing the create call.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for POST /v1/universes/{universeId}/experiment."
},
"CreateGameEventConfigRequest": {
"type": "object",
"properties": {
"recurrence": {
"type": "string",
"description": "Cron expression for recurrence. Null = no recurrence. Validated server-side.",
"nullable": true
},
"recurrenceEndTime": {
"type": "string",
"format": "date-time",
"nullable": true
},
"notificationAudience": {
"allOf": [
{
"$ref": "#/components/schemas/EventNotificationAudience"
}
],
"nullable": true
}
},
"additionalProperties": false,
"description": "Optional event configuration block (recurrence + notification audience) on the v3 Create body."
},
"CreateGameEventRequest": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Event title. Clients must provide a non-empty value.",
"nullable": true
},
"subtitle": {
"type": "string",
"description": "Event subtitle. Clients must provide a non-empty value.",
"nullable": true
},
"description": {
"type": "string",
"description": "Optional event description.",
"nullable": true
},
"startTime": {
"type": "string",
"description": "Event start time. Clients must provide a timestamp such as\r\n`yyyy-MM-ddTHH:mm:ss.fffzzz` or `yyyy-MM-ddTHH:mm:ss.fffZ`.",
"format": "date-time",
"nullable": true
},
"endTime": {
"type": "string",
"description": "Event end time. Clients must provide a timestamp such as\r\n`yyyy-MM-ddTHH:mm:ss.fffzzz` or `yyyy-MM-ddTHH:mm:ss.fffZ`, and it must be after\r\nVirtualEventsApi.Models.V3.Request.CreateGameEventRequest.StartTime.",
"format": "date-time",
"nullable": true
},
"visibility": {
"allOf": [
{
"$ref": "#/components/schemas/EventVisibility"
}
],
"description": "Must be `Public` or `Private`; `Moderated` is server-managed and rejected.",
"nullable": true
},
"groupId": {
"type": "integer",
"description": "Group host. When omitted, the authenticated user is the host.",
"format": "int64",
"nullable": true
},
"placeId": {
"type": "integer",
"description": "Optional venue place ID. When omitted, the event is created in the universe root place.",
"format": "int64",
"nullable": true
},
"categories": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EventRankedCategory"
},
"nullable": true
},
"thumbnails": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EventMedia"
},
"nullable": true
},
"config": {
"allOf": [
{
"$ref": "#/components/schemas/CreateGameEventConfigRequest"
}
],
"description": "Optional event configuration block (recurrence + notification audience) on the v3 Create body.",
"nullable": true
},
"featuringStatus": {
"allOf": [
{
"$ref": "#/components/schemas/FeaturingStatus"
}
],
"description": "Optional featuring status flag. When omitted, defaults to \"not featured\".",
"nullable": true
},
"tagline": {
"type": "string",
"description": "Optional tagline. Length and content are validated server-side.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request body for `POST /v3/universes/{universeId}/game-events`.\r\n`universeId` comes from the URL path, not the body.\r\nVirtualEventsApi.Models.V3.Request.CreateGameEventRequest.Visibility is restricted to Public/Private — Moderated is server-side only.\r\nNullable CLR properties allow JSON binding to materialize incomplete requests; required\r\nfields are enforced by the virtual-events gRPC service when `CreateVirtualEvent` runs."
},
"CreateGroupInvitationRequestModel": {
"required": ["recipientUserId"],
"type": "object",
"properties": {
"recipientUserId": {
"type": "integer",
"description": "The user to invite.",
"format": "int64"
},
"roleIds": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "Group role ids to grant when the invitation is accepted.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request for inviting a user to a group."
},
"CreateMatchmakingPlayerAttributeDefinitionRequest": {
"type": "object",
"properties": {
"universeId": {
"type": "integer",
"description": "UniverseId for the new PlayerAttributeDefinition.",
"format": "int64"
},
"name": {
"type": "string",
"description": "Name of the new rule.",
"nullable": true
},
"dataType": {
"$ref": "#/components/schemas/MatchmakingAttributeDataType"
},
"defaultValue": {
"$ref": "#/components/schemas/MatchmakingAttributeValue"
},
"attributeValueLocation": {
"$ref": "#/components/schemas/MatchmakingAttributeValueLocation"
}
},
"additionalProperties": false,
"description": "Request to create a new MatchmakingPlayerAttributeDefinition."
},
"CreateMatchmakingPlayerAttributeDefinitionResponse": {
"type": "object",
"properties": {
"playerAttributeDefinition": {
"$ref": "#/components/schemas/MatchmakingPlayerAttributeDefinition"
}
},
"additionalProperties": false,
"description": "The response for creating a matchmaking player attribute definition."
},
"CreateMatchmakingScoringConfigurationRequest": {
"type": "object",
"properties": {
"universeId": {
"type": "integer",
"description": "UniverseId for the new matchmaking scoring configuraiton.",
"format": "int64"
},
"name": {
"type": "string",
"description": "Name of the scoring configuration.",
"nullable": true
},
"matchmakingSignalWeights": {
"type": "object",
"properties": {
"Invalid": {
"type": "number",
"format": "double"
},
"Occupancy": {
"type": "number",
"format": "double"
},
"Age": {
"type": "number",
"format": "double"
},
"Language": {
"type": "number",
"format": "double"
},
"Latency": {
"type": "number",
"format": "double"
},
"PreferredPlayers": {
"type": "number",
"format": "double"
},
"VoiceChat": {
"type": "number",
"format": "double"
},
"DeviceType": {
"type": "number",
"format": "double"
},
"PlayHistory": {
"type": "number",
"format": "double"
},
"TextChat": {
"type": "number",
"format": "double"
}
},
"additionalProperties": false,
"description": "The desired set of weights for each matchmaking signal.",
"nullable": true
},
"customSignalWeights": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double",
"nullable": true
},
"description": "The desired set of weights for custom signals. It is a map from custom signal name to its weight.",
"nullable": true
},
"template": {
"$ref": "#/components/schemas/MatchmakingScoringConfigurationTemplate"
}
},
"additionalProperties": false,
"description": "Request to create a matchmaking scoring configuration."
},
"CreateMatchmakingScoringConfigurationResponse": {
"type": "object",
"properties": {
"scoringConfiguration": {
"$ref": "#/components/schemas/MatchmakingScoringConfiguration"
}
},
"additionalProperties": false,
"description": "Response to create a matchmaking scoring configuration."
},
"CreateMatchmakingServerAttributeDefinitionRequest": {
"type": "object",
"properties": {
"universeId": {
"type": "integer",
"description": "UniverseId for the new PlayerAttributeDefinition.",
"format": "int64"
},
"name": {
"type": "string",
"description": "Name of the new rule.",
"nullable": true
},
"dataType": {
"$ref": "#/components/schemas/MatchmakingAttributeDataType"
},
"defaultValue": {
"$ref": "#/components/schemas/MatchmakingServerAttributeDefaultValue"
}
},
"additionalProperties": false,
"description": "Request to create a new ServerAttributeDefinition."
},
"CreateMatchmakingServerAttributeDefinitionResponse": {
"type": "object",
"properties": {
"playerAttributeDefinition": {
"$ref": "#/components/schemas/MatchmakingServerAttributeDefinition"
}
},
"additionalProperties": false,
"description": "The response for creating a matchmaking server attribute definition."
},
"CreateSaveRequest": {
"required": ["targetId", "targetType"],
"type": "object",
"properties": {
"targetType": {
"allOf": [
{
"$ref": "#/components/schemas/SearchCategoryType"
}
],
"description": "The type of asset being saved",
"x-enumNames": [
"Audio",
"Model",
"Decal",
"Plugin",
"MeshPart",
"Video",
"FontFamily"
],
"x-enum-varnames": [
"Audio",
"Model",
"Decal",
"Plugin",
"MeshPart",
"Video",
"FontFamily"
]
},
"targetId": {
"type": "integer",
"description": "The ID of the asset being saved",
"format": "int64"
},
"collectionName": {
"type": "string",
"description": "Custom collections are not currently supported.\nThis field should be omitted.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request model for creating a save",
"nullable": true
},
"CreateThumbnailPersonalizationRequest": {
"required": ["homepageThumbnailIds"],
"type": "object",
"properties": {
"homepageThumbnailIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "The homepage thumbnail identifiers to include in the configuration. Up to five are supported."
}
},
"additionalProperties": false,
"description": "The request to create a thumbnail personalization configuration."
},
"CreationContext": {
"type": "object",
"properties": {
"assetPrivacy": {
"$ref": "#/components/schemas/AssetPrivacy",
"description": "Desired privacy setting for the asset on creation. Only applies to asset types that support privacy override.",
"required": false,
"writeOnly": true
},
"creator": {
"$ref": "#/components/schemas/Creator",
"required": true
},
"expectedPrice": {
"type": "integer",
"description": "Expected asset upload fee in Robux. When the actual price is more than expected, the operation fails with a 400 error.",
"format": "int64",
"writeOnly": true
}
},
"description": "The context of creation that is not part of the asset content, such as metadata and creator information. Required for [Create Asset](#POST-v1-assets)."
},
"Creator": {
"type": "object",
"properties": {
"userId": {
"type": "integer",
"description": "The User ID the creator. Required if the asset is individual-user-owned.",
"format": "int64"
},
"groupId": {
"type": "integer",
"description": "The Group ID. Required if the asset is group-owned.",
"format": "int64"
}
},
"description": "Represents a creator."
},
"CreatorModelV2": {
"required": ["creator"],
"type": "object",
"properties": {
"creator": {
"type": "string",
"description": "Deprecated: Please refer to the 'userId' and 'groupId' properties instead.\nThe creator type and ID. E.g. user/123 or group/456.",
"nullable": true,
"deprecated": true
},
"userId": {
"type": "integer",
"description": "The User ID of the creator. Required if the asset is individual-user-owned.",
"format": "int64",
"nullable": true
},
"groupId": {
"type": "integer",
"description": "The Group ID. Required if the asset is group-owned.",
"format": "int64",
"nullable": true
},
"name": {
"type": "string",
"description": "The creator's name.",
"nullable": true
},
"verified": {
"type": "boolean",
"description": "Whether the creator is verified.",
"nullable": true
},
"latestGroupUpdaterUserId": {
"type": "integer",
"description": "This value only exists for group-based creators and represents the User ID of the creator who most recently updated the asset.",
"format": "int64",
"nullable": true
},
"latestGroupUpdaterUserName": {
"type": "string",
"description": "This value only exists for group-based creators and represents the name of the creator who most recently updated the asset.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Model representing a creator.",
"nullable": true
},
"CreatorStoreAsset": {
"required": ["asset"],
"type": "object",
"properties": {
"voting": {
"allOf": [
{
"$ref": "#/components/schemas/VotingModel"
}
],
"description": "The asset's voting details.",
"nullable": true
},
"creator": {
"allOf": [
{
"$ref": "#/components/schemas/CreatorModelV2"
}
],
"description": "The asset creator's details.",
"nullable": true
},
"creatorStoreProduct": {
"allOf": [
{
"$ref": "#/components/schemas/ToolboxService.CreatorStoreProduct"
}
],
"description": "The asset's product details.",
"nullable": true
},
"asset": {
"oneOf": [
{
"$ref": "#/components/schemas/ToolboxService.Asset"
},
{
"$ref": "#/components/schemas/Audio"
},
{
"$ref": "#/components/schemas/Decal"
},
{
"$ref": "#/components/schemas/MeshPart"
},
{
"$ref": "#/components/schemas/Model"
},
{
"$ref": "#/components/schemas/Music"
},
{
"$ref": "#/components/schemas/Plugin"
},
{
"$ref": "#/components/schemas/SoundEffect"
}
],
"description": "The asset information.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Representation of a creator store asset.",
"nullable": true
},
"CreatorStoreCapabilitiesModel": {
"type": "object",
"properties": {
"shouldSandbox": {
"type": "boolean",
"description": "Controls whether the model will be sandboxed upon insertion when it has scripts."
}
},
"additionalProperties": false,
"description": "Represents the capabilities that a model has (e.g. sandboxing).\nOnly present for model asset types; AMRS includes it in the response when available.",
"nullable": true
},
"CreatorStoreProduct": {
"type": "object",
"properties": {
"path": {
"example": "creator-store-products/123",
"type": "string",
"description": "The resource path of the creator store product.\n\nFormat: `creator-store-products/{creator_store_product_id}`"
},
"basePrice": {
"$ref": "#/components/schemas/Money",
"description": "The base price of the product. For more information, see\n[Money](/cloud/reference/types.md#money). Each product type (such as\n`pluginAssetId`) supports a set of specific prices. Currently, only setting\na base price in USD is supported.\n\nDepending on type, each Creator Store product has a fixed set of supported\nprices; see the `productType` attribute for the full list. For example, to\nset the price of a plugin to $4.99, use the following base price:\n```\n\"basePrice\": {\n \"currencyCode\": \"USD\",\n \"quantity\": {\n \"significand\": 4990000000,\n \"exponent\": -9\n }\n}\n```\n\nNote: The exponent **must** be -9, and the significand must be in this\nformat. The corresponding [Decimal](/cloud/reference/types.md#decimal)\nformat is `significand * 10^exponent`.\n\nIf you want to set the price of a plugin to $0 (i.e. free), use the\nfollowing `base_price`\n\n```\n\"basePrice\": {\n \"currencyCode\": \"USD\",\n \"quantity\": {\n \"significand\": 0,\n \"exponent\": 0\n }\n}\n```\n\nNote: You must still set the `currencyCode` to USD, even for\nfree products.\n\nThe actual purchase price is based on this base price, but often differs\nslightly due to locale-specific considerations.\n\nSet this to zero to make the product free."
},
"purchasePrice": {
"$ref": "#/components/schemas/Money",
"description": "The effective purchase price for the user, after factoring in\nlocale-specific considerations."
},
"published": {
"example": true,
"type": "boolean",
"description": "Whether the seller intends to distribute the Creator Store product on\nthe Creator Store. A seller might intend to distribute a product, but due\nto some restrictions on the seller or underlying Creator Store product, the\nproduct may not be available for purchase. See\n`restrictions` and `purchasable` for more details."
},
"restrictions": {
"readOnly": true,
"type": "array",
"items": {
"example": "RESTRICTION_UNSPECIFIED",
"enum": [
"RESTRICTION_UNSPECIFIED",
"SOLD_ITEM_RESTRICTED",
"SELLER_TEMPORARILY_RESTRICTED",
"SELLER_PERMANENTLY_RESTRICTED",
"SELLER_NO_LONGER_ACTIVE"
],
"type": "string",
"format": "enum"
},
"description": "Restrictions applied to the product. A product can have multiple\nrestrictions active at one time.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | RESTRICTION_UNSPECIFIED | Unspecified restriction. |\n | SOLD_ITEM_RESTRICTED | The item being sold has been restricted by Roblox Details may be available by looking up that item directly. |\n | SELLER_TEMPORARILY_RESTRICTED | The product is restricted because the seller's account is temporarily restricted by Roblox. |\n | SELLER_PERMANENTLY_RESTRICTED | The product is restricted because the seller's account is permanently restricted by Roblox. |\n | SELLER_NO_LONGER_ACTIVE | The product is restricted because the seller's account was deleted or is otherwise no longer active. |"
},
"purchasable": {
"readOnly": true,
"example": true,
"type": "boolean",
"description": "Whether the product is purchasable.\n\nFor this value to be true, `published` must be true and `restrictions` must\nbe empty. If this value is false, the product may not be acquired by any\nuser."
},
"userSeller": {
"readOnly": true,
"type": "string",
"description": "The Roblox user selling the product."
},
"groupSeller": {
"readOnly": true,
"type": "string",
"description": "The Roblox group selling the product."
},
"modelAssetId": {
"type": "string",
"description": "The Creator Store product is a model with this asset ID.",
"x-immutable": true
},
"pluginAssetId": {
"type": "string",
"description": "The Creator Store product is a plugin with this asset ID.\n\nSupported base prices in USD: $0, $4.99, $5.99, $6.99, $7.99, $8.99,\n$9.99, $10.99, $11.99, $12.99, $13.99, $14.99, $15.99, $16.99, $17.99,\n$18.99, $19.99, $24.99, $29.99, $34.99, $39.99, $44.99, $49.99, $59.99,\n$69.99, $79.99, $89.99, $99.99, $149.99, $199.99, $249.99",
"x-immutable": true
},
"audioAssetId": {
"type": "string",
"description": "The Creator Store product is an audio file with this asset ID.",
"x-immutable": true
},
"decalAssetId": {
"type": "string",
"description": "The Creator Store product is a decal with this asset ID.",
"x-immutable": true
},
"meshPartAssetId": {
"type": "string",
"description": "The Creator Store product is a mesh part with this asset ID.",
"x-immutable": true
},
"videoAssetId": {
"type": "string",
"description": "The Creator Store product is a video with this asset ID.",
"x-immutable": true
},
"fontFamilyAssetId": {
"type": "string",
"description": "The Creator Store product is a font family with this asset ID.",
"x-immutable": true
}
},
"description": "Represents a product in the Creator Store. This resource is used to manage\ndistribution and pricing of assets on the Creator Store.",
"x-aep-resource": {
"patterns": ["creator-store-products/{creator_store_product_id}"],
"plural": "creator-store-products",
"singular": "creator-store-product"
},
"x-resource": true,
"x-oneOf": {
"productType": [
"modelAssetId",
"pluginAssetId",
"audioAssetId",
"decalAssetId",
"meshPartAssetId",
"videoAssetId",
"fontFamilyAssetId"
],
"seller": ["userSeller", "groupSeller"]
}
},
"CursorPagingDirection": {
"enum": ["Forward", "Backward"],
"type": "string"
},
"CustomSignalConfiguration": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the signal.",
"nullable": true
},
"weight": {
"type": "number",
"description": "The weight of the signal.",
"format": "double",
"nullable": true
},
"customSignalType": {
"$ref": "#/components/schemas/CustomSignalType"
},
"playerCategoricalSignalConfiguration": {
"$ref": "#/components/schemas/PlayerCategoricalSignalConfiguration"
},
"serverCategoricalSignalConfiguration": {
"$ref": "#/components/schemas/ServerCategoricalSignalConfiguration"
},
"serverNumericalSignalConfiguration": {
"$ref": "#/components/schemas/ServerNumericalSignalConfiguration"
},
"playerNumericalSignalConfiguration": {
"$ref": "#/components/schemas/PlayerNumericalSignalConfiguration"
},
"description": {
"type": "string",
"description": "A text description of the custom signal.",
"nullable": true
}
},
"additionalProperties": false,
"description": "The custom signal configuration using a developer created attribute."
},
"CustomSignalType": {
"enum": [
"Invalid",
"PlayerCategorical",
"ServerCategorical",
"ServerNumerical",
"PlayerNumerical"
],
"type": "string",
"description": "The custom signal type."
},
"DataStore": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/data-stores/some-data-store",
"type": "string",
"description": "The resource path of the data store.\n\nFormat: `universes/{universe_id}/data-stores/{data_store_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the data store was created.",
"format": "date-time"
},
"expireTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the data store will expire (or did expire).\n\nThis field is set when the data store is soft-deleted and indicates\nwhen it will be permanently removed.",
"format": "date-time"
},
"state": {
"readOnly": true,
"example": "STATE_UNSPECIFIED",
"enum": ["STATE_UNSPECIFIED", "ACTIVE", "DELETED"],
"type": "string",
"description": "The state of the data store.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | STATE_UNSPECIFIED | The default value. This value is used if the state is omitted. |\n | ACTIVE | The data store is active. |\n | DELETED | The data store is deleted. After the expiration time passes, it will be permanently deleted. |",
"format": "enum"
},
"id": {
"readOnly": true,
"type": "string",
"description": "The ID of the data store. Matches the last segment of the path."
}
},
"description": "Represents a data store.",
"x-aep-resource": {
"patterns": ["universes/{universe_id}/data-stores/{data_store_id}"],
"plural": "data-stores",
"singular": "data-store"
},
"x-resource": true
},
"DataStoreEntry": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/data-stores/some-data-store/entries/some-data-store-entry",
"type": "string",
"description": "The resource path of the data store entry.\n\nFormats:\n* `universes/{universe_id}/data-stores/{data_store_id}/entries/{data_store_entry_id}`\n* `universes/{universe_id}/data-stores/{data_store_id}/scopes/{data_store_scope_id}/entries/{data_store_entry_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the data store entry was created.",
"format": "date-time"
},
"revisionId": {
"readOnly": true,
"type": "string",
"description": "The revision ID of the data store entry.\n\nA new revision is committed whenever the data store entry is changed in any\nway.\n\nThe format is an arbitrary string.\nExample: \"foo\"",
"x-immutable": true
},
"revisionCreateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the revision was created.",
"format": "date-time"
},
"state": {
"readOnly": true,
"example": "STATE_UNSPECIFIED",
"enum": ["STATE_UNSPECIFIED", "ACTIVE", "DELETED"],
"type": "string",
"description": "The state of the data store entry.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | STATE_UNSPECIFIED | The default value. This value is used if the state is omitted. |\n | ACTIVE | The data store entry is active. The default state of a newly created data store entry. |\n | DELETED | The data store entry is deleted. At some point in the future, it will be permanently deleted. |",
"format": "enum"
},
"etag": {
"type": "string",
"description": "This checksum is computed by the server based on the value of other\nfields, and may be sent on update and delete requests (and potentially\non certain custom methods) to ensure the client has an up-to-date\nvalue before proceeding."
},
"value": {
"$ref": "#/components/schemas/GoogleProtobufValue",
"description": "The value of the entry.\n\nWhen a stored value contains a non-finite Luau number that JSON can't\nrepresent, Open Cloud responses replace the number with a tagged JSON\nobject:\n\n* Positive infinity: `{\"m\": null, \"t\": \"numeric\", \"v\": \"inf\"}`\n* Negative infinity: `{\"m\": null, \"t\": \"numeric\", \"v\": \"-inf\"}`\n* NaN: `{\"m\": null, \"t\": \"numeric\", \"v\": \"nan\"}`"
},
"id": {
"readOnly": true,
"type": "string",
"description": "The resource ID of the entry.\n\nThis matches the last segment of the resource path, and is provided\nonly for convenience."
},
"users": {
"example": "users/123",
"type": "array",
"items": {
"type": "string"
},
"description": "Users associated with the entry.\n\nEach value must be a user resource path in the format `users/{user_id}`,\nnot a bare user ID."
},
"attributes": {
"type": "object",
"description": "An arbitrary set of attributes associated with the entry."
}
},
"description": "A key-value entry in a data store.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/data-stores/{data_store_id}/entries/{data_store_entry_id}",
"universes/{universe_id}/data-stores/{data_store_id}/scopes/{data_store_scope_id}/entries/{data_store_entry_id}"
],
"plural": "data-store-entries",
"singular": "data-store-entry"
},
"x-resource": true
},
"DataStoreLocation": {
"type": "object",
"properties": {
"dataStoreName": {
"type": "string",
"description": "The DataStore name.",
"nullable": true
},
"scope": {
"type": "string",
"description": "The scope of the key in DataStore.",
"nullable": true
},
"keyTemplate": {
"type": "string",
"description": "The key of a DataStore value, with {UserId} replaced by the player's actual ID when fetching values.",
"nullable": true
},
"valuePath": {
"type": "string",
"description": "A JSON path to a value if it lives in a JSON object.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Describes where an attribute value exists in DataStore."
},
"Decal": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/ToolboxService.Asset"
}
],
"properties": {
"textureId": {
"type": "integer",
"description": "The texture id of the decal.",
"format": "int64"
}
},
"additionalProperties": false,
"description": "Representation of a decal asset.",
"nullable": true
},
"Decimal": {
"type": "object",
"properties": {
"significand": {
"type": "integer",
"description": "The significant digits of the number.",
"format": "int64"
},
"exponent": {
"type": "integer",
"description": "Represents the position of the decimal point within the significand.\n\nWhen the exponent is 0, the value of the Decimal is simply the value of\n`significand`.\n\nWhen the exponent is greater than 0, represents the number of trailing\nzeroes after the significant digits.\n\nWhen the exponent is less than 0, represents how many of the significant\ndigits (and implicit leading zeroes, as needed) come after the decmial\npoint.",
"format": "int32"
}
},
"description": "Represents a decimal number in a form similar to scientific notation.\n\nExamples:\n - 17 === `{significand: 17 exponent: 0} (or just {significand:\n 17})`\n - -0.005 === `{significand: -5 exponent: -3}`\n - 33.5 million === `{significand: 335 exponent: 5}`\n - 11/8 (1.375) === `{significand: 1375 exponent: -3}`\n\nNote that the range of a Decimal exceeds that of a JSON `number` (double), as\nwell as that of a `decimal64`."
},
"DeclineGroupJoinRequestRequest": {
"type": "object",
"properties": {},
"description": "A join request ID."
},
"DeleteCustomMatchmakingSignalResponse": {
"type": "object",
"properties": {
"scoringConfiguration": {
"$ref": "#/components/schemas/MatchmakingScoringConfiguration"
}
},
"additionalProperties": false,
"description": "Response to delete a custom matchmaking signal."
},
"DeleteDraftRequest": {
"type": "object",
"properties": {
"draftHash": {
"type": "string",
"description": "The previous draft hash for concurrency control. If provided, the delete will fail if it doesn't match.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request model for deleting/resetting a draft."
},
"DeleteMatchmakingPlayerAttributeDefinitionResponse": {
"type": "object",
"additionalProperties": false,
"description": "The response for deleting a matchmaking player attribute definition."
},
"DeleteMatchmakingScoringConfigurationResponse": {
"type": "object",
"additionalProperties": false,
"description": "Response to delete a matchmaking scoring configuration."
},
"DeleteMatchmakingServerAttributeDefinitionResponse": {
"type": "object",
"additionalProperties": false,
"description": "The response for deleting a matchmaking server attribute definition."
},
"DeleteSaveRequest": {
"required": ["targetId", "targetType"],
"type": "object",
"properties": {
"targetType": {
"allOf": [
{
"$ref": "#/components/schemas/SearchCategoryType"
}
],
"description": "The type of asset being deleted",
"x-enumNames": [
"Audio",
"Model",
"Decal",
"Plugin",
"MeshPart",
"Video",
"FontFamily"
],
"x-enum-varnames": [
"Audio",
"Model",
"Decal",
"Plugin",
"MeshPart",
"Video",
"FontFamily"
]
},
"targetId": {
"type": "integer",
"description": "The ID of the asset being deleted",
"format": "int64"
},
"collectionName": {
"type": "string",
"description": "Custom collections are not currently supported.\nThis field should be omitted.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request model for deleting a save",
"nullable": true
},
"DeleteStartPlaceOverrideResponse": {
"type": "object",
"additionalProperties": false,
"description": "Response for deleting the start place override for a universe."
},
"DeploymentStrategy": {
"enum": ["Invalid", "GradualRollout", "Immediate"],
"type": "string",
"description": "Deployment strategy for publishing configurations.\n\nInvalid\n\nGradualRollout\n\nImmediate",
"x-enum-varnames": ["Invalid", "GradualRollout", "Immediate"]
},
"DeveloperProductConfigV2": {
"required": [
"createdTimestamp",
"description",
"iconImageAssetId",
"isForSale",
"isImmutable",
"isManagedPricingEnabled",
"name",
"priceInformation",
"productId",
"universeId",
"updatedTimestamp"
],
"type": "object",
"properties": {
"productId": {
"type": "integer",
"description": "The product ID of the developer product.",
"format": "int64"
},
"name": {
"type": "string",
"description": "The name of the developer product."
},
"description": {
"type": "string",
"description": "The description of the developer product."
},
"iconImageAssetId": {
"type": "integer",
"description": "The icon image (thumbnail) asset ID of the developer product.",
"format": "int64",
"nullable": true
},
"universeId": {
"type": "integer",
"description": "The universe ID that the developer product belongs to.",
"format": "int64"
},
"isForSale": {
"type": "boolean",
"description": "Whether the developer product is currently on sale."
},
"storePageEnabled": {
"type": "boolean",
"description": "Whether the developer product is currently available for purchase on the external store page.",
"nullable": true,
"deprecated": true
},
"priceInformation": {
"allOf": [
{
"$ref": "#/components/schemas/PriceInformationStruct"
}
],
"description": "The pricing configuration associated with the product.",
"nullable": true
},
"isImmutable": {
"type": "boolean",
"description": "Whether the developer product cannot be modified, such as when created as a commerce product."
},
"createdTimestamp": {
"type": "string",
"description": "The timestamp when the developer product was created.",
"format": "date-time"
},
"updatedTimestamp": {
"type": "string",
"description": "The timestamp when the developer product was last updated.",
"format": "date-time"
},
"isManagedPricingEnabled": {
"type": "boolean",
"description": "Whether managed pricing is enabled for the developer product."
}
},
"additionalProperties": false,
"description": "Creator-facing representation of a developer product configuration."
},
"DimensionValue": {
"required": ["value"],
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "The dimension value."
},
"displayValue": {
"type": "string",
"description": "A human-readable display value when the dimension is a unique ID.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A single dimension value returned by a dimension values query."
},
"DimensionValuesOperationResult": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The server-assigned resource path.",
"nullable": true
},
"done": {
"type": "boolean",
"description": "If false, the operation is still in progress. If true, the operation is completed."
},
"response": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.DimensionValuesResponse"
},
"metadata": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.OperationMetadata"
}
},
"additionalProperties": false,
"description": "A completed long-running dimension values operation with results."
},
"DiscardExperimentResponse": {
"type": "object",
"properties": {
"operation": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentOperation"
}
],
"description": "Resulting async operation describing the delete call.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for DELETE /v1/universes/{universeId}/experiment/{experimentId}."
},
"DiscardMemoryStoreQueueItemsRequest": {
"type": "object",
"properties": {
"readId": {
"type": "string",
"description": "The `readId` of the previous read operation for which to discard read\nitems."
}
},
"description": "Discards read items from the front of the queue."
},
"DraftHashResponse": {
"type": "object",
"properties": {
"draftHash": {
"type": "string",
"description": "The hash of the draft for concurrency control.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model containing the draft hash."
},
"Entry": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The resource path of the request."
},
"id": {
"type": "string",
"description": "The name of the entry"
},
"value": {
"type": "integer",
"description": "The value of the entry.",
"format": "int64"
}
},
"description": "Represents an entry."
},
"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
},
"Error": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32"
},
"message": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"ErrorCode": {
"enum": [
"InvalidImageFile",
"UnauthorizedAccess",
"NotAuthenticated",
"NotFound",
"Internal",
"BadRequest",
"InvalidProductId",
"UnauthorizedProductAccess",
"InvalidDeveloperProductId",
"DuplicateProductName",
"InvalidUniverseId",
"UnauthorizedUniverseAccess",
"InvalidShopId",
"UnknownError",
"InvalidPriceInRobux",
"InvalidPostBody",
"InvalidPageNumber",
"InvalidPageSize",
"UnsupportedDeveloperProductUpdate",
"PendingProductsLimitExceeded",
"InvalidCursor",
"InvalidRegionalPricing",
"ProductRetrievalLimitExceeded",
"InvalidProductIds",
"InvalidName",
"InvalidDescription",
"InvalidIsForSale",
"InvalidStorePageEnabled",
"Unavailable",
"InvalidPrice",
"Blocked",
"Conflict",
"InvalidManagedPricing"
],
"type": "string",
"description": "Code representing various error conditions."
},
"ErrorResponse": {
"type": "object",
"properties": {
"errorCode": {
"allOf": [
{
"$ref": "#/components/schemas/ErrorCode"
}
],
"description": "The ErrorCode for the exception."
},
"errorMessage": {
"type": "string",
"description": "The human readable error message.",
"nullable": true
},
"field": {
"type": "string",
"description": "The relevant field that caused the error.",
"nullable": true
},
"hint": {
"type": "string",
"description": "A hint as to what caused the error, if applicable.",
"nullable": true
}
},
"additionalProperties": false,
"description": "This is the base class for all custom Exceptions that are thrown in this API."
},
"EventCategory": {
"enum": [
"contentUpdate",
"locationUpdate",
"systemUpdate",
"activity",
"newContent",
"itemDrop",
"newSeason",
"newLocation",
"newMap",
"moreLevels",
"newFeature",
"earlyAccess",
"expansion",
"challenge",
"quest",
"festival"
],
"type": "string",
"description": "The event category type of an event.\r\n \r\nMirror of:\r\nhttps://github.rbx.com/Roblox/virtual-events/blob/master/services/virtual-events/src/Implementations/Types/EventCategory.cs"
},
"EventMedia": {
"type": "object",
"properties": {
"mediaId": {
"type": "integer",
"description": "The ID of the media.",
"format": "int64"
},
"rank": {
"type": "integer",
"description": "The rank of the media.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Representation of some media associated with an event."
},
"EventNotificationAudience": {
"enum": ["all", "rsvp", "subscribed", "group", "none"],
"type": "string",
"description": "The notification audience for an experience event"
},
"EventRankedCategory": {
"type": "object",
"properties": {
"category": {
"allOf": [
{
"$ref": "#/components/schemas/EventCategory"
}
],
"description": "The category content."
},
"rank": {
"type": "integer",
"description": "The rank of the category.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Representation of the category associated with an event."
},
"EventVisibility": {
"enum": ["private", "public", "moderated"],
"type": "string",
"description": "The visibility of a virtual event."
},
"ExperimentApiError": {
"type": "object",
"properties": {
"errorType": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentApiErrorType"
}
],
"description": "Broad category of the failure.\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_CONFIGURATION\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_LABEL\n\nEXPERIMENT_API_ERROR_TYPE_MUST_HAVE_EXACTLY_ONE_BASELINE_VARIANT\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_OVERLAPPING_RUNTIME\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_INVALID_SCORING_CONFIGURATIONS\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_UNEXPECTED_PRODUCT_TYPE\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_CONFIGURATION\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_VARIANT_METADATA\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHT_MUST_BE_POSITIVE\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHTS_UNBALANCED\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_PLACE_CONFIG_REQUIRES_SCORING_ID_OR_DEFAULT\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_MISSING_VARIANT\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_KEY\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_VALUE\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_ALREADY_IN_USE\n\nEXPERIMENT_API_ERROR_TYPE_SYSTEM_ERROR\n\nEXPERIMENT_API_ERROR_TYPE_EXPERIMENT_RESULTS_NOT_FOUND\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_TARGETING_CRITERIA\n\nEXPERIMENT_API_ERROR_TYPE_TARGETING_NOT_ALLOWED\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_DURATION\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_CONFIG_NOT_FOUND\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_EXPERIMENT_NAME\n\nEXPERIMENT_API_ERROR_TYPE_CONDITIONAL_CONFIG_REQUIRES_NULL_BASELINE\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_CONTROL_VARIANT_MUST_MATCH_CURRENT_CONFIGURATION\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANTS_MUST_COVER_SAME_PLACES\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_HAS_DUPLICATE_PLACES\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_HAS_RESERVED_PREFIX",
"x-enum-varnames": [
"InvalidVariantConfiguration",
"InvalidVariantLabel",
"MustHaveExactlyOneBaselineVariant",
"MatchmakingOverlappingRuntime",
"MatchmakingInvalidScoringConfigurations",
"MatchmakingUnexpectedProductType",
"MatchmakingEmptyConfiguration",
"MatchmakingEmptyVariantMetadata",
"MatchmakingVariantWeightMustBePositive",
"MatchmakingVariantWeightsUnbalanced",
"MatchmakingPlaceConfigRequiresScoringIdOrDefault",
"ConfigsMissingVariant",
"ConfigsVariantMissingKey",
"ConfigsVariantMissingValue",
"ConfigsKeyAlreadyInUse",
"SystemError",
"ExperimentResultsNotFound",
"InvalidTargetingCriteria",
"TargetingNotAllowed",
"InvalidDuration",
"ConfigsVariantConfigNotFound",
"InvalidExperimentName",
"ConditionalConfigRequiresNullBaseline",
"MatchmakingControlVariantMustMatchCurrentConfiguration",
"MatchmakingVariantsMustCoverSamePlaces",
"MatchmakingVariantHasDuplicatePlaces",
"ConfigsKeyHasReservedPrefix"
]
},
"errorCode": {
"type": "string",
"description": "Stable machine-readable error code.",
"nullable": true
},
"errorMessage": {
"type": "string",
"description": "Human-readable description of the failure.",
"nullable": true
},
"errorContext": {
"type": "object",
"additionalProperties": {
"type": "string",
"nullable": true
},
"description": "Optional structured context about the failure (field paths, offending values, etc.).",
"nullable": true
}
},
"additionalProperties": false,
"description": "Application-layer error emitted on a failed experiment operation."
},
"ExperimentApiErrorType": {
"enum": [
"EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_CONFIGURATION",
"EXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_LABEL",
"EXPERIMENT_API_ERROR_TYPE_MUST_HAVE_EXACTLY_ONE_BASELINE_VARIANT",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_OVERLAPPING_RUNTIME",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_INVALID_SCORING_CONFIGURATIONS",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_UNEXPECTED_PRODUCT_TYPE",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_CONFIGURATION",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_VARIANT_METADATA",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHT_MUST_BE_POSITIVE",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHTS_UNBALANCED",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_PLACE_CONFIG_REQUIRES_SCORING_ID_OR_DEFAULT",
"EXPERIMENT_API_ERROR_TYPE_CONFIGS_MISSING_VARIANT",
"EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_KEY",
"EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_VALUE",
"EXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_ALREADY_IN_USE",
"EXPERIMENT_API_ERROR_TYPE_SYSTEM_ERROR",
"EXPERIMENT_API_ERROR_TYPE_EXPERIMENT_RESULTS_NOT_FOUND",
"EXPERIMENT_API_ERROR_TYPE_INVALID_TARGETING_CRITERIA",
"EXPERIMENT_API_ERROR_TYPE_TARGETING_NOT_ALLOWED",
"EXPERIMENT_API_ERROR_TYPE_INVALID_DURATION",
"EXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_CONFIG_NOT_FOUND",
"EXPERIMENT_API_ERROR_TYPE_INVALID_EXPERIMENT_NAME",
"EXPERIMENT_API_ERROR_TYPE_CONDITIONAL_CONFIG_REQUIRES_NULL_BASELINE",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_CONTROL_VARIANT_MUST_MATCH_CURRENT_CONFIGURATION",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANTS_MUST_COVER_SAME_PLACES",
"EXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_HAS_DUPLICATE_PLACES",
"EXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_HAS_RESERVED_PREFIX"
],
"type": "string",
"description": "Validation failures.\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_CONFIGURATION\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_VARIANT_LABEL\n\nEXPERIMENT_API_ERROR_TYPE_MUST_HAVE_EXACTLY_ONE_BASELINE_VARIANT\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_OVERLAPPING_RUNTIME\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_INVALID_SCORING_CONFIGURATIONS\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_UNEXPECTED_PRODUCT_TYPE\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_CONFIGURATION\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_EMPTY_VARIANT_METADATA\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHT_MUST_BE_POSITIVE\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_WEIGHTS_UNBALANCED\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_PLACE_CONFIG_REQUIRES_SCORING_ID_OR_DEFAULT\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_MISSING_VARIANT\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_KEY\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_MISSING_VALUE\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_ALREADY_IN_USE\n\nEXPERIMENT_API_ERROR_TYPE_SYSTEM_ERROR\n\nEXPERIMENT_API_ERROR_TYPE_EXPERIMENT_RESULTS_NOT_FOUND\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_TARGETING_CRITERIA\n\nEXPERIMENT_API_ERROR_TYPE_TARGETING_NOT_ALLOWED\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_DURATION\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_VARIANT_CONFIG_NOT_FOUND\n\nEXPERIMENT_API_ERROR_TYPE_INVALID_EXPERIMENT_NAME\n\nEXPERIMENT_API_ERROR_TYPE_CONDITIONAL_CONFIG_REQUIRES_NULL_BASELINE\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_CONTROL_VARIANT_MUST_MATCH_CURRENT_CONFIGURATION\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANTS_MUST_COVER_SAME_PLACES\n\nEXPERIMENT_API_ERROR_TYPE_MATCHMAKING_VARIANT_HAS_DUPLICATE_PLACES\n\nEXPERIMENT_API_ERROR_TYPE_CONFIGS_KEY_HAS_RESERVED_PREFIX",
"x-enum-varnames": [
"InvalidVariantConfiguration",
"InvalidVariantLabel",
"MustHaveExactlyOneBaselineVariant",
"MatchmakingOverlappingRuntime",
"MatchmakingInvalidScoringConfigurations",
"MatchmakingUnexpectedProductType",
"MatchmakingEmptyConfiguration",
"MatchmakingEmptyVariantMetadata",
"MatchmakingVariantWeightMustBePositive",
"MatchmakingVariantWeightsUnbalanced",
"MatchmakingPlaceConfigRequiresScoringIdOrDefault",
"ConfigsMissingVariant",
"ConfigsVariantMissingKey",
"ConfigsVariantMissingValue",
"ConfigsKeyAlreadyInUse",
"SystemError",
"ExperimentResultsNotFound",
"InvalidTargetingCriteria",
"TargetingNotAllowed",
"InvalidDuration",
"ConfigsVariantConfigNotFound",
"InvalidExperimentName",
"ConditionalConfigRequiresNullBaseline",
"MatchmakingControlVariantMustMatchCurrentConfiguration",
"MatchmakingVariantsMustCoverSamePlaces",
"MatchmakingVariantHasDuplicatePlaces",
"ConfigsKeyHasReservedPrefix"
]
},
"ExperimentConfigEntry": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "The config key this variant overrides. Must match across variants in the same experiment.",
"nullable": true
},
"entryValue": {
"description": "The value assigned to Key for this variant. Can be a string, number, bool, array, object,\r\nor null.",
"nullable": true
},
"description": {
"type": "string",
"description": "Optional human-readable description carried alongside the value.",
"nullable": true
}
},
"additionalProperties": false
},
"ExperimentConfiguration": {
"type": "object",
"properties": {
"productType": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentProductType"
}
],
"description": "Discriminator selecting which configuration variant is populated.\n\nEXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS\n\nEXPERIMENT_PRODUCT_TYPE_MATCHMAKING",
"x-enum-varnames": ["InGameConfigs", "Matchmaking"]
},
"inGameConfigExperimentConfiguration": {
"allOf": [
{
"$ref": "#/components/schemas/InGameConfigExperimentConfiguration"
}
],
"description": "Populated when ProductType is InGameConfigExperimentConfiguration, null otherwise.",
"nullable": true
},
"matchmakingExperimentConfiguration": {
"allOf": [
{
"$ref": "#/components/schemas/MatchmakingExperimentConfiguration"
}
],
"description": "Populated when ProductType is MatchmakingExperimentConfiguration, null otherwise.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Union of per-product experiment configurations. At most one of InGameConfigExperimentConfiguration or\r\nMatchmakingExperimentConfiguration may be set."
},
"ExperimentOperation": {
"type": "object",
"properties": {
"operationId": {
"type": "string",
"description": "Stable operation ID.",
"nullable": true
},
"status": {
"allOf": [
{
"$ref": "#/components/schemas/OperationalStatus"
}
],
"description": "Current operational status of the operation.\n\nOPERATIONAL_STATUS_READY\n\nOPERATIONAL_STATUS_CREATING\n\nOPERATIONAL_STATUS_UPDATING\n\nOPERATIONAL_STATUS_STARTING\n\nOPERATIONAL_STATUS_STOPPING\n\nOPERATIONAL_STATUS_SCHEDULING\n\nOPERATIONAL_STATUS_DELETING\n\nOPERATIONAL_STATUS_RAMPING_UP\n\nOPERATIONAL_STATUS_SYNCING\n\nOPERATIONAL_STATUS_ROLLING_OUT",
"x-enum-varnames": [
"Ready",
"Creating",
"Updating",
"Starting",
"Stopping",
"Scheduling",
"Deleting",
"RampingUp",
"Syncing",
"RollingOut"
]
},
"createdTime": {
"type": "string",
"description": "UTC time the operation was created.",
"format": "date-time"
},
"done": {
"type": "boolean",
"description": "True once the operation terminates (success or failure). When false, neither\r\nError nor Experiment is populated."
},
"error": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentApiError"
}
],
"description": "Error outcome. Populated iff Done is true and the operation failed.",
"nullable": true
},
"experiment": {
"allOf": [
{
"$ref": "#/components/schemas/ProductExperiment"
}
],
"description": "Successful outcome. Populated iff Done is true and the operation\r\nsucceeded and returned an experiment resource.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Async operation result for an experiment Create / Update / Discard call. When\r\nDone is true, at most one of Error or Experiment is set; when false, neither is. A successful delete is the\r\none case where a done operation carries neither: the experiment no longer exists, so\r\nno Experiment body is returned."
},
"ExperimentProductType": {
"enum": [
"EXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS",
"EXPERIMENT_PRODUCT_TYPE_MATCHMAKING"
],
"type": "string",
"description": "Type of product the experiment is targeting.\n\nEXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS\n\nEXPERIMENT_PRODUCT_TYPE_MATCHMAKING",
"x-enum-varnames": ["InGameConfigs", "Matchmaking"]
},
"ExperimentState": {
"enum": [
"EXPERIMENT_STATE_DRAFT",
"EXPERIMENT_STATE_SCHEDULED",
"EXPERIMENT_STATE_RUNNING",
"EXPERIMENT_STATE_COMPLETED",
"EXPERIMENT_STATE_CANCELLED",
"EXPERIMENT_STATE_DELETED"
],
"type": "string",
"description": "Lifecycle state of an experiment.\n\nEXPERIMENT_STATE_DRAFT\n\nEXPERIMENT_STATE_SCHEDULED\n\nEXPERIMENT_STATE_RUNNING\n\nEXPERIMENT_STATE_COMPLETED\n\nEXPERIMENT_STATE_CANCELLED\n\nEXPERIMENT_STATE_DELETED",
"x-enum-varnames": [
"Draft",
"Scheduled",
"Running",
"Completed",
"Cancelled",
"Deleted"
]
},
"ExperimentStats": {
"type": "object",
"properties": {
"isSrmDetected": {
"type": "boolean",
"description": "True if Sample Ratio Mismatch (SRM) was detected for the experiment."
}
},
"additionalProperties": false,
"description": "Computed stats for a running experiment."
},
"ExperimentStatsOperation": {
"type": "object",
"properties": {
"experimentId": {
"type": "integer",
"description": "Experiment ID the stats are for.",
"format": "int64"
},
"lastModifiedTime": {
"type": "string",
"description": "UTC time the operation was last modified.",
"nullable": true
},
"done": {
"type": "boolean",
"description": "True once the stats fetch terminates (success or failure)."
},
"error": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentApiError"
}
],
"description": "Error outcome, when Done is true and the fetch failed.",
"nullable": true
},
"experimentStats": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentStats"
}
],
"description": "Successful outcome, when Done is true and stats are available.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Async operation for fetching experiment stats. When Done is true exactly\r\none of Error or ExperimentStats is set; when false, neither is."
},
"ExperimentSummary": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Experiment ID.",
"nullable": true
},
"name": {
"type": "string",
"description": "Experiment display name.",
"nullable": true
},
"description": {
"type": "string",
"description": "Experiment description.",
"nullable": true
},
"createdTime": {
"type": "string",
"description": "UTC time the experiment was created.",
"format": "date-time"
},
"lastUpdatedTime": {
"type": "string",
"description": "UTC time the experiment was last updated.",
"nullable": true
},
"startedTime": {
"type": "string",
"description": "UTC time the experiment was started, if running.",
"nullable": true
},
"stoppedTime": {
"type": "string",
"description": "UTC time the experiment was stopped, if completed/cancelled.",
"nullable": true
},
"state": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentState"
}
],
"description": "Lifecycle state.\n\nEXPERIMENT_STATE_DRAFT\n\nEXPERIMENT_STATE_SCHEDULED\n\nEXPERIMENT_STATE_RUNNING\n\nEXPERIMENT_STATE_COMPLETED\n\nEXPERIMENT_STATE_CANCELLED\n\nEXPERIMENT_STATE_DELETED",
"x-enum-varnames": [
"Draft",
"Scheduled",
"Running",
"Completed",
"Cancelled",
"Deleted"
]
},
"createdBy": {
"type": "string",
"description": "User ID of the creator of the experiment.",
"nullable": true
},
"experimentConfigKey": {
"type": "string",
"description": "Convenience field exposing the first config key referenced by the first variant\r\n(in-game-configs experiments only). Empty for matchmaking.",
"nullable": true
},
"scheduledTime": {
"type": "string",
"description": "UTC time the experiment is scheduled to start, if scheduled.",
"nullable": true
},
"durationSeconds": {
"type": "integer",
"description": "Planned experiment duration in whole seconds.",
"format": "int64"
},
"productType": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentProductType"
}
],
"description": "Product type.\n\nEXPERIMENT_PRODUCT_TYPE_IN_GAME_CONFIGS\n\nEXPERIMENT_PRODUCT_TYPE_MATCHMAKING",
"x-enum-varnames": ["InGameConfigs", "Matchmaking"]
}
},
"additionalProperties": false,
"description": "Summary view of an experiment returned by the list endpoint. Does not include the variant /\r\nconfiguration payload; clients should call Get for the full payload."
},
"FeaturingStatus": {
"enum": ["invalid", "enabled", "disabled"],
"type": "string",
"description": "The featuring status of a virtual event."
},
"FetchStatus": {
"enum": ["Failure", "Success"],
"type": "string",
"description": "Describes whether a fetch operation failed or succeeded."
},
"FilterField": {
"enum": ["EngineVersion", "PlaceVersion", "ALL"],
"type": "string",
"description": "Enum describing the different available filter fields."
},
"FilterFieldInfo": {
"type": "object",
"properties": {
"field": {
"allOf": [
{
"$ref": "#/components/schemas/FilterField"
}
],
"description": "The technical name of the field."
},
"type": {
"allOf": [
{
"$ref": "#/components/schemas/FilterType"
}
],
"description": "The data type of the filter values."
},
"values": {
"type": "array",
"items": {},
"description": "The list of available values for the filter.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Describes the metadata and available values for a single filter field."
},
"FilterOptionsResponse": {
"type": "object",
"properties": {
"filters": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/FilterFieldInfo"
},
"description": "A dictionary of filter field names to their metadata and available values.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for filter options endpoint."
},
"FilterType": {
"enum": ["String", "Number"],
"type": "string",
"description": "Enum describing the data type of a filter field's values."
},
"FindPersonalizedConfigsResponse": {
"required": ["personalizedConfigs"],
"type": "object",
"properties": {
"personalizedConfigs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ThumbnailPersonalizedConfig"
},
"description": "The personalization configurations matching the requested universe and status."
},
"nextCursor": {
"type": "string",
"description": "The cursor to use for the next page of results.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A page of thumbnail personalization configurations."
},
"FindThumbnailsResponse": {
"required": ["homepageThumbnails"],
"type": "object",
"properties": {
"homepageThumbnails": {
"type": "array",
"items": {
"$ref": "#/components/schemas/HomepageThumbnail"
},
"description": "The homepage thumbnails in this page."
},
"nextCursor": {
"type": "string",
"description": "The cursor to use for the next page of results.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A page of homepage thumbnails for a universe."
},
"FlushMemoryStoreMetadata": {
"type": "object",
"properties": {},
"description": "Represents metadata about the long-running operation corresponding to a\nFlushMemoryStore request.\n\nThis is the type of the `Operation.metadata` field in the response to\n`GetOperation` requests for FlushMemoryStore operations."
},
"FlushMemoryStoreResponse": {
"type": "object",
"properties": {},
"description": "Returns a FlushMemoryStoreResponse object."
},
"ForecastRestartResponse": {
"type": "object",
"properties": {
"placeForecasts": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/PlaceSummaryForGameRestart"
},
"description": "Per-place forecast data keyed by place ID.\r\nEmpty if no active places.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for the forecast restart endpoint."
},
"ForecastUpdateRequest": {
"type": "object",
"properties": {
"universeId": {
"type": "integer",
"description": "The Universe ID to update.",
"format": "int64"
}
},
"additionalProperties": false,
"description": "ForecastUpdateRequest is used to request an update to the forecast of a Place in a Universe."
},
"ForecastUpdateResponse": {
"type": "object",
"properties": {
"placeSummaries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlaceSummaryForGameUpdate"
},
"nullable": true
}
},
"additionalProperties": false,
"description": "ForecastUpdateResponse is used to return information about the forecasted update of a place."
},
"GameEventResponse": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The unique id of the game event. Always populated. Serialized as a string to\r\npreserve precision for clients (event IDs exceed 2^53).",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"displayTitle": {
"type": "string",
"description": "Localized title (caller's locale). Populated only when `displayTitle` is in the mask.",
"nullable": true
},
"subtitle": {
"type": "string",
"nullable": true
},
"displaySubtitle": {
"type": "string",
"description": "Localized subtitle. Populated only when `displaySubtitle` is in the mask.",
"nullable": true
},
"description": {
"type": "string",
"nullable": true
},
"displayDescription": {
"type": "string",
"description": "Localized description. Populated only when `displayDescription` is in the mask.",
"nullable": true
},
"startTime": {
"type": "string",
"format": "date-time",
"nullable": true
},
"endTime": {
"type": "string",
"format": "date-time",
"nullable": true
},
"universeId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"placeId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"host": {
"allOf": [
{
"$ref": "#/components/schemas/HostResponse"
}
],
"description": "Host block. VirtualEventsApi.Models.V3.Response.HostResponse.HostName and VirtualEventsApi.Models.V3.Response.HostResponse.HasVerifiedBadge are omitted when host-details resolution failed.",
"nullable": true
},
"visibility": {
"allOf": [
{
"$ref": "#/components/schemas/EventVisibility"
}
],
"nullable": true
},
"featuringStatus": {
"allOf": [
{
"$ref": "#/components/schemas/FeaturingStatus"
}
],
"nullable": true
},
"tagline": {
"type": "string",
"description": "Tagline for featuring review; visible to curators only when featuring is opted into.",
"nullable": true
},
"categories": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CategoryResponse"
},
"nullable": true
},
"thumbnails": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ThumbnailResponse"
},
"nullable": true
},
"allThumbnailsCreated": {
"type": "boolean",
"description": "Whether all requested thumbnails were successfully persisted. Returned on Create/Update.",
"nullable": true
},
"config": {
"allOf": [
{
"$ref": "#/components/schemas/ConfigResponse"
}
],
"nullable": true
},
"userRsvpStatus": {
"allOf": [
{
"$ref": "#/components/schemas/RsvpStatus"
}
],
"description": "Authenticated caller's RSVP status. Omitted for unauthenticated callers.",
"nullable": true
},
"createTime": {
"type": "string",
"format": "date-time",
"nullable": true
},
"updateTime": {
"type": "string",
"format": "date-time",
"nullable": true
}
},
"additionalProperties": false,
"description": "v3 game event response. All fields except VirtualEventsApi.Models.V3.Response.GameEventResponse.Id are gated by the `?fields=` mask."
},
"GamePassConfigV2": {
"required": [
"createdTimestamp",
"description",
"gamePassId",
"iconAssetId",
"isForSale",
"isManagedPricingEnabled",
"name",
"priceInformation",
"updatedTimestamp"
],
"type": "object",
"properties": {
"gamePassId": {
"type": "integer",
"description": "The game pass ID.",
"format": "int64"
},
"name": {
"type": "string",
"description": "The name of the game pass."
},
"description": {
"type": "string",
"description": "The description of the game pass."
},
"isForSale": {
"type": "boolean",
"description": "Whether the game pass is currently on sale."
},
"iconAssetId": {
"type": "integer",
"description": "The icon image (thumbnail) asset ID of the game pass.",
"format": "int64"
},
"createdTimestamp": {
"type": "string",
"description": "The timestamp when the game pass was created.",
"format": "date-time"
},
"updatedTimestamp": {
"type": "string",
"description": "The timestamp when the game pass was last updated.",
"format": "date-time"
},
"priceInformation": {
"allOf": [
{
"$ref": "#/components/schemas/GamePasses.PriceInformationStruct"
}
],
"description": "The pricing configuration associated with the game pass.",
"nullable": true
},
"isManagedPricingEnabled": {
"type": "boolean",
"description": "Whether managed pricing is enabled for the game pass."
}
},
"additionalProperties": false,
"description": "Creator-facing representation of a game pass configuration."
},
"GamePasses.ErrorCode": {
"enum": [
"InternalError",
"BadRequest",
"NotFound",
"UnauthorizedAccess",
"NotAuthenticated",
"PassNotFound",
"TargetUnauthorizedAccess",
"UniverseNotFound",
"MissingArgument",
"AssetCreationFailure",
"PassRevokeFailure",
"PassAlreadyRevoked",
"SalesNotFound",
"CommissionRateNotFound",
"AssetNotFound",
"FileTooLarge",
"ActiveInPO",
"NotForSale",
"NotSameUniverse",
"PricingConfigError",
"InvalidCount",
"Blocked",
"InvalidPageSize",
"InvalidRegionalPricing",
"InvalidManagedPricing"
],
"type": "string",
"description": "Code representing various error conditions."
},
"GamePasses.ErrorResponse": {
"type": "object",
"properties": {
"errorCode": {
"allOf": [
{
"$ref": "#/components/schemas/GamePasses.ErrorCode"
}
],
"description": "The ErrorCode for the exception."
},
"errorMessage": {
"type": "string",
"description": "The human readable error message.",
"nullable": true
},
"field": {
"type": "string",
"description": "The relevant field that caused the error.",
"nullable": true
},
"hint": {
"type": "string",
"description": "A hint as to what caused the error, if applicable.",
"nullable": true
}
},
"additionalProperties": false,
"description": "This is the base class for all custom Exceptions that are thrown in this API."
},
"GamePasses.PriceInformationStruct": {
"required": ["defaultPriceInRobux", "enabledFeatures"],
"type": "object",
"properties": {
"defaultPriceInRobux": {
"type": "integer",
"description": "The configured default price in Robux.",
"format": "int64",
"nullable": true
},
"enabledFeatures": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GamePasses.PricingFeature"
},
"description": "The enabled pricing features for the game pass."
}
},
"additionalProperties": false,
"description": "The pricing configuration information."
},
"GamePasses.PricingFeature": {
"enum": [
"Invalid",
"PriceOptimization",
"UserFixedPrice",
"RegionalPricing"
],
"type": "string",
"description": "Enum representing enabled features for this particular game pass."
},
"GameServerLog": {
"type": "object",
"properties": {
"messageTimestampMs": {
"type": "string",
"description": "The timestamp the log was received",
"format": "date-time"
},
"universeId": {
"type": "integer",
"description": "The universe where the log was created",
"format": "int64"
},
"placeId": {
"type": "string",
"description": "The place where the log was created",
"nullable": true
},
"placeVersion": {
"type": "string",
"description": "The place version on which the log was created",
"nullable": true
},
"jobId": {
"type": "string",
"description": "The Game Server id where the log was created",
"nullable": true
},
"severity": {
"allOf": [
{
"$ref": "#/components/schemas/LogSeverity"
}
],
"description": "The severity of the log"
},
"message": {
"type": "string",
"description": "The log message",
"nullable": true
},
"stackTrace": {
"type": "string",
"description": "The stack trace of the log",
"nullable": true
},
"messageTemplate": {
"type": "string",
"description": "Optional message template included with structured logging",
"nullable": true
},
"context": {
"type": "string",
"description": "Optional message context included with structured logging",
"nullable": true
},
"skippedCount": {
"type": "integer",
"description": "How many duplicate versions of this message were present in the same time window as this log",
"format": "int32"
},
"rateLimitedCount": {
"type": "integer",
"description": "How many more messages were present in the time window beyond our overall rate limits",
"format": "int32"
},
"structuredStackTrace": {
"type": "array",
"items": {
"$ref": "#/components/schemas/StructuredStackFrame"
},
"description": "A list of ServerManagementService.V2.Models.StructuredStackFrame metadata, identifying the script that errored when combined\r\nwith the ServerManagementService.V2.Models.GameServerLog.PlaceVersion",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for listing a game server log"
},
"GameUpdateStatus": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"universeId": {
"type": "integer",
"format": "int64"
},
"startTime": {
"type": "string",
"format": "date-time"
},
"closeOldVersionsOnly": {
"type": "boolean"
},
"bleedOffEndTime": {
"type": "string",
"format": "date-time"
},
"placeUpdateStatuses": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/PlaceUpdateStatus"
},
"nullable": true
},
"bleedOffServers": {
"type": "boolean"
}
},
"additionalProperties": false
},
"GameVoteResponse": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"upVotes": {
"type": "integer",
"format": "int64"
},
"downVotes": {
"type": "integer",
"format": "int64"
}
},
"additionalProperties": false
},
"GameVoteResponseApiArrayResponse": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GameVoteResponse"
},
"nullable": true
}
},
"additionalProperties": false
},
"GenerateMockServerSignalValuesResponse": {
"type": "object",
"properties": {
"exampleGameSignalValues": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MockServerSignalValues"
},
"description": "The mock server signal values.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response for generating mock server signal values."
},
"GenerateSpeechAssetMetadata": {
"type": "object",
"properties": {},
"description": "Represents metadata about the long-running operation corresponding to a\nGenerateSpeechAsset request.\n\nThis is the type of the `Operation.metadata` field in the response to\n`GetOperation` requests for GenerateSpeechAsset operations."
},
"GenerateSpeechAssetRequest": {
"required": ["text"],
"type": "object",
"properties": {
"text": {
"example": "Hello",
"type": "string",
"description": "The text to be translated."
},
"speechStyle": {
"$ref": "#/components/schemas/GenerateSpeechAssetRequest_GeneratedSpeechStyle",
"description": "The style of the generated speech."
}
},
"description": "Specifies the text from which to generate speech and the voice style."
},
"GenerateSpeechAssetRequest_GeneratedSpeechStyle": {
"type": "object",
"properties": {
"voiceId": {
"example": "1",
"type": "string",
"description": "An ID corresponding to the voice type specified. A mapping of voice type\nto\nID number is available in the documentation."
},
"pitch": {
"type": "number",
"description": "The pitch of the generated speech.",
"format": "double"
},
"speed": {
"type": "number",
"description": "The speed of the generated speech.",
"format": "double"
}
},
"description": "Information about the style of generated speech."
},
"GenerateSpeechAssetResponse": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"description": "The generated audio asset ID."
},
"remainingQuota": {
"type": "integer",
"description": "The remaining quota (the remaining number of requests available\nto the user this calendar month).",
"format": "int32"
}
},
"description": "Contains a generated audio asset in MPEG-2 Audio Layer III (MP3) format."
},
"GenerateUserThumbnailMetadata": {
"type": "object",
"additionalProperties": false,
"description": "Represents metadata about the long-running operation corresponding to a\r\nGenerateUserThumbnail request.\r\n \r\nThis is the type of the `Operation.metadata` field in the response to\r\n`GetOperation` requests for GenerateUserThumbnail operations."
},
"GenerateUserThumbnailResponse": {
"type": "object",
"properties": {
"@type": {
"type": "string",
"description": "The fully-qualified type of the packed operation response. Mirrors the\r\n`@type` field the legacy transcoder emitted via `Any.Pack`, kept so clients\r\nreading `response[\"@type\"]` continue to work. Declared first so it\r\nserializes before the payload fields.",
"nullable": true,
"readOnly": true
},
"imageUri": {
"type": "string",
"description": "URI for the generated thumbnail.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Returns the URL for the user's avatar thumbnail."
},
"GetExperimentOperationStatusResponse": {
"type": "object",
"properties": {
"operation": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentOperation"
}
],
"description": "The current state of the async operation.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for\r\n`GET /v1/experimentation/universes/{universeId}/operations/{operationId}`."
},
"GetExperimentResponse": {
"type": "object",
"properties": {
"experiment": {
"allOf": [
{
"$ref": "#/components/schemas/ProductExperiment"
}
],
"description": "The requested experiment.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for GET /v1/universes/{universeId}/experiment/{experimentId}."
},
"GetExperimentStatsResponse": {
"type": "object",
"properties": {
"operation": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentStatsOperation"
}
],
"description": "The async operation containing the experiment stats.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for\r\n`GET /v1/experimentation/universes/{universeId}/experiments/{experimentId}/stats`."
},
"GetInstanceMetadata": {
"type": "object",
"properties": {},
"description": "Represents metadata about the long-running operation corresponding to a\nGetInstance request.\n\nThis is the type of the `Operation.metadata` field in the response to\n`GetOperation` requests for GetInstance operations."
},
"GetMatchmakingCustomizationFeatureFlagsResponse": {
"type": "object",
"properties": {
"featureFlags": {
"$ref": "#/components/schemas/MatchmakingCustomizationFeatureFlags"
}
},
"additionalProperties": false,
"description": "Response to get matchmaking customization feature flags."
},
"GetMatchmakingScoringConfigurationResponse": {
"type": "object",
"properties": {
"scoringConfiguration": {
"$ref": "#/components/schemas/MatchmakingScoringConfiguration"
}
},
"additionalProperties": false,
"description": "Response to get the matchmaking scoring configuration."
},
"GetMatchmakingScoringDefaultWeightsResponse": {
"type": "object",
"properties": {
"weights": {
"type": "object",
"properties": {
"Invalid": {
"type": "number",
"format": "double"
},
"Occupancy": {
"type": "number",
"format": "double"
},
"Age": {
"type": "number",
"format": "double"
},
"Language": {
"type": "number",
"format": "double"
},
"Latency": {
"type": "number",
"format": "double"
},
"PreferredPlayers": {
"type": "number",
"format": "double"
},
"VoiceChat": {
"type": "number",
"format": "double"
},
"DeviceType": {
"type": "number",
"format": "double"
},
"PlayHistory": {
"type": "number",
"format": "double"
},
"TextChat": {
"type": "number",
"format": "double"
}
},
"additionalProperties": false,
"description": "The weights of the current default matchmaking scoring weights.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response containing the weights of the current default matchmaking scoring weights"
},
"GetPlaceContributorsResponse": {
"type": "object",
"properties": {
"nextCursor": {
"type": "string",
"nullable": true
},
"hasMore": {
"type": "boolean"
},
"contributors": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"nullable": true
}
},
"additionalProperties": false
},
"GetPlaceVersionHistoryResponse": {
"type": "object",
"properties": {
"nextCursor": {
"type": "string",
"nullable": true
},
"hasMore": {
"type": "boolean"
},
"placeVersions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlaceVersion"
},
"nullable": true
}
},
"additionalProperties": false
},
"GetPrivateServerListResponse": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PrivateServersApi.GameServerResponse"
},
"nullable": true
},
"previousPageCursor": {
"type": "string",
"nullable": true
},
"nextPageCursor": {
"type": "string",
"nullable": true
},
"gameJoinRestricted": {
"type": "boolean"
}
},
"additionalProperties": false
},
"GetSavesResponse": {
"required": ["saves", "totalCount"],
"type": "object",
"properties": {
"totalCount": {
"type": "integer",
"description": "The total number of saves that match the query.",
"format": "int32"
},
"saves": {
"type": "array",
"items": {
"$ref": "#/components/schemas/HydratedSave"
},
"description": "Gets or sets the saves.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for getting saves",
"nullable": true
},
"GetStartPlaceOverrideResponse": {
"type": "object",
"properties": {
"dataStoreLocation": {
"$ref": "#/components/schemas/DataStoreLocation"
}
},
"additionalProperties": false,
"description": "Response for getting the start place override for a universe."
},
"GetUpdateStatusResponse": {
"type": "object",
"properties": {
"updateStatusList": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GameUpdateStatus"
},
"description": "The status of the game update.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Get Update Status response."
},
"GoogleProtobufAny": {
"type": "object",
"properties": {
"@type": {
"type": "string",
"description": "The type of the serialized message."
}
},
"additionalProperties": true,
"description": "Contains an arbitrary serialized message along with a @type that describes the type of the serialized message."
},
"GoogleProtobufValue": {
"description": "Represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values."
},
"GrantPermissionError": {
"type": "object",
"properties": {
"assetId": {
"type": "integer",
"description": "Failed asset ID.",
"format": "int64"
},
"code": {
"$ref": "#/components/schemas/AssetPermissions.ErrorCode"
}
},
"additionalProperties": false,
"description": "Single error for BatchGrantPermissionsResponse."
},
"Group": {
"type": "object",
"properties": {
"path": {
"example": "groups/123",
"type": "string",
"description": "The resource path of the group.\n\nFormat: `groups/{group_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group was created.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group was last updated.",
"format": "date-time"
},
"id": {
"readOnly": true,
"example": "7",
"type": "string",
"description": "A unique ID that identifies the group."
},
"displayName": {
"example": "Roblox",
"type": "string",
"description": "The name of the group.\n\nMust be non-empty. Has a maximum limit of 50 characters."
},
"description": {
"example": "Official fan club of Roblox!",
"type": "string",
"description": "The description of the group.\n\nHas a maximum limit of 1000 characters."
},
"owner": {
"readOnly": true,
"example": "users/21557",
"type": "string",
"description": "The resource path of the owner.\n\nIf the group is abandoned and has no owner, this field is not returned."
},
"memberCount": {
"readOnly": true,
"example": 10196297,
"type": "integer",
"description": "The total number of members within a group.",
"format": "int32"
},
"publicEntryAllowed": {
"example": true,
"type": "boolean",
"description": "Whether the group allows public entry."
},
"locked": {
"readOnly": true,
"example": true,
"type": "boolean",
"description": "Whether the group is locked.\n\nA locked group is a group that has been\nmoderated/banned by Roblox."
},
"verified": {
"readOnly": true,
"example": true,
"type": "boolean",
"description": "Whether the group has the verified badge."
}
},
"description": "A mini-community within Roblox for communication, discussions, and more.",
"x-aep-resource": {
"patterns": ["groups/{group_id}"],
"plural": "groups",
"singular": "group"
},
"x-resource": true,
"x-oneOf": {
"Owner": ["owner"]
}
},
"GroupForumCategory": {
"type": "object",
"properties": {
"path": {
"example": "groups/123/forum-categories/01234567-89ab-cdef-0123-456789abcdef",
"type": "string",
"description": "The resource path of the group forum category.\n\nFormat: `groups/{group_id}/forum-categories/{group_forum_category_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group forum category was created.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group forum category was last updated.",
"format": "date-time"
},
"groupForumCategoryId": {
"readOnly": true,
"type": "string",
"description": "The id of the group forum category."
},
"displayName": {
"type": "string",
"description": "The display name of the group forum category."
},
"creator": {
"readOnly": true,
"example": "users/156",
"type": "string",
"description": "The resource path of the user who created the group forum category."
},
"archiveTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group forum category was archived.",
"format": "date-time"
},
"archiver": {
"readOnly": true,
"example": "users/156",
"type": "string",
"description": "The resource path of the user who archived the group forum category."
}
},
"description": "Represents a forum category within a group for user discussions.",
"x-aep-resource": {
"patterns": [
"groups/{group_id}/forum-categories/{group_forum_category_id}"
],
"plural": "group-forum-categories",
"singular": "group-forum-category"
},
"x-resource": true
},
"GroupForumComment": {
"type": "object",
"properties": {
"path": {
"example": "groups/123/forum-categories/01234567-89ab-cdef-0123-456789abcdef/posts/01234567-89ab-cdef-0123-456789abcdef/comments/01234567-89ab-cdef-0123-456789abcdef",
"type": "string",
"description": "The resource path of the group forum comment.\n\nFormat:\n`groups/{group_id}/forum-categories/{group_forum_category_id}/posts/{group_forum_post_id}/comments/{group_forum_comment_id}`"
},
"groupForumCommentId": {
"readOnly": true,
"type": "string",
"description": "The id of the group forum comment."
},
"message": {
"$ref": "#/components/schemas/ContentMessage",
"description": "The message content of the group forum comment."
}
},
"description": "Represents a forum comment on a group's forum post.",
"x-aep-resource": {
"patterns": [
"groups/{group_id}/forum-categories/{group_forum_category_id}/posts/{group_forum_post_id}/comments/{group_forum_comment_id}"
],
"plural": "group-forum-comments",
"singular": "group-forum-comment"
},
"x-resource": true
},
"GroupForumPost": {
"type": "object",
"properties": {
"path": {
"example": "groups/123/forum-categories/01234567-89ab-cdef-0123-456789abcdef/posts/01234567-89ab-cdef-0123-456789abcdef",
"type": "string",
"description": "The resource path of the group forum post.\n\nFormat:\n`groups/{group_id}/forum-categories/{group_forum_category_id}/posts/{group_forum_post_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group forum post was created.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group forum post was last updated.",
"format": "date-time"
},
"pinned": {
"example": true,
"type": "boolean",
"description": "Whether the group forum post is pinned."
},
"locked": {
"example": true,
"type": "boolean",
"description": "Whether the group forum post is locked."
},
"groupForumPostId": {
"readOnly": true,
"type": "string",
"description": "The id of the group forum post."
},
"title": {
"type": "string",
"description": "The title of the group forum post."
},
"firstComment": {
"$ref": "#/components/schemas/GroupForumComment",
"description": "The resource path of the group forum post's first comment, which holds the\npost content.\n\nBy default, the `first_comment` field is fully populated. This **will not**\ndereference resource references within the first comment, such as\n`GroupForumComment.author`; only the `path` subfield of these fields will\nbe populated. However, if only the `path` field of the first comment is\nneeded, you can specify the FULL view."
},
"author": {
"readOnly": true,
"example": "users/156",
"type": "string",
"description": "The resource path of the user who created the group forum post."
},
"archiveTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group forum post was archived.",
"format": "date-time"
},
"archiver": {
"readOnly": true,
"example": "users/156",
"type": "string",
"description": "The resource path of the user who archived the group forum post."
},
"commentCount": {
"type": "integer",
"description": "The number of comments on the group forum post. This includes the first\ncomment (post content).",
"format": "int64"
}
},
"description": "Represents a forum post within a group's forum category.",
"x-aep-resource": {
"patterns": [
"groups/{group_id}/forum-categories/{group_forum_category_id}/posts/{group_forum_post_id}"
],
"plural": "group-forum-posts",
"singular": "group-forum-post"
},
"x-resource": true
},
"GroupInvitation": {
"required": [
"groupId",
"id",
"recipientUserId",
"roleIds",
"senderUserId",
"status",
"updatedAt"
],
"type": "object",
"properties": {
"id": {
"minLength": 1,
"type": "string",
"description": "The invitation id. Stringified because it can exceed the 2^53-1 JSON number limit."
},
"groupId": {
"type": "integer",
"description": "The group the invitation is for.",
"format": "int64"
},
"recipientUserId": {
"type": "integer",
"description": "The invited user.",
"format": "int64"
},
"senderUserId": {
"type": "integer",
"description": "The user who sent the invitation.",
"format": "int64"
},
"status": {
"$ref": "#/components/schemas/GroupInvitationStatus"
},
"roleIds": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "Every group role id attached to the invitation."
},
"updatedAt": {
"type": "string",
"description": "When the invitation was last updated (UTC).",
"format": "date-time"
}
},
"additionalProperties": false,
"description": "An invitation to join a group."
},
"GroupInvitationCursorPageResponse": {
"required": ["data"],
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GroupInvitation"
},
"description": "The items in this page."
},
"nextPageCursor": {
"type": "string",
"description": "Cursor for the next page, if any.",
"nullable": true
},
"previousPageCursor": {
"type": "string",
"description": "Cursor for the previous page, if any.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A page of results using groups-api opaque cursor pagination."
},
"GroupInvitationStatus": {
"enum": ["Open", "Accepted", "Declined", "Deleted"],
"type": "string",
"description": "Status of a group invitation, serialized as its name."
},
"GroupJoinRequest": {
"type": "object",
"properties": {
"path": {
"example": "groups/123/join-requests/123",
"type": "string",
"description": "The resource path of the group join request.\n\nFormat: `groups/{group_id}/join-requests/{group_join_request_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group join request was created.",
"format": "date-time"
},
"user": {
"readOnly": true,
"example": "users/156",
"type": "string",
"description": "The resource path of the user."
}
},
"description": "A request to join a group.\n\nThe `acceptRequests` permission is required.",
"x-aep-resource": {
"patterns": [
"groups/{group_id}/join-requests/{group_join_request_id}"
],
"plural": "group-join-requests",
"singular": "group-join-request"
},
"x-resource": true
},
"GroupMembership": {
"type": "object",
"properties": {
"path": {
"example": "groups/123/memberships/123",
"type": "string",
"description": "The resource path of the group membership.\n\nFormat: `groups/{group_id}/memberships/{group_membership_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group membership was created.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group membership was last updated.",
"format": "date-time"
},
"user": {
"example": "users/21557",
"type": "string",
"description": "The resource path of a member of the group.",
"x-immutable": true
},
"role": {
"example": "groups/7/roles/99513316",
"type": "string",
"description": "The resource path of the member's highest-ranked role.\nWhen the member holds multiple roles, this reflects only the\nhighest-ranked one. Prefer using the `roles` field, which always\ncontains the complete set of assigned roles."
},
"roles": {
"readOnly": true,
"example": "groups/7/roles/99513316",
"type": "array",
"items": {
"type": "string"
},
"description": "The resource paths of all roles assigned to the group member.\nThis is the recommended field for reading a member's roles, as it\nalways contains the complete set of roles held by the member."
}
},
"description": "A membership to a group. A user ID can be used in place of a membership ID.",
"x-aep-resource": {
"patterns": ["groups/{group_id}/memberships/{group_membership_id}"],
"plural": "group-memberships",
"singular": "group-membership"
},
"x-resource": true
},
"GroupRole": {
"type": "object",
"properties": {
"path": {
"example": "groups/123/roles/123",
"type": "string",
"description": "The resource path of the group role.\n\nFormat: `groups/{group_id}/roles/{group_role_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp for when the group role was last updated.\n\nVisible only to owners of the group.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the group role was last updated.\n\nVisible only to owners of the group.",
"format": "date-time"
},
"id": {
"readOnly": true,
"example": "200",
"type": "string",
"description": "A unique ID that identifies a role.\n\nDistinct from a role's rank, which is only unique within the group."
},
"displayName": {
"example": "Member",
"type": "string",
"description": "The name of the role.\n\nHas a maximum limit of 100 characters. Names above the limit are\nrejected."
},
"description": {
"example": "This is a description for the role",
"type": "string",
"description": "The description of the role.\n\nHas a maximum limit of 1000 characters. Strings above the limit are\nrejected. Visible only to owners of the group."
},
"rank": {
"example": 1,
"type": "integer",
"description": "The rank of the role.\n\nThe minimum value is 0. The maximum value is 255.",
"format": "int32"
},
"memberCount": {
"readOnly": true,
"example": 10223136,
"type": "integer",
"description": "Total number of members within a role.\n\nThis field is not returned for guest roles.",
"format": "int32"
},
"permissions": {
"$ref": "#/components/schemas/GroupRole_RolePermissions",
"description": "The permissions granted for this role.\n\nThis value is populated based on the read scope and role of the authorized\nuser or API key creator. If the user or creator is the owner of the parent\ngroup, they are able to view all role permissions in the group. If the user\nor creator is a member of the parent group, they are able to view their\nrole's permissions in the group. Anyone can view guest permissions. In\nthe case that someone can't view the permissions, this field is not\nreturned."
}
},
"description": "A configurable property to grant specific privileges for members within a\ngroup.",
"x-aep-resource": {
"patterns": ["groups/{group_id}/roles/{group_role_id}"],
"plural": "group-roles",
"singular": "group-role"
},
"x-resource": true,
"x-oneOf": {
"Description": ["description"],
"MemberCount": ["memberCount"]
}
},
"GroupRole_RolePermissions": {
"type": "object",
"properties": {
"viewWallPosts": {
"example": true,
"type": "boolean",
"description": "View group wall."
},
"createWallPosts": {
"example": true,
"type": "boolean",
"description": "Post on group wall."
},
"deleteWallPosts": {
"example": true,
"type": "boolean",
"description": "Delete group wall posts."
},
"viewGroupShout": {
"example": true,
"type": "boolean",
"description": "View group shout."
},
"createGroupShout": {
"example": true,
"type": "boolean",
"description": "Post group shout."
},
"changeRank": {
"example": true,
"type": "boolean",
"description": "Manage lower-ranked member ranks."
},
"acceptRequests": {
"example": true,
"type": "boolean",
"description": "Accept join requests."
},
"exileMembers": {
"example": true,
"type": "boolean",
"description": "Kick lower-ranked members."
},
"manageRelationships": {
"example": true,
"type": "boolean",
"description": "Manage allies and enemies."
},
"viewAuditLog": {
"example": true,
"type": "boolean",
"description": "View audit log."
},
"spendGroupFunds": {
"example": true,
"type": "boolean",
"description": "Spend group funds."
},
"advertiseGroup": {
"example": true,
"type": "boolean",
"description": "Advertise group."
},
"createAvatarItems": {
"example": true,
"type": "boolean",
"description": "Create avatar items."
},
"manageAvatarItems": {
"example": true,
"type": "boolean",
"description": "Manage avatar items."
},
"manageGroupUniverses": {
"example": true,
"type": "boolean",
"description": "Manage group universes."
},
"viewUniverseAnalytics": {
"example": true,
"type": "boolean",
"description": "View universe analytics."
},
"createApiKeys": {
"example": true,
"type": "boolean",
"description": "Create group API Keys."
},
"manageApiKeys": {
"example": true,
"type": "boolean",
"description": "Manage all group API keys."
},
"banMembers": {
"example": true,
"type": "boolean",
"description": "Ban lower-ranked members."
},
"viewForums": {
"example": true,
"type": "boolean",
"description": "Can view forums"
},
"manageCategories": {
"example": true,
"type": "boolean",
"description": "Can change forum categories"
},
"createPosts": {
"example": true,
"type": "boolean",
"description": "Can create forum post"
},
"lockPosts": {
"example": true,
"type": "boolean",
"description": "Can lock forum post"
},
"pinPosts": {
"example": true,
"type": "boolean",
"description": "Can pin forum post"
},
"removePosts": {
"example": true,
"type": "boolean",
"description": "Can remove forum post"
},
"createComments": {
"example": true,
"type": "boolean",
"description": "Can create forum comment"
},
"removeComments": {
"example": true,
"type": "boolean",
"description": "Can remove forum comment"
},
"manageBlockedWords": {
"example": true,
"type": "boolean",
"description": "Can manage blocked words"
},
"viewBlockedWords": {
"example": true,
"type": "boolean",
"description": "Can view blocked words"
},
"bypassSlowMode": {
"example": true,
"type": "boolean",
"description": "can bypass slow mode"
}
},
"description": "Represents the permissions on a role."
},
"HomepageThumbnail": {
"required": [
"assetId",
"homepageThumbnailId",
"homepageThumbnailStatus",
"moderationStatus",
"personalizedConfigStatus"
],
"type": "object",
"properties": {
"homepageThumbnailId": {
"minLength": 1,
"type": "string",
"description": "The unique identifier of the homepage thumbnail."
},
"assetId": {
"type": "integer",
"description": "The identifier of the image asset used by the thumbnail.",
"format": "int64"
},
"moderationStatus": {
"allOf": [
{
"$ref": "#/components/schemas/ThumbnailPersonalizationApi.ModerationStatus"
}
],
"description": "The moderation status of the thumbnail's image asset."
},
"personalizedConfigStatus": {
"allOf": [
{
"$ref": "#/components/schemas/PersonalizedConfigStatus"
}
],
"description": "Indicates whether the thumbnail belongs to an active personalization configuration."
},
"homepageThumbnailStatus": {
"allOf": [
{
"$ref": "#/components/schemas/HomepageThumbnailStatus"
}
],
"description": "The availability status of the homepage thumbnail."
}
},
"additionalProperties": false,
"description": "A homepage thumbnail associated with a universe."
},
"HomepageThumbnailStatus": {
"enum": ["Active", "Spammy"],
"type": "string",
"description": "The availability status of a homepage thumbnail."
},
"HostResponse": {
"type": "object",
"properties": {
"hostType": {
"allOf": [
{
"$ref": "#/components/schemas/HostType"
}
],
"description": "The type of host of a virtual event."
},
"hostId": {
"type": "integer",
"format": "int64"
},
"hostName": {
"type": "string",
"nullable": true
},
"hasVerifiedBadge": {
"type": "boolean",
"nullable": true
}
},
"additionalProperties": false,
"description": "Host block. VirtualEventsApi.Models.V3.Response.HostResponse.HostName and VirtualEventsApi.Models.V3.Response.HostResponse.HasVerifiedBadge are omitted when host-details resolution failed."
},
"HostType": {
"enum": ["user", "group"],
"type": "string",
"description": "The type of host of a virtual event."
},
"HttpValidationProblemDetails": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/ProblemDetails"
}
],
"properties": {
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
},
"nullable": true
}
},
"additionalProperties": {
"nullable": true
},
"nullable": true
},
"HydratedSave": {
"required": ["creatorStoreAsset", "dateSaved", "owned"],
"type": "object",
"properties": {
"owned": {
"type": "boolean",
"description": "Whether the asset is owned by the user."
},
"dateSaved": {
"type": "string",
"description": "Date the save was added.",
"format": "date-time"
},
"creatorStoreAsset": {
"allOf": [
{
"$ref": "#/components/schemas/CreatorStoreAsset"
}
],
"description": "The asset that was saved.",
"nullable": true
}
},
"additionalProperties": false,
"description": "A save record, hydrated with the asset details.",
"nullable": true
},
"InGameConfigExperimentConfiguration": {
"type": "object",
"properties": {
"variants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SingleConfigExperimentVariant"
},
"description": "Variants participating in the experiment. Exactly one must have IsBaseline set.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Configuration for an in-game-config experiment."
},
"IncrementDataStoreEntryRequest": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"description": "The amount by which to increment the entry value. Both the existing value\nand the increment amount must be integers.",
"format": "double"
},
"users": {
"example": "users/123",
"type": "array",
"items": {
"type": "string"
},
"description": "Users associated with the entry.\n\nEach value must be a user resource path in the format `users/{user_id}`,\nnot a bare user ID.\n\nIf this is not provided, existing user IDs are cleared."
},
"attributes": {
"type": "object",
"description": "An arbitrary set of attributes associated with the entry.\n\nIf this is not provided, existing attributes are cleared."
}
},
"description": "Increments the entry value.\n\nIf the value is not numeric, this request fails.",
"x-oneOf": {
"Amount": ["amount"]
}
},
"IncrementEntryRequest": {
"required": ["amount"],
"type": "object",
"properties": {
"amount": {
"type": "integer",
"description": "The amount to increment by the entry value. If the input value exceeds the maximum value supported by int64, which is 9,223,372,036,854,775,807, the request fails with a 400 Bad Request error.",
"format": "int64"
}
},
"description": "Increments entry value."
},
"IncrementOrderedDataStoreEntryRequest": {
"type": "object",
"properties": {
"amount": {
"type": "number",
"description": "The amount by which to increment the entry value. Both the existing value\nand the increment amount must be integers.",
"format": "double"
}
},
"description": "Increments the entry value.",
"x-oneOf": {
"Amount": ["amount"]
}
},
"Instance": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/places/123/instances/0123456789abcdef0123456789abcdef",
"type": "string",
"description": "The resource path of the instance.\n\nFormat: `universes/{universe_id}/places/{place_id}/instances/{instance_id}`"
},
"hasChildren": {
"readOnly": true,
"example": true,
"type": "boolean",
"description": "whether the instance has any children instance"
},
"engineInstance": {
"$ref": "#/components/schemas/roblox.engine.Instance",
"description": "the property details of the instance"
}
},
"description": "Represents a data model instance.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/places/{place_id}/instances/{instance_id}"
],
"plural": "instances",
"singular": "instance"
},
"x-resource": true
},
"InstanceCounts": {
"type": "object",
"properties": {
"script": {
"type": "integer",
"description": "The number of Script instances.",
"format": "int32"
},
"meshPart": {
"type": "integer",
"description": "The number of MeshPart instances.",
"format": "int32"
},
"animation": {
"type": "integer",
"description": "The number of Animation instances.",
"format": "int32"
},
"decal": {
"type": "integer",
"description": "The number of Decal instances.",
"format": "int32"
},
"audio": {
"type": "integer",
"description": "The number of Audio instances.",
"format": "int32"
},
"tool": {
"type": "integer",
"description": "The number of Tool instances.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Represents the count of various instance types within an asset.\nSee [Instance](https://create.roblox.com/docs/reference/engine/classes/Instance).",
"nullable": true
},
"InventoryItem": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The resource path of the inventory item.\r\n \r\nFormat: `users/{user_id}/inventory-items/{inventory_item_id}`"
},
"assetDetails": {
"allOf": [
{
"$ref": "#/components/schemas/InventoryItem_AssetDetails"
}
],
"description": "Populated if this item is an asset."
},
"badgeDetails": {
"allOf": [
{
"$ref": "#/components/schemas/InventoryItem_BadgeDetails"
}
],
"description": "Populated if this item is a badge."
},
"gamePassDetails": {
"allOf": [
{
"$ref": "#/components/schemas/InventoryItem_GamePassDetails"
}
],
"description": "Populated if this item is a game pass."
},
"privateServerDetails": {
"allOf": [
{
"$ref": "#/components/schemas/InventoryItem_PrivateServerDetails"
}
],
"description": "Populated if this item is a private server."
},
"addTime": {
"type": "string",
"description": "The time when the item was added to the user's inventory. For example, the\r\ntime when the user purchased a private server or was awarded a badge.\r\n \r\nThis field is currently not populated for passes.",
"format": "date-time",
"nullable": true
}
},
"additionalProperties": false,
"description": "Represents an item in a user's inventory."
},
"InventoryItem_AssetDetails": {
"type": "object",
"properties": {
"assetId": {
"type": "string",
"description": "A unique ID that identifies an asset."
},
"inventoryItemAssetType": {
"enum": [
"INVENTORY_ITEM_ASSET_TYPE_UNSPECIFIED",
"CLASSIC_TSHIRT",
"AUDIO",
"HAT",
"MODEL",
"CLASSIC_SHIRT",
"CLASSIC_PANTS",
"DECAL",
"CLASSIC_HEAD",
"FACE",
"GEAR",
"ANIMATION",
"TORSO",
"RIGHT_ARM",
"LEFT_ARM",
"LEFT_LEG",
"RIGHT_LEG",
"PACKAGE",
"PLUGIN",
"MESH_PART",
"HAIR_ACCESSORY",
"FACE_ACCESSORY",
"NECK_ACCESSORY",
"SHOULDER_ACCESSORY",
"FRONT_ACCESSORY",
"BACK_ACCESSORY",
"WAIST_ACCESSORY",
"CLIMB_ANIMATION",
"DEATH_ANIMATION",
"FALL_ANIMATION",
"IDLE_ANIMATION",
"JUMP_ANIMATION",
"RUN_ANIMATION",
"SWIM_ANIMATION",
"WALK_ANIMATION",
"POSE_ANIMATION",
"EMOTE_ANIMATION",
"VIDEO",
"TSHIRT_ACCESSORY",
"SHIRT_ACCESSORY",
"PANTS_ACCESSORY",
"JACKET_ACCESSORY",
"SWEATER_ACCESSORY",
"SHORTS_ACCESSORY",
"LEFT_SHOE_ACCESSORY",
"RIGHT_SHOE_ACCESSORY",
"DRESS_SKIRT_ACCESSORY",
"EYEBROW_ACCESSORY",
"EYELASH_ACCESSORY",
"MOOD_ANIMATION",
"DYNAMIC_HEAD",
"CREATED_PLACE",
"PURCHASED_PLACE"
],
"type": "string",
"description": "The specific asset type of this item."
},
"instanceId": {
"type": "string",
"description": "A unique ID that identifies an instance or \"copy\" of the asset that's\r\nowned by a user."
},
"collectibleDetails": {
"allOf": [
{
"$ref": "#/components/schemas/InventoryItem_CollectibleDetails"
}
],
"description": "Additional details if this asset is a collectible. Otherwise, this\r\nattribute will be omitted."
}
},
"additionalProperties": false,
"description": "Specific fields only applicable to assets"
},
"InventoryItem_BadgeDetails": {
"type": "object",
"properties": {
"badgeId": {
"type": "string",
"description": "A unique ID that identifies a badge."
}
},
"additionalProperties": false,
"description": "Specific fields that are applicable to a badge."
},
"InventoryItem_CollectibleDetails": {
"type": "object",
"properties": {
"itemId": {
"type": "string",
"description": "A unique ID of a Roblox item that is a collectible."
},
"instanceId": {
"type": "string",
"description": "A unique ID of an individual copy of a collectible with ownership tied\r\nto a group or user."
},
"instanceState": {
"enum": [
"COLLECTIBLE_ITEM_INSTANCE_STATE_UNSPECIFIED",
"AVAILABLE",
"HOLD"
],
"type": "string",
"description": "The instance state of this specific Collectible Item Instance which\r\naffects whether it can be resold or traded.",
"nullable": true
},
"serialNumber": {
"type": "integer",
"description": "If the asset is a Limited, a user-visible number that shows this item is\r\nthe nth replica of the asset. Otherwise, this attribute will be omitted.",
"format": "int64",
"nullable": true
}
},
"additionalProperties": false,
"description": "Specific fields that are applicable to a collectible."
},
"InventoryItem_GamePassDetails": {
"type": "object",
"properties": {
"gamePassId": {
"type": "string",
"description": "A unique ID that identifies a game pass."
}
},
"additionalProperties": false,
"description": "Specific fields that are applicable to a game pass."
},
"InventoryItem_PrivateServerDetails": {
"type": "object",
"properties": {
"privateServerId": {
"type": "string",
"description": "A unique ID that identifies a private server."
}
},
"additionalProperties": false,
"description": "Specific fields that are applicable to a private server."
},
"LaunchRestartRequest": {
"type": "object",
"properties": {
"bleedOffDurationMinutes": {
"maximum": 240,
"minimum": 1,
"type": "integer",
"description": "Period in minutes before servers begin to be restarted.\r\nDuring this time, players will not be matchmade to servers scheduled for restart.\r\nValid range: 1-240.",
"format": "int32",
"nullable": true
},
"places": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/PlaceFilter"
},
"description": "Optional mapping of place ID to specific PlaceFilter objects.\r\nIf empty for a place, restart all versions of that place.\r\nIf null/omitted entirely, restart all places in the universe.",
"nullable": true
},
"attributes": {
"description": "Optional JSON object sent to game servers when the restart is scheduled.\r\nMust be a JSON object and at most 500 bytes when serialized (UTF-8).",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request model for launching a game restart."
},
"LaunchRestartResponse": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID of the restart.",
"nullable": true
},
"playersImpacted": {
"type": "integer",
"description": "Number of players in instances that will be shut down.",
"format": "int32"
},
"instancesImpacted": {
"type": "integer",
"description": "Number of game instances that will be closed.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Response model for launching a game restart."
},
"LaunchUpdateRequest": {
"type": "object",
"properties": {
"universeId": {
"type": "integer",
"description": "The Universe ID to update.",
"format": "int64"
},
"placeIds": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "The place IDs to update. If none are specified, we will update all active Places in the Universe",
"nullable": true
},
"closeOldVersionsOnly": {
"type": "boolean",
"description": "If true (default in UI), we will only migrate players from servers running old PlaceVersions.\r\nIf false, we will migrate all players"
},
"bleedOffServers": {
"type": "boolean",
"description": "If true (default in UI), we will stop matchmaking to servers but keep them up before shutting them down, allowing\r\n players to naturally migrate to the newer version.\r\nIf false, we will immediately start shutting down servers"
},
"bleedOffDurationMinutes": {
"type": "integer",
"description": "If BleedOffServers=true, how long will we allow old servers to stay up before shutting them down.\r\nValid values: 1 - 60 minutes",
"format": "int32"
},
"placeIdToVersions": {
"type": "object",
"additionalProperties": {
"uniqueItems": true,
"type": "array",
"items": {
"type": "integer",
"format": "int32"
},
"nullable": true
},
"description": "Optional. A mapping of PlaceId to the specific versions to restart/bleed off for that place.\r\nWhen set for a place, only servers running those exact versions will be affected.\r\nIf a place is not in this dictionary or has an empty set, behavior falls back to CloseOldVersionsOnly logic.",
"nullable": true
},
"attributes": {
"type": "string",
"description": "Optional. Attributes string to include in the ServerLifecycleChanged CSM payload published to game servers.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Launch Update Request. Contains specification for how update should roll out"
},
"LaunchUpdateResponse": {
"type": "object",
"properties": {
"updateId": {
"type": "string",
"description": "An ID for UI to query status of this update",
"format": "uuid"
},
"numPlayersToBeKicked": {
"type": "integer",
"description": "How many players are playing in servers that will be shut down according to the update configuration",
"format": "int32"
},
"instancesToBeClosed": {
"type": "integer",
"description": "How many game instances will be closed according to the update configuration",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Launch Update response."
},
"LinkType": {
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
"type": "integer",
"format": "int32",
"x-enumNames": [
"Invalid",
"Facebook",
"Twitter",
"Youtube",
"Twitch",
"Discord",
"Github",
"Guilded",
"Roblox",
"Devforum",
"TryInExperience"
],
"x-enum-varnames": [
"Invalid",
"Facebook",
"Twitter",
"Youtube",
"Twitch",
"Discord",
"Github",
"Guilded",
"Roblox",
"Devforum",
"TryInExperience"
]
},
"ListAssetQuotasResponse": {
"type": "object",
"properties": {
"assetQuotas": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetQuota"
},
"description": "The AssetQuotas from the specified User."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of AssetQuotas in the parent collection."
},
"ListDataStoreEntriesResponse": {
"type": "object",
"properties": {
"dataStoreEntries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DataStoreEntry"
},
"description": "The DataStoreEntries from the specified DataStore or DataStoreScope."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of DataStoreEntries in the parent collection."
},
"ListDataStoreEntryRevisionsResponse": {
"type": "object",
"properties": {
"dataStoreEntries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DataStoreEntry"
},
"description": "The revisions of the data_store_entry."
},
"nextPageToken": {
"type": "string",
"description": "A token that you send as a `pageToken` parameter to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."
}
},
"description": "A list of revisions of a data store entry."
},
"ListDataStoresResponse": {
"type": "object",
"properties": {
"dataStores": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DataStore"
},
"description": "The DataStores from the specified Universe."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of DataStores in the parent collection."
},
"ListDeveloperProductConfigsV2Response": {
"required": ["developerProducts", "nextPageToken"],
"type": "object",
"properties": {
"developerProducts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DeveloperProductConfigV2"
},
"description": "The list of developer products with their corresponding configuration details."
},
"nextPageToken": {
"type": "string",
"description": "The next page token.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response that contains the list of developer products with their corresponding configuration details and pagination information."
},
"ListEntriesResponse": {
"type": "object",
"properties": {
"entries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Entry"
},
"description": "The Entries from the specified Scope."
},
"nextPageToken": {
"type": "string",
"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of Entries in the parent collection."
},
"ListExperimentsResponse": {
"type": "object",
"properties": {
"experiments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ExperimentSummary"
},
"description": "The page of experiments matching the query.",
"nullable": true
},
"total": {
"type": "integer",
"description": "Total number of experiments for the universe matching the filters\r\n (independent of pagination).",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Response body for `GET /v1/experimentation/universes/{universeId}/experiments`."
},
"ListGamePassConfigsByUniverseResponse": {
"required": ["gamePasses", "nextPageToken"],
"type": "object",
"properties": {
"gamePasses": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GamePassConfigV2"
},
"description": "The list of game passes with their corresponding configuration details."
},
"nextPageToken": {
"type": "string",
"description": "The next page token.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response for listing game pass configuration details by universe"
},
"ListGameServerLogsResponse": {
"type": "object",
"properties": {
"gameServerLogs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GameServerLog"
},
"description": "The GameServers from the specified PlaceVersion.",
"nullable": true
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\r\npage. If this field is omitted, there are no subsequent pages.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for listing game servers."
},
"ListGroupForumCategoriesResponse": {
"type": "object",
"properties": {
"groupForumCategories": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GroupForumCategory"
},
"description": "The GroupForumCategories from the specified Group."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of GroupForumCategories in the parent collection."
},
"ListGroupForumCommentsResponse": {
"type": "object",
"properties": {
"groupForumComments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GroupForumComment"
},
"description": "The GroupForumComments from the specified GroupForumPost."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of GroupForumComments in the parent collection."
},
"ListGroupForumPostsResponse": {
"type": "object",
"properties": {
"groupForumPosts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GroupForumPost"
},
"description": "The GroupForumPosts from the specified GroupForumCategory."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of GroupForumPosts in the parent collection."
},
"ListGroupJoinRequestsResponse": {
"type": "object",
"properties": {
"groupJoinRequests": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GroupJoinRequest"
},
"description": "The GroupJoinRequests from the specified Group."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of GroupJoinRequests in the parent collection."
},
"ListGroupMembershipsResponse": {
"type": "object",
"properties": {
"groupMemberships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GroupMembership"
},
"description": "The GroupMemberships from the specified Group."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of GroupMemberships in the parent collection."
},
"ListGroupRolesResponse": {
"type": "object",
"properties": {
"groupRoles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GroupRole"
},
"description": "The GroupRoles from the specified Group."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of GroupRoles in the parent collection."
},
"ListInstanceChildrenMetadata": {
"type": "object",
"properties": {},
"description": "Represents metadata about the long-running operation corresponding to a\nListInstanceChildren request.\n\nThis is the type of the `Operation.metadata` field in the response to\n`GetOperation` requests for ListInstanceChildren operations."
},
"ListInstanceChildrenResponse": {
"type": "object",
"properties": {
"instances": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Instance"
},
"description": "A list of children instances.\n\n"
},
"nextPageToken": {
"type": "string",
"description": "A token, which can be sent as `page_token` to retrieve the next page.\nIf this field is omitted, there are no subsequent pages."
}
},
"description": "Returns a list of the instance's children."
},
"ListInventoryItemsResponse": {
"type": "object",
"properties": {
"inventoryItems": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InventoryItem"
},
"description": "The InventoryItems from the specified User."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\r\npage. If this field is omitted, there are no subsequent pages."
}
},
"additionalProperties": false,
"description": "A list of InventoryItems in the parent collection."
},
"ListLuauExecutionSessionTaskLogsResponse": {
"type": "object",
"properties": {
"luauExecutionSessionTaskLogs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LuauExecutionSessionTaskLog"
},
"description": "The LuauExecutionSessionTaskLogs from the specified\nLuauExecutionSessionTask."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of LuauExecutionSessionTaskLogs in the parent collection."
},
"ListMatchmakingPlayerAttributeDefinitionsResponse": {
"type": "object",
"properties": {
"playerAttributeSchema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MatchmakingPlayerAttributeDefinition"
},
"description": "All PlayerAttributeDefinitions for a universe.",
"nullable": true
}
},
"additionalProperties": false,
"description": "The response for listing matchmaking player attribute definitions."
},
"ListMatchmakingScoringConfigurationsResponse": {
"type": "object",
"properties": {
"scoringConfigurations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MatchmakingScoringConfiguration"
},
"description": "The scoring configurations.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response to list matchmaking scoring configurations in a universe."
},
"ListMatchmakingServerAttributeDefinitionsResponse": {
"type": "object",
"properties": {
"serverAttributeSchema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MatchmakingServerAttributeDefinition"
},
"description": "All ServerAttributeDefinitions for a universe.",
"nullable": true
}
},
"additionalProperties": false,
"description": "The response for listing matchmaking server attribute definitions."
},
"ListMemoryStoreSortedMapItemsResponse": {
"type": "object",
"properties": {
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MemoryStoreSortedMapItem"
},
"description": "The MemoryStoreSortedMapItems from the specified MemoryStoreSortedMap.\n"
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of MemoryStoreSortedMapItems in the parent collection."
},
"ListOrderedDataStoreEntriesResponse": {
"type": "object",
"properties": {
"orderedDataStoreEntries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OrderedDataStoreEntry"
},
"description": "The OrderedDataStoreEntries from the specified OrderedDataStoreScope."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of OrderedDataStoreEntries in the parent collection."
},
"ListPlaceMatchmakingScoringConfigurationsResponse": {
"type": "object",
"properties": {
"placeScoringConfigurations": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/MatchmakingScoringConfiguration"
},
"description": "The scoring configurations for places.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response to list all places with scoring configuration in a universe."
},
"ListRestartStatusesResponse": {
"type": "object",
"properties": {
"restartStatuses": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RestartStatus"
},
"description": "Restart statuses keyed by restart ID.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for listing restart statuses."
},
"ListRevisionsResponse": {
"type": "object",
"properties": {
"revisions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RevisionResponse"
},
"description": "The list of revisions.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for listing revisions."
},
"ListUserRestrictionLogsResponse": {
"type": "object",
"properties": {
"logs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserRestrictionLog"
},
"description": "The UserRestrictionLogs from the specified Universe."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "Returns a list of change logs applied to UserRestriction resources."
},
"ListUserRestrictionsResponse": {
"type": "object",
"properties": {
"userRestrictions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserRestriction"
},
"description": "The UserRestrictions from the specified Universe or Place."
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\npage. If this field is omitted, there are no subsequent pages."
}
},
"description": "A list of UserRestrictions in the parent collection."
},
"LiteralValueDto": {
"type": "object",
"properties": {
"booleanValue": {
"type": "string",
"nullable": true
},
"integerValue": {
"type": "string",
"nullable": true
},
"doubleValue": {
"type": "string",
"nullable": true
},
"stringValue": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false,
"description": "Literal constant for an RPN operand."
},
"LogSeverity": {
"enum": [0, 1, 2, 3],
"type": "integer",
"description": "Defines the various log severity types with values:\r\nOutput (0), Info (1), Warning (2), Error (3)",
"format": "int32"
},
"LuauExecutionSessionTask": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/places/123/luau-execution-session-tasks/123e4567-e89b-12d3-a456-426655440000",
"type": "string",
"description": "The resource path of the luau execution session task.\n\nFormats:\n* `universes/{universe_id}/places/{place_id}/luau-execution-session-tasks/{luau_execution_session_task_id}`\n* `universes/{universe_id}/places/{place_id}/versions/{place_version_id}/luau-execution-session-tasks/{luau_execution_session_task_id}`\n* `universes/{universe_id}/places/{place_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{luau_execution_session_task_id}`\n* `universes/{universe_id}/places/{place_id}/versions/{place_version_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{luau_execution_session_task_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "Time when this task was created.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "Time when this task's state last changed.",
"format": "date-time"
},
"user": {
"readOnly": true,
"type": "string",
"description": "The user that created the API key that was used to create this task."
},
"state": {
"readOnly": true,
"example": "STATE_UNSPECIFIED",
"enum": [
"STATE_UNSPECIFIED",
"QUEUED",
"PROCESSING",
"CANCELLED",
"COMPLETE",
"FAILED"
],
"type": "string",
"description": "The task's state. See the State enum for information about each possible\nvalue.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | STATE_UNSPECIFIED | UNSPECIFIED |\n | QUEUED | The Task is waiting to be processed. |\n | PROCESSING | The Task has been picked up for processing. |\n | CANCELLED | The Task has been stopped by the user. |\n | COMPLETE | The Task has finished processing. The output field contains the output. |\n | FAILED | The Task failed. The error field contains details about the error. |",
"format": "enum"
},
"script": {
"type": "string",
"description": "The script to be run as part of this task.\n\nFor example:\n\n```luau\nlocal x = 3\nlocal y = 4\nreturn x + y\n```",
"x-immutable": true
},
"timeout": {
"example": "3s",
"type": "string",
"description": "Limit for how long the script can run.\n\nThe task fails if the script does not complete within the\nspecified duration.\n\nDefaults to 5 minutes.",
"format": "duration",
"x-immutable": true
},
"error": {
"$ref": "#/components/schemas/LuauExecutionSessionTask_Error",
"description": "Present when the task execution fails. Contains details about the error\nthat caused the failure."
},
"output": {
"$ref": "#/components/schemas/LuauExecutionSessionTask_Output",
"description": "Present when the task execution succeeds. Contains the output of the\nexecution."
},
"binaryInput": {
"type": "string",
"description": "Resource path of the binary input to this task. See the documentation for\nthe\n`LuauExecutionSessionTaskBinaryInput` resource for usage details."
},
"enableBinaryOutput": {
"example": true,
"type": "boolean",
"description": "If set to true, allows the task to output a large binary object in addition\nto standard return values.\n\nIf `enable_binary_output` is set to true, the task script must return a\n`LuauExecutionTaskOutput` (or equivalent table) and no other return values.\n\nBelow is example code for doing so:\n\n```luau\nlocal buf: buffer = buffer.create(10)\nlocal result: LuauExecutionTaskOutput = {\n BinaryOutput = buf,\n ReturnValues = { \"hello world\", 123 }\n}\nreturn result\n```\n\nThe `BinaryOutput` buffer must be no larger than 256 MiB in size.\n\nThe `ReturnValues` array, if given, will be serialized to JSON and made\navailable in the `output` field of the `LuauExecutionSessionTask` resource,\nsimilar to regular return values when not using `enable_binary_output`.\n\nThe binary output can be fetched from the URI in the `binaryOutputUri`\nfield after the task completes. The `binaryOutputUri` is valid for 15\nminutes after task completion.",
"x-immutable": true
},
"binaryOutputUri": {
"readOnly": true,
"type": "string",
"description": "URI for the binary output of this task. See the `enableBinaryOutput` field\nfor usage details."
}
},
"description": "A `LuauExecutionSessionTask` (\"task\" for short) executes a given Luau script\nin the context of a specific version of a place.\n\nIn a task, physics simulation does not run. Server and local scripts within\nthe place also do not automatically run.\n\nThe script may access and update the data model of the place, including\ninvoking any module scripts. However, data model changes are local to the\ntask and cannot be persisted.\n\nThe script can also invoke engine APIs that read and/or modify data stored in\nthe cloud, such as those for DataStores. Exercise caution when using these\nAPIs.\n\nScripts can be up to 4 MB in size and run for up to 5 minutes. Scripts that\nrun for longer than the time limit terminate with an error.\n\nScripts are executed as-is and do not need to be wrapped in a function.\n\nScripts can return values (using the Luau `return` keyword). Return values\nare serialized to JSON and can be retrieved with the `Get\nLuauExecutionSessionTask` API after the task completes. The total size of the\nreturn values after JSON serialization must not exceed 4 MB. If the limit is\nexceeded, the task terminates with an error.\n\nIf the script raises an unhandled error, the task terminates. The error\ninformation can be retrieved with the `GetLuauExecutionSessionTask` API.\n\nStandard output (generated by the Luau `print` function) can be retrieved\nwith the `ListLuauExecutionSessionTaskLogs` method after the task completes.\nA maximum of 450 KB of logs are retained. If the amount of logs exceeds the\nlimit, older logs are discarded.\n\nInformation about a task is retained for 24 hours after task completion.\n\nAt most ten incomplete tasks are allowed per place. Attempting to create more\ntasks while the first ten are incomplete results in a HTTP 429 response.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/places/{place_id}/luau-execution-session-tasks/{luau_execution_session_task_id}",
"universes/{universe_id}/places/{place_id}/versions/{place_version_id}/luau-execution-session-tasks/{luau_execution_session_task_id}",
"universes/{universe_id}/places/{place_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{luau_execution_session_task_id}",
"universes/{universe_id}/places/{place_id}/versions/{place_version_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{luau_execution_session_task_id}"
],
"plural": "luau-execution-session-tasks",
"singular": "luau-execution-session-task"
},
"x-resource": true,
"x-oneOf": {
"result": ["error", "output"]
}
},
"LuauExecutionSessionTaskBinaryInput": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/luau-execution-session-task-binary-inputs/123e4567-e89b-12d3-a456-426655440000",
"type": "string",
"description": "The resource path of the luau execution session task binary input.\n\nFormat:\n`universes/{universe_id}/luau-execution-session-task-binary-inputs/{luau_execution_session_task_binary_input_id}`"
},
"size": {
"type": "integer",
"description": "The size of the binary input object to be uploaded.\n\nThe maximum allowed size is 100 MiB.",
"format": "int64",
"x-immutable": true
},
"uploadUri": {
"readOnly": true,
"type": "string",
"description": "Upload the binary input object using this URI."
}
},
"description": "Represents a large binary input that can be given to a\n`LuauExecutionSessionTask`.\n\nEach `LuauExecutionSessionTaskBinaryInput` is associated with a presigned URL\nwhich can be used to upload an arbitrary object. After uploading the object,\nthe path of the `LuauExecutionSessionTaskBinaryInput` can be passed when\ncreating a `LuauExecutionSessionTask` to make the object available to the\ntask.\n\nWithin the task, the contents of the object are made available within a table\npassed as the first argument to the script, with the key `BinaryInput`. The\nfollowing example demonstrates how to retrieve the data:\n\n```\nlocal taskInput: LuauExecutionTaskInput = ({...})[1]\nlocal buf: buffer = taskInput.BinaryInput\n```\n\nEach `LuauExecutionSessionTaskBinaryInput` is valid for 15 minutes from the\ntime of creation. Within that time, in desired, you can use it to create\nmultiple tasks for the same universe.\n\nThe uploaded binary object must be no larger than 100 MiB.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/luau-execution-session-task-binary-inputs/{luau_execution_session_task_binary_input_id}"
],
"plural": "luau-execution-session-task-binary-inputs",
"singular": "luau-execution-session-task-binary-input"
},
"x-resource": true
},
"LuauExecutionSessionTaskLog": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/places/123/luau-execution-session-tasks/123e4567-e89b-12d3-a456-426655440000/logs/123",
"type": "string",
"description": "The resource path of the luau execution session task log.\n\nFormats:\n* `universes/{universe_id}/places/{place_id}/luau-execution-session-tasks/{luau_execution_session_task_id}/logs/{luau_execution_session_task_log_id}`\n* `universes/{universe_id}/places/{place_id}/versions/{place_version_id}/luau-execution-session-tasks/{luau_execution_session_task_id}/logs/{luau_execution_session_task_log_id}`\n* `universes/{universe_id}/places/{place_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{luau_execution_session_task_id}/logs/{luau_execution_session_task_log_id}`\n* `universes/{universe_id}/places/{place_id}/versions/{place_version_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{luau_execution_session_task_id}/logs/{luau_execution_session_task_log_id}`"
},
"messages": {
"readOnly": true,
"type": "array",
"items": {
"type": "string"
},
"description": "A list of log messages generated by the task execution.\nEach call to the Luau `print()` function from the task's script's code\nresults in a single list item here, even if the message itself contains\nnewlines. This field is populated when the View is FLAT (which is the\ndefault)."
},
"structuredMessages": {
"readOnly": true,
"type": "array",
"items": {
"$ref": "#/components/schemas/LuauExecutionSessionTaskLog_LogMessage"
},
"description": "A list of log messages generated by the task execution and associated\nmetadata.\nEach call to the Luau `print()` function from the task's script's code\nresults in a single list item here, even if the message itself contains\nnewlines. This field is populated when the View is STRUCTURED."
}
},
"description": "Represents a chunk of log messages generated by a\n`LuauExecutionSessionTask`.\n\nThe amount of logs that is retained is limited. See the documentation of the\n`LuauExecutionSessionTask` resource for more details.\n\nLogs have the same retention time as the parent task.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/places/{place_id}/luau-execution-session-tasks/{luau_execution_session_task_id}/logs/{luau_execution_session_task_log_id}",
"universes/{universe_id}/places/{place_id}/versions/{place_version_id}/luau-execution-session-tasks/{luau_execution_session_task_id}/logs/{luau_execution_session_task_log_id}",
"universes/{universe_id}/places/{place_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{luau_execution_session_task_id}/logs/{luau_execution_session_task_log_id}",
"universes/{universe_id}/places/{place_id}/versions/{place_version_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{luau_execution_session_task_id}/logs/{luau_execution_session_task_log_id}"
],
"plural": "luau-execution-session-task-logs",
"singular": "luau-execution-session-task-log"
},
"x-resource": true
},
"LuauExecutionSessionTaskLog_LogMessage": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "The log message"
},
"createTime": {
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The time at which the log message was produced",
"format": "date-time"
},
"messageType": {
"example": "MESSAGE_TYPE_UNSPECIFIED",
"enum": [
"MESSAGE_TYPE_UNSPECIFIED",
"OUTPUT",
"INFO",
"WARNING",
"ERROR"
],
"type": "string",
"description": "The `MessageType` of the log message.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | MESSAGE_TYPE_UNSPECIFIED | UNSPECIFIED |\n | OUTPUT | Corresponds to the `MessageOutput` enum value of the engine API. |\n | INFO | Corresponds to the `MessageInfo` enum value of the engine API. |\n | WARNING | Corresponds to the `MessageWarning` enum value of the engine API. |\n | ERROR | Corresponds to the `MessageError` enum value of the engine API. |",
"format": "enum"
}
},
"description": "A single log message along with its associated metadata"
},
"LuauExecutionSessionTask_Error": {
"type": "object",
"properties": {
"code": {
"readOnly": true,
"example": "ERROR_CODE_UNSPECIFIED",
"enum": [
"ERROR_CODE_UNSPECIFIED",
"SCRIPT_ERROR",
"DEADLINE_EXCEEDED",
"OUTPUT_SIZE_LIMIT_EXCEEDED",
"INTERNAL_ERROR"
],
"type": "string",
"description": "An error code indicating the category of the error.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | ERROR_CODE_UNSPECIFIED | UNSPECIFIED |\n | SCRIPT_ERROR | The task's script raised an unhandled error. |\n | DEADLINE_EXCEEDED | The task exceeded the maximum allowed execution duration. |\n | OUTPUT_SIZE_LIMIT_EXCEEDED | The task's outputs were too large. |\n | INTERNAL_ERROR | The Task failed due to an internal system error. |",
"format": "enum"
},
"message": {
"readOnly": true,
"type": "string",
"description": "An error message containing more details about the error."
}
},
"description": "Contains error details in case of failed execution."
},
"LuauExecutionSessionTask_Output": {
"type": "object",
"properties": {
"results": {
"readOnly": true,
"type": "array",
"items": {
"$ref": "#/components/schemas/GoogleProtobufValue"
},
"description": "Return values from the script that was run. Return values that are not\nJSON serializable (such as Data Model Instances) will be returned as\nnulls."
}
},
"description": "Contains the output of a task's execution."
},
"MatchmakingAttributeAggregation": {
"type": "object",
"properties": {
"aggregationFunction": {
"$ref": "#/components/schemas/AttributeAggregationFunction"
}
},
"additionalProperties": false,
"description": "Matchmaking attribute aggregation object for matchmaking rules."
},
"MatchmakingAttributeDataType": {
"enum": ["Invalid", "Bool", "Number", "String"],
"type": "string",
"description": "Data type of a matchmaking attribute. Can be a bool, number, or string."
},
"MatchmakingAttributeReference": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The id of the attribute.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Matchmaking attribute reference object for matchmaking rules."
},
"MatchmakingAttributeValue": {
"type": "object",
"properties": {
"boolValue": {
"type": "boolean",
"description": "Bool value of the attribute. One of BoolValue, NumericValue, or StringValue must be set.",
"nullable": true
},
"numericValue": {
"type": "number",
"description": "Double value of the attribute. One of BoolValue, NumericValue, or StringValue must be set.",
"format": "double",
"nullable": true
},
"stringValue": {
"type": "string",
"description": "String value of the attribute. One of BoolValue, NumericValue, or StringValue must be set.",
"nullable": true
},
"type": {
"$ref": "#/components/schemas/MatchmakingAttributeValueType"
}
},
"additionalProperties": false,
"description": "Matchmaking attribute value object for matchmaking rules."
},
"MatchmakingAttributeValueLocation": {
"type": "object",
"properties": {
"locationCase": {
"$ref": "#/components/schemas/MatchmakingAttributeValueLocationCase"
},
"dataStoreLocation": {
"$ref": "#/components/schemas/DataStoreLocation"
}
},
"additionalProperties": false,
"description": "Describes where an attribute value exists."
},
"MatchmakingAttributeValueLocationCase": {
"enum": ["Invalid", "DataStoreLocation"],
"type": "string",
"description": "The storage solution used for this MatchmakingPlayerAttributeDefinition."
},
"MatchmakingAttributeValueType": {
"enum": ["Invalid", "Bool", "Number", "String"],
"type": "string",
"description": "Matchmaking attribute value type."
},
"MatchmakingCategoricalAttributeComparisonType": {
"enum": ["Invalid", "EqualityToPlayer", "EqualityToConstant"],
"type": "string",
"description": "The categorical attribute comparison type for matchmaking."
},
"MatchmakingCustomizationFeatureFlags": {
"type": "object",
"properties": {
"isMatchmakingCustomizationAllowed": {
"type": "boolean",
"description": "If matchmaking customization is allowed for this universe"
},
"isMatchmakingCustomizationExperimentsAllowed": {
"type": "boolean",
"description": "If matchmaking customization experiments are allowed for this universe"
},
"isMatchmakingTextChatSignalEnabled": {
"type": "boolean",
"description": "Whether text chat signal is enabled for Custom Matchmaking."
}
},
"additionalProperties": false,
"description": "Matchmaking object for universe feature flags controlling matchmaking customization."
},
"MatchmakingExperimentConfiguration": {
"type": "object",
"properties": {
"variants": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MatchmakingExperimentVariant"
},
"description": "Variants participating in the experiment.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Configuration for a matchmaking experiment."
},
"MatchmakingExperimentVariant": {
"type": "object",
"properties": {
"variantMeta": {
"allOf": [
{
"$ref": "#/components/schemas/VariantMeta"
}
],
"description": "Metadata common to all variants.",
"nullable": true
},
"placeMatchmakingConfigs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PlaceScoringConfig"
},
"description": "Per-place matchmaking scoring configurations applied when this variant is selected.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Variant definition for a matchmaking experiment."
},
"MatchmakingNumericalAttributeComparisonType": {
"enum": [
"Invalid",
"AbsoluteDifferentToPlayer",
"AbsoluteDifferentToConstant"
],
"type": "string",
"description": "The numerical attribute comparison type for matchmaking."
},
"MatchmakingPlayerAttributeDefinition": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The id of the attribute.",
"nullable": true
},
"universeId": {
"type": "integer",
"description": "The universe id of the attribute.",
"format": "int64"
},
"name": {
"type": "string",
"description": "The name of the attribute.",
"nullable": true
},
"dataType": {
"$ref": "#/components/schemas/MatchmakingAttributeDataType"
},
"defaultValue": {
"$ref": "#/components/schemas/MatchmakingAttributeValue"
},
"attributeValueLocation": {
"$ref": "#/components/schemas/MatchmakingAttributeValueLocation"
},
"createdTime": {
"type": "string",
"description": "The aggregation function of the attribute.",
"format": "date-time"
},
"updatedTime": {
"type": "string",
"description": "The time the attribute was last updated.",
"format": "date-time"
}
},
"additionalProperties": false,
"description": "Describes a player attribute definition for matchmaking."
},
"MatchmakingScoringConfiguration": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The id of the scoring configuration.",
"nullable": true
},
"name": {
"type": "string",
"description": "The name of the scoring configuration. It needs to be unique within a universe.",
"nullable": true
},
"signalWeights": {
"type": "object",
"properties": {
"Invalid": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
},
"Occupancy": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
},
"Age": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
},
"Language": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
},
"Latency": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
},
"PreferredPlayers": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
},
"VoiceChat": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
},
"DeviceType": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
},
"PlayHistory": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
},
"TextChat": {
"$ref": "#/components/schemas/MatchmakingSignalWeightConfiguration"
}
},
"additionalProperties": false,
"description": "The signal weights for the scoring configuration.",
"nullable": true
},
"customSignals": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/CustomSignalConfiguration"
},
"description": "The custom signals part of this place's scoring configuration.",
"nullable": true
},
"createdTime": {
"type": "string",
"description": "The scoring configuration's created time.",
"format": "date-time"
},
"updatedTime": {
"type": "string",
"description": "The scoring configuration's updated time.",
"format": "date-time"
}
},
"additionalProperties": false,
"description": "The custom scoring configuration for matchmaking."
},
"MatchmakingScoringConfigurationTemplate": {
"enum": ["NotApplicable", "UseDefault"],
"type": "string",
"description": "A predefined template used for creating matchmaking scoring configuration."
},
"MatchmakingServerAttributeDefaultValue": {
"type": "object",
"properties": {
"sourceCase": {
"$ref": "#/components/schemas/MatchmakingServerAttributeDefaultValueSourceCase"
},
"constant": {
"$ref": "#/components/schemas/MatchmakingAttributeValue"
},
"playerAttributeReference": {
"$ref": "#/components/schemas/MatchmakingAttributeReference"
}
},
"additionalProperties": false,
"description": "Describes how the server attribute value should be derived"
},
"MatchmakingServerAttributeDefaultValueSourceCase": {
"enum": ["Invalid", "Constant", "PlayerAttributeReference"],
"type": "string",
"description": "The storage solution used for this MatchmakingPlayerAttributeDefinition."
},
"MatchmakingServerAttributeDefinition": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The id of the attribute.",
"nullable": true
},
"universeId": {
"type": "integer",
"description": "The universe id of the attribute.",
"format": "int64"
},
"name": {
"type": "string",
"description": "The name of the attribute.",
"nullable": true
},
"dataType": {
"$ref": "#/components/schemas/MatchmakingAttributeDataType"
},
"defaultValue": {
"$ref": "#/components/schemas/MatchmakingServerAttributeDefaultValue"
},
"createdTime": {
"type": "string",
"description": "The aggregation function of the attribute.",
"format": "date-time"
},
"updatedTime": {
"type": "string",
"description": "The time the attribute was last updated.",
"format": "date-time"
}
},
"additionalProperties": false,
"description": "Describes a player attribute definition for matchmaking."
},
"MatchmakingSignalCurveType": {
"enum": ["Invalid", "PositiveLinear", "NegativeLinear"],
"type": "string",
"description": "The signal curve type for matchmaking."
},
"MatchmakingSignalType": {
"enum": [
"Invalid",
"Occupancy",
"Age",
"Language",
"Latency",
"PreferredPlayers",
"VoiceChat",
"DeviceType",
"PlayHistory",
"TextChat"
],
"type": "string",
"description": "The default signal types matchmaking uses."
},
"MatchmakingSignalWeightConfiguration": {
"type": "object",
"properties": {
"weight": {
"type": "number",
"description": "Weight of signal.",
"format": "double"
},
"signalType": {
"$ref": "#/components/schemas/MatchmakingSignalType"
}
},
"additionalProperties": false,
"description": "The signal weight configuration for matchmaking."
},
"MdeOperation": {
"type": "object",
"properties": {
"operationId": {
"type": "string",
"description": "Stable operation ID.",
"nullable": true
},
"lastModifiedTime": {
"type": "string",
"description": "UTC time the operation was last modified.",
"nullable": true
},
"done": {
"type": "boolean",
"description": "True once the calculation terminates (success or failure)."
},
"error": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentApiError"
}
],
"description": "Error outcome, when Done is true and the calculation failed.",
"nullable": true
},
"mde": {
"allOf": [
{
"$ref": "#/components/schemas/MdeResult"
}
],
"description": "Successful outcome, when Done is true and a result is available.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Async operation result for a `:calculateMde` call. When Done is true\r\nexactly one of Error or Mde is set; when false, neither is."
},
"MdeResult": {
"type": "object",
"properties": {
"totalSampleSize": {
"type": "integer",
"description": "Estimated total sample size required for the experiment.",
"format": "int32"
},
"mdeRelativePercentages": {
"type": "array",
"items": {
"type": "number",
"format": "double"
},
"description": "MDE expressed as a relative percentage of the goal metric, per non-baseline variant.",
"nullable": true
},
"minimumSampleSizeThreshold": {
"type": "integer",
"description": "Below this sample-size threshold the MDE estimate is unreliable.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "MDE calculation result. Returned in the `operation.result` field on a successful\r\n`POST .../experiments:calculateMde` call."
},
"MemoryStore": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/memory-store",
"type": "string",
"description": "The resource path of the memory store.\n\nFormat: `universes/{universe_id}/memory-store`"
}
},
"description": "Represents the memory store of the universe.",
"x-aep-resource": {
"patterns": ["universes/{universe_id}/memory-store"],
"plural": "memory-stores",
"singular": "memory-store"
},
"x-resource": true
},
"MemoryStoreQueueItem": {
"type": "object",
"properties": {
"path": {
"example": "cloud/v2/universes/123/memory-store/queues/some-memory-store-queue-id/items/some-memory-store-queue-item-id",
"type": "string",
"description": "The resource path of the memory store queue item.\n\nFormat:\n`cloud/v2/universes/{universe_id}/memory-store/queues/{memory_store_queue_id}/items/{memory_store_queue_item_id}`"
},
"data": {
"$ref": "#/components/schemas/GoogleProtobufValue",
"description": "The value of the queue item."
},
"priority": {
"type": "number",
"description": "The priority of the queue item.",
"format": "double"
},
"ttl": {
"writeOnly": true,
"example": "3s",
"type": "string",
"description": "The TTL for the item.",
"format": "duration"
},
"expireTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The expiration time of the item.",
"format": "date-time"
},
"id": {
"readOnly": true,
"type": "string",
"description": "The name of the item."
}
},
"description": "Represents an item within a queue structure.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/memory-store/queues/{memory_store_queue_id}/items/{memory_store_queue_item_id}"
],
"plural": "memory-store-queue-items",
"singular": "memory-store-queue-item"
},
"x-resource": true,
"x-oneOf": {
"expiration": ["ttl", "expireTime"]
}
},
"MemoryStoreSortedMapItem": {
"type": "object",
"properties": {
"path": {
"example": "cloud/v2/universes/123/memory-store/sorted-maps/some-memory-store-sorted-map-id/items/some-memory-store-sorted-map-item-id",
"type": "string",
"description": "The resource path of the memory store sorted map item.\n\nFormat:\n`cloud/v2/universes/{universe_id}/memory-store/sorted-maps/{memory_store_sorted_map_id}/items/{memory_store_sorted_map_item_id}`"
},
"value": {
"$ref": "#/components/schemas/GoogleProtobufValue",
"description": "The value of the item."
},
"etag": {
"readOnly": true,
"type": "string",
"description": "The server generated tag of an item."
},
"ttl": {
"writeOnly": true,
"example": "3s",
"type": "string",
"description": "The TTL for the item.",
"format": "duration"
},
"expireTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The expiration time of the item.",
"format": "date-time"
},
"id": {
"type": "string",
"description": "The name of the item."
},
"stringSortKey": {
"type": "string",
"description": "The item will be sorted lexicographically according to this string."
},
"numericSortKey": {
"type": "number",
"description": "The item will be sorted according to this number.",
"format": "double"
}
},
"description": "Represents an item within a sorted map structure.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/memory-store/sorted-maps/{memory_store_sorted_map_id}/items/{memory_store_sorted_map_item_id}"
],
"plural": "memory-store-sorted-map-items",
"singular": "memory-store-sorted-map-item"
},
"x-resource": true,
"x-oneOf": {
"expiration": ["ttl", "expireTime"],
"sortKey": ["stringSortKey", "numericSortKey"]
}
},
"MeshPart": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/ToolboxService.Asset"
}
],
"properties": {
"meshId": {
"type": "integer",
"description": "The mesh id of the meshpart.",
"format": "int64"
},
"textureId": {
"type": "integer",
"description": "The texture id of the meshpart.",
"format": "int64"
}
},
"additionalProperties": false,
"description": "Representation of a mesh asset.",
"nullable": true
},
"MessageReaction": {
"type": "object",
"properties": {
"emoteId": {
"readOnly": true,
"type": "string",
"description": "The id of the emote."
},
"count": {
"readOnly": true,
"type": "integer",
"description": "The count of reactions for this emote.",
"format": "int64"
}
},
"description": "Represents the reaction to a message."
},
"MockServerSignalValues": {
"type": "object",
"properties": {
"capacity": {
"type": "integer",
"description": "The capacity of the mock server.",
"format": "int32"
},
"occupancy": {
"type": "integer",
"description": "The occupancy of the mock server.",
"format": "int32"
},
"hasPreferredPlayers": {
"type": "boolean",
"description": "If the game has preferred players."
},
"playerAge": {
"type": "integer",
"description": "The joining player's age.",
"format": "int32"
},
"serverAveragePlayerAge": {
"type": "integer",
"description": "The server's age for the mock server.",
"format": "int32"
},
"commonLanguagePlayers": {
"type": "integer",
"description": "The number of player's in the mock server that have a common language.",
"format": "int32"
},
"latency": {
"type": "integer",
"description": "The latency of the mock server.",
"format": "int32"
},
"commonDevicePlayers": {
"type": "integer",
"description": "The number of player's in the mock server that have a common device.",
"format": "int32"
},
"playerPlayHistory": {
"type": "number",
"description": "The joining player's play history. The value is a log10 transformation of the player's playtime in minutes during last 28 days.",
"format": "double"
},
"serverAveragePlayHistory": {
"type": "number",
"description": "The server's play history for the mock server.",
"format": "double"
},
"commonVoicePlayers": {
"type": "integer",
"description": "The number of player's in the mock server that have voice chat enabled.",
"format": "int32",
"nullable": true
},
"commonTextChatPlayers": {
"type": "integer",
"description": "The number of player's in the mock server that can commonly text chat with the joining player.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Mock server signal values."
},
"Model": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/ToolboxService.Asset"
}
],
"properties": {
"subTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ModelSubType"
},
"description": "The subtypes that the model belongs to.",
"nullable": true
},
"hasScripts": {
"type": "boolean",
"description": "Whether the model has scripts."
},
"scriptCount": {
"type": "integer",
"description": "The number of scripts that are in the model.",
"format": "int32"
},
"objectMeshSummary": {
"allOf": [
{
"$ref": "#/components/schemas/ObjectMeshSummary"
}
],
"description": "The summary of the meshes within the model, if they exist.",
"nullable": true
},
"instanceCounts": {
"allOf": [
{
"$ref": "#/components/schemas/InstanceCounts"
}
],
"description": "The number of studio Instance types in the model.\nSee [Instance](https://create.roblox.com/docs/reference/engine/classes/Instance).\nThese are broken down into specific types, such as MeshPart, Part, Script,\nTool, Animation, etc.",
"nullable": true
},
"capabilities": {
"allOf": [
{
"$ref": "#/components/schemas/CreatorStoreCapabilitiesModel"
}
],
"description": "Script capabilities for the asset (sandboxing)",
"nullable": true
}
},
"additionalProperties": false,
"description": "Representation of a model asset.",
"nullable": true
},
"ModelInstanceType": {
"enum": ["Script", "MeshPart", "Decal", "Animation", "Audio", "Tool"],
"type": "string",
"description": "A list of model instance types. See Toolbox.Service.Models.Internal.InstanceCounts and [Instance](https://create.roblox.com/docs/reference/engine/classes/Instance) for more details.",
"x-enumNames": [
"Script",
"MeshPart",
"Decal",
"Animation",
"Audio",
"Tool"
],
"x-enum-varnames": [
"Script",
"MeshPart",
"Decal",
"Animation",
"Audio",
"Tool"
]
},
"ModelSearchFilters": {
"type": "object",
"properties": {
"includedSubTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ModelSubType"
},
"description": "If included, search for assets only with these subtypes.",
"nullable": true
},
"excludedSubTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ModelSubType"
},
"description": "If included, excludes assets with these subtypes.",
"nullable": true
},
"includedInstanceTypes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ModelInstanceType"
},
"description": "This filters that the following [Instance](https://create.roblox.com/docs/reference/engine/classes/Instance) types are included in the model.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Model-specific search filter parameters.",
"nullable": true
},
"ModelSubType": {
"enum": ["Ad", "MaterialPack", "Package"],
"type": "string",
"description": "The supported model subtypes.",
"x-enumNames": ["Ad", "MaterialPack", "Package"],
"x-enum-varnames": ["Ad", "MaterialPack", "Package"]
},
"ModerationResult": {
"type": "object",
"properties": {
"moderationState": {
"type": "string",
"description": "The moderation state of the asset. Can be `Reviewing`, `Rejected`, or `Approved`."
}
},
"description": "The moderation result of the asset. "
},
"Money": {
"type": "object",
"properties": {
"currencyCode": {
"type": "string",
"description": "A currency code.\n\nThis may be a three-letter currency code defined in ISO 4217.\n\nAPIs may define additional currency codes that are not included in the ISO\n4217 standard (for example, virtual currencies or cryptocurrencies). These\nmust start with `X-`, in order to distinguish them from potential future\nISO 4217 codes. For example, `\"USD\"` is the ISO 4217 code for United States\ndollar."
},
"quantity": {
"$ref": "#/components/schemas/Decimal",
"description": "The quantity of currency."
}
},
"description": "Represents an amount of money with its currency type.\n\nExamples:\n - Five US dollars === `{currency_code: \"USD\" quantity: {significand: 5}}`"
},
"Music": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Audio"
}
],
"properties": {
"album": {
"type": "string",
"description": "The album the music belongs to.",
"nullable": true
},
"genre": {
"type": "string",
"description": "The genre of the music.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Representation of a music asset.",
"nullable": true
},
"MusicChartType": {
"enum": ["None", "Current", "Week", "Month", "Year"],
"type": "string",
"description": "Represents which music chart to pull entries from, if any",
"x-enumNames": ["None", "Current", "Week", "Month", "Year"],
"x-enum-varnames": ["None", "Current", "Week", "Month", "Year"]
},
"OCV1.Assets.Operation": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The server-assigned resource path. The default format is `operations/{operation_id}`."
},
"done": {
"type": "boolean",
"description": "If `false`, the operation is still in progress. If `true`, the operation is completed."
},
"error": {
"$ref": "#/components/schemas/OCV1.Assets.Status"
},
"response": {
"$ref": "#/components/schemas/Asset"
}
},
"description": "This resource represents a long-running operation that is the result of a network API call."
},
"OCV1.Assets.Status": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "The HTTP status code.",
"format": "int32"
},
"message": {
"type": "string",
"description": "The error message."
}
},
"description": "The logical error model explaining the error status."
},
"OCV1.DataStores.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
},
"OCV2.Operations.Operation": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The server-assigned path, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`path` should be a resource path ending with `operations/{unique_id}`."
},
"metadata": {
"$ref": "#/components/schemas/GoogleProtobufAny",
"description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any."
},
"done": {
"example": true,
"type": "boolean",
"description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable."
},
"error": {
"$ref": "#/components/schemas/Status",
"description": "The error result of the operation in case of failure or cancellation."
},
"response": {
"$ref": "#/components/schemas/GoogleProtobufAny",
"description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`."
}
},
"description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
"x-oneOf": {
"result": ["error", "response"]
}
},
"ObjectMeshSummary": {
"type": "object",
"properties": {
"triangles": {
"type": "integer",
"description": "The total number of triangles in the object's mesh.",
"format": "int32"
},
"vertices": {
"type": "integer",
"description": "The total number of vertices in the object's mesh.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Provides a summary of the mesh characteristics of an object, such as triangle and vertex counts.",
"nullable": true
},
"OpenCloudUsers.Operation": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The server-assigned path, which is only unique within the same service that\r\noriginally returns it. If you use the default HTTP mapping, the\r\n`path` should be a resource path ending with `operations/{unique_id}`.",
"nullable": true
},
"metadata": {
"allOf": [
{
"$ref": "#/components/schemas/GenerateUserThumbnailMetadata"
}
],
"description": "Service-specific metadata associated with the operation. It typically\r\ncontains progress information and common metadata such as create time.\r\nSome services might not provide such metadata. Any method that returns a\r\nlong-running operation should document the metadata type, if any.",
"nullable": true
},
"done": {
"type": "boolean",
"description": "If the value is `false`, it means the operation is still in progress.\r\nIf `true`, the operation is completed, and either `error` or `response` is\r\navailable."
},
"error": {
"allOf": [
{
"$ref": "#/components/schemas/OpenCloudUsers.Status"
}
],
"description": "The error result of the operation in case of failure or cancellation.",
"nullable": true
},
"response": {
"allOf": [
{
"$ref": "#/components/schemas/GenerateUserThumbnailResponse"
}
],
"description": "The normal response of the operation in case of success. If the original\r\nmethod returns no data on success, such as `Delete`, the response is\r\n`google.protobuf.Empty`. If the original method is standard\r\n`Get`/`Create`/`Update`, the response should be the resource. For other\r\nmethods, the response should have the type `XxxResponse`, where `Xxx`\r\nis the original method name. For example, if the original method name\r\nis `TakeSnapshot()`, the inferred response type is\r\n`TakeSnapshotResponse`.",
"nullable": true
}
},
"additionalProperties": false,
"description": "This resource represents a long-running operation that is the result of a\r\nnetwork API call."
},
"OpenCloudUsers.Status": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].",
"format": "int32"
},
"message": {
"type": "string",
"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.",
"nullable": true
},
"details": {
"type": "array",
"items": {},
"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
"nullable": true
}
},
"additionalProperties": false,
"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors)."
},
"OpenCloudUsers.User": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The resource path of the user.\r\n \r\nFormat: `users/{user_id}`",
"nullable": true
},
"createTime": {
"type": "string",
"description": "The timestamp at which the user was created.",
"format": "date-time",
"nullable": true,
"readOnly": true
},
"id": {
"type": "string",
"description": "Unique ID that identifies a user in Roblox.",
"nullable": true,
"readOnly": true
},
"name": {
"type": "string",
"description": "Unique username for a user in Roblox.",
"nullable": true
},
"displayName": {
"type": "string",
"description": "Display name for the user.",
"nullable": true
},
"about": {
"type": "string",
"description": "User-defined information about themselves.",
"nullable": true
},
"locale": {
"type": "string",
"description": "Current locale selected by the user. Returns IETF language code.",
"nullable": true
},
"premium": {
"type": "boolean",
"description": "Whether the user is a premium user.",
"readOnly": true
},
"idVerified": {
"type": "boolean",
"description": "Specifies if the user is identity-verified. Verification includes, but\r\nisn't limited to, non-VoIP phone numbers or government IDs.\r\n \r\nTo access this data, you need an API key / OAuth token with the following\r\nscope: user.advanced:read. The field is omitted from the response when the\r\ncaller is not authorized to read it.",
"nullable": true,
"readOnly": true
},
"socialNetworkProfiles": {
"allOf": [
{
"$ref": "#/components/schemas/OpenCloudUsers.User_SocialNetworkProfiles"
}
],
"description": "User's social network profiles and visibility.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Represents any registered user of Roblox."
},
"OpenCloudUsers.User_SocialNetworkProfiles": {
"type": "object",
"properties": {
"facebook": {
"type": "string",
"description": "Facebook profile URI.",
"nullable": true
},
"twitter": {
"type": "string",
"description": "Twitter profile URI.",
"nullable": true
},
"youtube": {
"type": "string",
"description": "YouTube profile URI.",
"nullable": true
},
"twitch": {
"type": "string",
"description": "Twitch profile URI.",
"nullable": true
},
"guilded": {
"type": "string",
"description": "Guilded profile URI.",
"nullable": true
},
"visibility": {
"enum": [
"SOCIAL_NETWORK_VISIBILITY_UNSPECIFIED",
"NO_ONE",
"FRIENDS",
"FRIENDS_AND_FOLLOWING",
"FRIENDS_FOLLOWING_AND_FOLLOWERS",
"EVERYONE"
],
"type": "string",
"description": "Visibility of the social network profiles.\r\n \r\nTo access this data, you need an API key / OAuth token with the following\r\nscope: user.social:read\r\n \r\nPossible values:\r\n \r\n | Value | Description |\r\n | --- | --- |\r\n | SOCIAL_NETWORK_VISIBILITY_UNSPECIFIED | Default SocialNetworkVisibility. |\r\n | NO_ONE | No one |\r\n | FRIENDS | Friends only |\r\n | FRIENDS_AND_FOLLOWING | Friends and other users the user follows |\r\n | FRIENDS_FOLLOWING_AND_FOLLOWERS | Friends, other users the user follows, and other users who follow the user |\r\n | EVERYONE | Everyone |"
}
},
"additionalProperties": false,
"description": "Social network profiles of a user."
},
"Operation": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The server-assigned path, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`path` should be a resource path ending with `operations/{unique_id}`."
},
"metadata": {
"$ref": "#/components/schemas/GoogleProtobufAny",
"description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any."
},
"done": {
"example": true,
"type": "boolean",
"description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable."
},
"error": {
"$ref": "#/components/schemas/Status",
"description": "The error result of the operation in case of failure or cancellation."
},
"response": {
"$ref": "#/components/schemas/GoogleProtobufAny",
"description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`."
}
},
"description": "This resource represents a long-running operation that is the result of a\nnetwork API call.",
"x-resource": true,
"x-oneOf": {
"result": ["error", "response"]
}
},
"OperationErrorResponse": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"format": "int32",
"readOnly": true
},
"error": {
"type": "string",
"nullable": true,
"readOnly": true
},
"message": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"OperationPending": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The server-assigned resource path.",
"nullable": true
},
"done": {
"type": "boolean",
"description": "If false, the operation is still in progress. If true, the operation is completed."
},
"metadata": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.OperationMetadata"
}
},
"additionalProperties": false,
"description": "A long-running operation that is still in progress."
},
"OperationalStatus": {
"enum": [
"OPERATIONAL_STATUS_READY",
"OPERATIONAL_STATUS_CREATING",
"OPERATIONAL_STATUS_UPDATING",
"OPERATIONAL_STATUS_STARTING",
"OPERATIONAL_STATUS_STOPPING",
"OPERATIONAL_STATUS_SCHEDULING",
"OPERATIONAL_STATUS_DELETING",
"OPERATIONAL_STATUS_RAMPING_UP",
"OPERATIONAL_STATUS_SYNCING",
"OPERATIONAL_STATUS_ROLLING_OUT"
],
"type": "string",
"description": "Current operational status reported on an experiment or an async operation performed on one.\n\nOPERATIONAL_STATUS_READY\n\nOPERATIONAL_STATUS_CREATING\n\nOPERATIONAL_STATUS_UPDATING\n\nOPERATIONAL_STATUS_STARTING\n\nOPERATIONAL_STATUS_STOPPING\n\nOPERATIONAL_STATUS_SCHEDULING\n\nOPERATIONAL_STATUS_DELETING\n\nOPERATIONAL_STATUS_RAMPING_UP\n\nOPERATIONAL_STATUS_SYNCING\n\nOPERATIONAL_STATUS_ROLLING_OUT",
"x-enum-varnames": [
"Ready",
"Creating",
"Updating",
"Starting",
"Stopping",
"Scheduling",
"Deleting",
"RampingUp",
"Syncing",
"RollingOut"
]
},
"OrderedDataStoreEntry": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/ordered-data-stores/some-ordered-data-store-id/scopes/some-ordered-data-store-scope-id/entries/some-ordered-data-store-entry-id",
"type": "string",
"description": "The resource path of the ordered data store entry.\n\nFormat:\n`universes/{universe_id}/ordered-data-stores/{ordered_data_store_id}/scopes/{ordered_data_store_scope_id}/entries/{ordered_data_store_entry_id}`"
},
"value": {
"type": "number",
"description": "The value of the entry.\n\nAlways rounded to the nearest integer.",
"format": "double"
},
"id": {
"readOnly": true,
"type": "string",
"description": "The name of the entry."
}
},
"description": "A key-value entry in an ordered data store.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/ordered-data-stores/{ordered_data_store_id}/scopes/{ordered_data_store_scope_id}/entries/{ordered_data_store_entry_id}"
],
"plural": "ordered-data-store-entries",
"singular": "ordered-data-store-entry"
},
"x-resource": true,
"x-oneOf": {
"Value": ["value"]
}
},
"OrganizationsServiceApi.ErrorCode": {
"enum": [
"InternalError",
"InvalidGroupId",
"InvalidUniverseId",
"InsufficientPermission",
"PermissionNotSupported",
"TooManyRequests",
"FeatureNotEnabled",
"RoleNameReserved",
"RoleNotFound",
"InvitationNotFound",
"UserNotInGroup",
"TooManyRoles",
"FeatureNotSupportedForRole",
"UserInMaxGroups",
"NeedsSecureEndpoint",
"InsufficientGroupPermission",
"TooManyUsers",
"GroupFeatureFrozen",
"GroupMigrated",
"RoleIdMigrationInProgress",
"UnificationInProgress",
"InvalidPageLimit",
"InvalidSortOrder",
"InvalidInvitationStatus",
"InvalidRequestBody"
],
"type": "string",
"description": "Error code for OrganizationsServiceApi.Models.Response.ErrorResponse."
},
"OrganizationsServiceApi.ErrorResponse": {
"required": ["code"],
"type": "object",
"properties": {
"code": {
"$ref": "#/components/schemas/OrganizationsServiceApi.ErrorCode"
},
"message": {
"type": "string",
"description": "The error message.",
"nullable": true
},
"field": {
"type": "string",
"description": "Field on which model validation failed.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Standard error response model."
},
"OrganizationsServiceApi.SortOrder": {
"enum": ["Asc", "Desc"],
"type": "string",
"description": "Sort order for groups-api style paginated requests."
},
"PaginatedGameEventsResponse": {
"type": "object",
"properties": {
"gameEvents": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GameEventResponse"
},
"nullable": true
},
"nextPageToken": {
"type": "string",
"nullable": true
},
"previousPageToken": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false,
"description": "Paginated response for v3 LIST. Page tokens are null at the collection boundaries."
},
"PersonalizedConfigStatus": {
"enum": ["Active", "Inactive"],
"type": "string",
"description": "The lifecycle status of a thumbnail personalization configuration."
},
"PersonalizedThumbnail": {
"required": [
"assetId",
"homepageThumbnailId",
"homepageThumbnailStatus",
"personalizedThumbnailStatus"
],
"type": "object",
"properties": {
"homepageThumbnailId": {
"minLength": 1,
"type": "string",
"description": "The unique identifier of the homepage thumbnail."
},
"assetId": {
"type": "integer",
"description": "The identifier of the image asset used by the thumbnail.",
"format": "int64"
},
"personalizedThumbnailStatus": {
"allOf": [
{
"$ref": "#/components/schemas/PersonalizedThumbnailStatus"
}
],
"description": "The thumbnail's status within the personalization configuration."
},
"homepageThumbnailStatus": {
"allOf": [
{
"$ref": "#/components/schemas/HomepageThumbnailStatus"
}
],
"description": "The availability status of the homepage thumbnail."
}
},
"additionalProperties": false,
"description": "A homepage thumbnail and its status within a personalization configuration."
},
"PersonalizedThumbnailStatus": {
"enum": ["Active", "Inactive"],
"type": "string",
"description": "The status of a thumbnail within a personalization configuration."
},
"Place": {
"required": ["templatePlace"],
"type": "object",
"properties": {
"path": {
"example": "universes/123/places/123",
"type": "string",
"description": "The resource path of the place.\n\nFormat: `universes/{universe_id}/places/{place_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp at which the place was created.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp at which the place was updated.",
"format": "date-time"
},
"displayName": {
"example": "ROBLOX Battle [OPEN]",
"type": "string",
"description": "The name of the place."
},
"description": {
"example": "OPEN SOURCE! \n Feel free to check out how we made this game and ask us about it!",
"type": "string",
"description": "The description of the place."
},
"serverSize": {
"type": "integer",
"description": "The maximum number of allowed users in a single server.",
"format": "int32"
},
"root": {
"readOnly": true,
"example": true,
"type": "boolean",
"description": "Whether this place is its parent universe's root place or not.\nEach universe has exactly one root place."
},
"universeRuntimeCreation": {
"readOnly": true,
"example": true,
"type": "boolean",
"description": "Whether this place was created through in-experience creation.\nIf true, the place was created by calling AssetService::CreatePlaceAsync()\nfrom a script."
},
"templatePlace": {
"writeOnly": true,
"example": "universes/{universe_id}/places/{place_id}",
"type": "string",
"description": "The resource path of the template place used to initialize the place on\ncreation.\nThe newly created place will be a clone of this template.\nA list of the valid template places can be obtained from\nListTemplatePlaces. Format: universes/{universe_id}/places/{place_id}",
"x-immutable": true
}
},
"description": "Represents a Roblox place.",
"x-aep-resource": {
"patterns": ["universes/{universe_id}/places/{place_id}"],
"plural": "places",
"singular": "place"
},
"x-resource": true,
"x-oneOf": {
"Description": ["description"],
"DisplayName": ["displayName"],
"ServerSize": ["serverSize"]
}
},
"PlaceFilter": {
"type": "object",
"properties": {
"versions": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
},
"description": "List of placeVersions to restart. Mutually exclusive with ServerManagementService.V2.Models.PlaceFilter.ExcludeCurrentVersion.",
"nullable": true
},
"excludeCurrentVersion": {
"type": "boolean",
"description": "If true, all versions except the most recently published will be restarted.\r\nMutually exclusive with ServerManagementService.V2.Models.PlaceFilter.Versions.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Filter for which versions of a place to restart."
},
"PlaceRestartStatus": {
"type": "object",
"properties": {
"state": {
"allOf": [
{
"$ref": "#/components/schemas/RestartState"
}
],
"description": "Current state of the place restart."
},
"startTime": {
"type": "string",
"description": "When the place restart started.",
"format": "date-time"
},
"endTime": {
"type": "string",
"description": "When the place restart ended (null if still in progress).",
"format": "date-time",
"nullable": true
},
"totalPlayers": {
"type": "integer",
"description": "Initial total count of players to be kicked.",
"format": "int32"
},
"totalInstances": {
"type": "integer",
"description": "Initial total count of instances to be restarted.",
"format": "int32"
},
"remainingPlayers": {
"type": "integer",
"description": "Remaining players to be kicked.",
"format": "int32"
},
"remainingInstances": {
"type": "integer",
"description": "Remaining instances to be closed.",
"format": "int32"
},
"filter": {
"allOf": [
{
"$ref": "#/components/schemas/PlaceFilter"
}
],
"description": "The filter that was applied to select which versions to restart.",
"nullable": true
},
"latestVersion": {
"type": "string",
"description": "Latest version at the time of the restart.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Per-place restart status."
},
"PlaceScoringConfig": {
"type": "object",
"properties": {
"placeId": {
"type": "integer",
"description": "Place ID this scoring config applies to.",
"format": "int64"
},
"matchmakingScoringConfigId": {
"type": "string",
"description": "Matchmaking scoring config ID for this place. Ignored when UsePlatformDefault is true.",
"nullable": true
},
"usePlatformDefault": {
"type": "boolean",
"description": "When true, this place uses the platform default matchmaking scoring config instead of\r\nMatchmakingScoringConfigId."
}
},
"additionalProperties": false,
"description": "Matchmaking scoring configuration applied to a single place in an experiment variant."
},
"PlaceSummaryForGameRestart": {
"type": "object",
"properties": {
"playersImpacted": {
"type": "integer",
"description": "Number of players that would be kicked during the restart.",
"format": "int32"
},
"totalPlayers": {
"type": "integer",
"description": "Total players currently in the place, including those not impacted.",
"format": "int32"
},
"instancesImpacted": {
"type": "integer",
"description": "Number of instances that would be closed.",
"format": "int32"
},
"totalInstances": {
"type": "integer",
"description": "Total instances for the place.",
"format": "int32"
},
"latestPlaceVersion": {
"type": "string",
"description": "The most recent version of the place in any active server.",
"nullable": true
},
"publishTime": {
"type": "string",
"description": "Timestamp for the publication of the latest place version.",
"format": "date-time"
},
"isNotInUniverse": {
"type": "boolean",
"description": "Whether the place does not belong to the universe.\r\nTrue when a place moved to a different universe but still has active servers from before."
},
"playersPerVersion": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
},
"description": "Player count per place version.",
"nullable": true
},
"instancesPerVersion": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
},
"description": "Instance count per place version.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Per-place forecast data for a game restart."
},
"PlaceSummaryForGameUpdate": {
"type": "object",
"properties": {
"placeId": {
"type": "integer",
"description": "Place ID of the place to be updated.",
"format": "int64"
},
"playersToBeKicked": {
"type": "integer",
"description": "Number of players to be kicked from the place during the game update.",
"format": "int32"
},
"totalPlayers": {
"type": "integer",
"description": "Total number of players in the place.",
"format": "int32"
},
"instancesToBeClosed": {
"type": "integer",
"description": "Number of instances to be closed for the place during the game update.",
"format": "int32"
},
"totalInstances": {
"type": "integer",
"description": "Total number of instances for the place.",
"format": "int32"
},
"placeVersion": {
"type": "integer",
"description": "Lastest version of the place to be updated.",
"format": "int32"
},
"lastUpdated": {
"type": "string",
"description": "The timestamp of the last update to the place summary.",
"format": "date-time"
},
"isInUniverse": {
"type": "boolean",
"description": "Indicates whether the place is still part of the universe.\r\nA place may have active games but is no longer in the universe if it has been removed from the universe."
},
"versionToPlayerCounts": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
},
"description": "Player counts broken down by place version.\r\nKey is the place version, value is the number of players on that version.",
"nullable": true
},
"versionToInstanceCounts": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "int32"
},
"description": "Instance counts broken down by place version.\r\nKey is the place version, value is the number of instances on that version.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Summary of a place for a game update."
},
"PlaceUpdateStatus": {
"type": "object",
"properties": {
"placeId": {
"type": "integer",
"description": "The placeId of the game update",
"format": "int64"
},
"phase": {
"type": "string",
"description": "Which phase is the update in: BleedOff, Migrate, or Done",
"nullable": true
},
"startTime": {
"type": "string",
"description": "When the update started",
"format": "date-time"
},
"endTime": {
"type": "string",
"description": "When the update is expected to end, or null if it has not ended yet",
"format": "date-time",
"nullable": true
},
"startPlayersToBeKicked": {
"type": "integer",
"description": "Number of players in the game update initially, before any players are kicked",
"format": "int32"
},
"startInstancesToBeClosed": {
"type": "integer",
"description": "Number of instances that will be closed during the game update",
"format": "int32"
},
"numPlayersToBeKicked": {
"type": "integer",
"description": "How many players are remaining in instances that will be shut down according to the update configuration",
"format": "int32"
},
"instancesToBeClosed": {
"type": "integer",
"description": "Number of places that will be updated",
"format": "int32"
},
"placeVersion": {
"type": "integer",
"description": "The version of the place that is being updated",
"format": "int32"
},
"placeVersionsToBeClosed": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
},
"description": "The versions of the place that will be closed during the update",
"nullable": true
}
},
"additionalProperties": false,
"description": "Container for the status of a game update."
},
"PlaceVersion": {
"type": "object",
"properties": {
"version": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"description": {
"type": "string",
"nullable": true
},
"contributors": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"nullable": true
},
"saveType": {
"allOf": [
{
"$ref": "#/components/schemas/SaveType"
}
]
},
"isPublished": {
"type": "boolean"
},
"publishStatus": {
"allOf": [
{
"$ref": "#/components/schemas/PublishStatus"
}
]
},
"hasNotes": {
"type": "boolean"
},
"createdTime": {
"type": "string",
"format": "date-time"
},
"createdBy": {
"type": "integer",
"format": "int64",
"nullable": true
}
},
"additionalProperties": false
},
"PlayerCategoricalSignalConfiguration": {
"type": "object",
"properties": {
"playerAttribute": {
"$ref": "#/components/schemas/MatchmakingAttributeReference"
},
"curveType": {
"$ref": "#/components/schemas/MatchmakingSignalCurveType"
}
},
"additionalProperties": false,
"description": "The player categorical signal configuration."
},
"PlayerNumericalSignalConfiguration": {
"type": "object",
"properties": {
"playerAttribute": {
"$ref": "#/components/schemas/MatchmakingAttributeReference"
},
"aggregation": {
"$ref": "#/components/schemas/MatchmakingAttributeAggregation"
},
"comparisonType": {
"$ref": "#/components/schemas/MatchmakingNumericalAttributeComparisonType"
},
"maxRelevantDifference": {
"type": "number",
"description": "The maximum relevant difference for this signal.",
"format": "double",
"nullable": true
},
"constantValue": {
"type": "number",
"description": "The constant value for this signal to be compared to.",
"format": "double",
"nullable": true
}
},
"additionalProperties": false,
"description": "The player numerical signal configuration."
},
"Plugin": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/ToolboxService.Asset"
}
],
"properties": {
"hasScripts": {
"type": "boolean",
"description": "Whether the plugin has scripts."
},
"scriptCount": {
"type": "integer",
"description": "The number of scripts that are in the plugin.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Representation of a plugin asset.",
"nullable": true
},
"PresenceApi.ErrorResponse": {
"type": "object",
"properties": {
"errors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Error"
},
"nullable": true
}
},
"additionalProperties": false
},
"PresenceType": {
"enum": [0, 1, 2, 3],
"type": "integer",
"format": "int32"
},
"Preview": {
"type": "object",
"properties": {
"asset": {
"type": "string",
"description": "The preview asset path."
},
"altText": {
"type": "string",
"description": "Alt text for the preview asset."
}
},
"description": "An asset preview."
},
"PreviewAssetsModel": {
"type": "object",
"properties": {
"imagePreviewAssets": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "Ordered list of image preview asset ids.",
"nullable": true
},
"videoPreviewAssets": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "Ordered list of video preview asset ids.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Grouped preview asset ids for an item, separated by media type.",
"nullable": true
},
"PriceInformationStruct": {
"required": ["defaultPriceInRobux", "enabledFeatures"],
"type": "object",
"properties": {
"defaultPriceInRobux": {
"type": "integer",
"description": "The configured default price in Robux.",
"format": "int64",
"nullable": true
},
"enabledFeatures": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricingFeature"
},
"description": "The enabled pricing features for the developer product."
}
},
"additionalProperties": false,
"description": "The pricing configuration information."
},
"PricingFeature": {
"enum": [
"Invalid",
"PriceOptimization",
"UserFixedPrice",
"RegionalPricing"
],
"type": "string"
},
"PrivateServerPlayerResponse": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string",
"nullable": true
},
"displayName": {
"type": "string",
"nullable": true
},
"playerToken": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"PrivateServersApi.GameServerResponse": {
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"nullable": true
},
"maxPlayers": {
"type": "integer",
"format": "int32"
},
"playing": {
"type": "integer",
"format": "int32"
},
"playerTokens": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"players": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PrivateServerPlayerResponse"
},
"nullable": true
},
"fps": {
"type": "number",
"format": "double"
},
"ping": {
"type": "integer",
"format": "int32"
},
"name": {
"type": "string",
"nullable": true
},
"vipServerId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"accessCode": {
"type": "string",
"format": "uuid",
"nullable": true
},
"owner": {
"allOf": [
{
"$ref": "#/components/schemas/VerifiedBadgeUserResponse"
}
],
"nullable": true
}
},
"additionalProperties": false
},
"PrivateServersApi.SortOrder": {
"enum": ["Asc", "Desc"],
"type": "string"
},
"ProblemDetails": {
"type": "object",
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "integer",
"format": "int32",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
}
},
"additionalProperties": {
"nullable": true
},
"nullable": true
},
"ProductExperiment": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Experiment ID.",
"nullable": true
},
"name": {
"type": "string",
"description": "Experiment display name.",
"nullable": true
},
"description": {
"type": "string",
"description": "Experiment description.",
"nullable": true
},
"createdTime": {
"type": "string",
"description": "UTC time the experiment was created.",
"format": "date-time"
},
"lastUpdatedTime": {
"type": "string",
"description": "UTC time the experiment was last updated.",
"nullable": true
},
"startedTime": {
"type": "string",
"description": "UTC time the experiment was started (running), if it has been.",
"nullable": true
},
"stoppedTime": {
"type": "string",
"description": "UTC time the experiment was stopped, if it has been.",
"nullable": true
},
"state": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentState"
}
],
"description": "Lifecycle state.\n\nEXPERIMENT_STATE_DRAFT\n\nEXPERIMENT_STATE_SCHEDULED\n\nEXPERIMENT_STATE_RUNNING\n\nEXPERIMENT_STATE_COMPLETED\n\nEXPERIMENT_STATE_CANCELLED\n\nEXPERIMENT_STATE_DELETED",
"x-enum-varnames": [
"Draft",
"Scheduled",
"Running",
"Completed",
"Cancelled",
"Deleted"
]
},
"experimentConfiguration": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentConfiguration"
}
],
"description": "Experiment configuration (variants and product-type-specific data).",
"nullable": true
},
"exposurePercent": {
"type": "integer",
"description": "Exposure percent in range 0-100.",
"format": "int32"
},
"targetingCriteria": {
"allOf": [
{
"$ref": "#/components/schemas/TargetingCriteria"
}
],
"description": "Targeting criteria scoping which users are eligible for the experiment.",
"nullable": true
},
"operationalStatus": {
"allOf": [
{
"$ref": "#/components/schemas/OperationalStatus"
}
],
"description": "Current operational status of an in-flight async operation (if any).\n\nOPERATIONAL_STATUS_READY\n\nOPERATIONAL_STATUS_CREATING\n\nOPERATIONAL_STATUS_UPDATING\n\nOPERATIONAL_STATUS_STARTING\n\nOPERATIONAL_STATUS_STOPPING\n\nOPERATIONAL_STATUS_SCHEDULING\n\nOPERATIONAL_STATUS_DELETING\n\nOPERATIONAL_STATUS_RAMPING_UP\n\nOPERATIONAL_STATUS_SYNCING\n\nOPERATIONAL_STATUS_ROLLING_OUT",
"x-enum-varnames": [
"Ready",
"Creating",
"Updating",
"Starting",
"Stopping",
"Scheduling",
"Deleting",
"RampingUp",
"Syncing",
"RollingOut"
]
},
"createdBy": {
"type": "string",
"description": "User ID of the creator of the experiment.",
"nullable": true
},
"scheduledTime": {
"type": "string",
"description": "UTC time the experiment is scheduled to start, if scheduled.",
"nullable": true
},
"durationSeconds": {
"type": "integer",
"description": "Experiment duration in whole seconds.",
"format": "int64"
},
"universeMetricConfiguration": {
"allOf": [
{
"$ref": "#/components/schemas/UniverseMetricConfiguration"
}
],
"description": "Metric configuration (goal + learning metrics).",
"nullable": true
}
},
"additionalProperties": false,
"description": "Config-based experiment for a given product. Returned by the Get endpoint and embedded in\r\na successful experiment operation."
},
"PublicAllGroupUniversePayoutsResponseModel": {
"type": "object",
"properties": {
"payouts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PublicGroupUniversePayout"
},
"nullable": true
}
},
"additionalProperties": false,
"description": "Public response for recurring payouts."
},
"PublicAllOneTimePayoutsResponseModel": {
"type": "object",
"properties": {
"payouts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PublicOneTimePayoutResponseModel"
},
"nullable": true
}
},
"additionalProperties": false,
"description": "Public response for one-time payouts."
},
"PublicGroupUniversePayout": {
"type": "object",
"properties": {
"userId": {
"type": "integer",
"format": "int64"
},
"percentage": {
"type": "integer",
"format": "int64"
}
},
"additionalProperties": false,
"description": "A recurring payout in the public groups API contract."
},
"PublicGroupUniversePayoutPageResponseModel": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PublicUserUniversePayout"
},
"nullable": true
},
"nextPageCursor": {
"type": "string",
"nullable": true
},
"previousPageCursor": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false,
"description": "Public groups-style payout page."
},
"PublicOneTimePayout": {
"type": "object",
"properties": {
"amount": {
"type": "integer",
"format": "int64"
},
"createdAt": {
"type": "string",
"format": "date-time"
}
},
"additionalProperties": false,
"description": "One-time payout details in the public groups API contract."
},
"PublicOneTimePayoutResponseModel": {
"type": "object",
"properties": {
"recipientUserId": {
"type": "integer",
"format": "int64"
},
"status": {
"$ref": "#/components/schemas/FetchStatus"
},
"oneTimePayout": {
"$ref": "#/components/schemas/PublicOneTimePayout"
}
},
"additionalProperties": false,
"description": "A one-time payout result in the public groups API contract."
},
"PublicUserUniversePayout": {
"type": "object",
"properties": {
"universeId": {
"type": "integer",
"format": "int64"
},
"percentage": {
"type": "integer",
"format": "int64"
}
},
"additionalProperties": false,
"description": "A payout-visible universe in the public groups API contract."
},
"PublishDraftRequest": {
"type": "object",
"properties": {
"draftHash": {
"type": "string",
"description": "The draft hash for concurrency control. If provided, the publish will fail if it doesn't match.",
"nullable": true
},
"message": {
"type": "string",
"description": "The message describing the changes being published.",
"nullable": true
},
"deploymentStrategy": {
"allOf": [
{
"$ref": "#/components/schemas/DeploymentStrategy"
}
],
"description": "The deployment strategy to use when publishing.\n\nInvalid\n\nGradualRollout\n\nImmediate",
"x-enum-varnames": ["Invalid", "GradualRollout", "Immediate"]
}
},
"additionalProperties": false,
"description": "Request model for publishing a draft."
},
"PublishDraftResponse": {
"type": "object",
"properties": {
"configVersion": {
"type": "integer",
"description": "The configuration version after publishing.",
"format": "int64"
}
},
"additionalProperties": false,
"description": "Response model for publishing a draft."
},
"PublishRequest": {
"type": "object",
"description": "The request body object with the message string that you want to publish to the live server.",
"properties": {
"message": {
"type": "string",
"nullable": true,
"description": "The message content that you want to publish to the live server."
}
},
"additionalProperties": false
},
"PublishStatus": {
"enum": [0, 1, 2],
"type": "integer",
"format": "int32"
},
"PublishUniverseMessageRequest": {
"required": ["topic", "message"],
"type": "object",
"properties": {
"topic": {
"example": "my-topic",
"type": "string",
"description": "The topic on which to publish the message."
},
"message": {
"example": "Hello, world!",
"type": "string",
"description": "The message to publish."
}
},
"description": "Publish a message on the specified topic."
},
"QueryCorrection": {
"type": "object",
"properties": {
"suggestedQuery": {
"type": "string",
"description": "The suggested spelling correction for the original search query.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Contains query correction information for a search query.",
"nullable": true
},
"QueryFacets": {
"type": "object",
"properties": {
"appliedFacets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Facets that are already applied to the search.",
"nullable": true
},
"availableFacets": {
"type": "array",
"items": {
"type": "string"
},
"description": "The unused and still available facets.",
"nullable": true
}
},
"additionalProperties": false,
"description": "The facets of a query.",
"nullable": true
},
"QueryOperationResult": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The server-assigned resource path.",
"nullable": true
},
"done": {
"type": "boolean",
"description": "If false, the operation is still in progress. If true, the operation is completed."
},
"response": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.QueryResponse"
},
"metadata": {
"$ref": "#/components/schemas/AnalyticsQueryPublicApi.OperationMetadata"
}
},
"additionalProperties": false,
"description": "A completed long-running query operation with results."
},
"ReadMemoryStoreQueueItemsResponse": {
"type": "object",
"properties": {
"readId": {
"type": "string",
"description": "An identifier of the read operation\n\nThis can be passed to `:discard` in order to mark the items as processed."
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MemoryStoreQueueItem"
},
"description": "The items read from the queue"
}
},
"description": "Returns the specified number of items at the front of the queue."
},
"RemovePlaceMatchmakingScoringConfigurationResponse": {
"type": "object",
"additionalProperties": false,
"description": "Response to remove scoring configuration for a place."
},
"Repository": {
"enum": [
"InExperienceConfig",
"RecommendationServicesConfig",
"DataStoresConfig",
"ExtendedServicesConfig",
"LeaderboardsConfig",
"ExperienceUserConfig",
"JourneysConfig",
"AntiCheatConfig"
],
"type": "string",
"description": "Public API repository identifier. Only values exposed by the public API are included;\r\ninternal repository types are not exposed to allow development and testing before enabling.\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig\n\nAntiCheatConfig",
"x-enum-varnames": [
"InExperienceConfig",
"RecommendationServicesConfig",
"DataStoresConfig",
"ExtendedServicesConfig",
"LeaderboardsConfig",
"ExperienceUserConfig",
"JourneysConfig",
"AntiCheatConfig"
]
},
"RestartState": {
"enum": ["DELAYING", "RESTARTING", "SUCCEEDED"],
"type": "string",
"description": "The current state of a place restart."
},
"RestartStatus": {
"type": "object",
"properties": {
"universeId": {
"type": "string",
"description": "Universe ID.",
"nullable": true
},
"scheduledTime": {
"type": "string",
"description": "When the restart was launched (scheduled time).",
"format": "date-time"
},
"startTime": {
"type": "string",
"description": "When the bleed-off period ends and restarts begin.",
"format": "date-time"
},
"placeRestartStatuses": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/PlaceRestartStatus"
},
"description": "Per-place statuses keyed by place ID.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Status of a game restart."
},
"RestartUniverseServersRequest": {
"type": "object",
"properties": {
"placeIds": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "The place IDs to update. If none are specified, all active places in the\nuniverse will be updated."
},
"closeAllVersions": {
"example": true,
"type": "boolean",
"description": "If true, players from servers running both old and new place versions will\nbe restarted. If false, restarts all active servers for a specific universe\nif and only if a new version of the experience has been published."
},
"bleedOffServers": {
"example": true,
"type": "boolean",
"description": "If true, matchmaking to servers will stop, but servers will stay up for\nbleed_off_duration_minutes before shutting down.\nThis setting gives players time to naturally migrate to the newer version.\nIf false, servers will immediately start shutting down."
},
"bleedOffDurationMinutes": {
"example": 10,
"type": "integer",
"description": "If bleed_off_servers is true, how long (in minutes) old servers are allowed\nto stay up before shutting them down. Valid values: 1-60 minutes.",
"format": "int32"
}
},
"description": "Restarts all of the universe's servers."
},
"RestartUniverseServersResponse": {
"type": "object",
"properties": {},
"description": "Empty response. May later contain a status."
},
"RevisionChange": {
"type": "object",
"properties": {
"before": {
"description": "The value before the change. Null if the key was added.",
"nullable": true
},
"after": {
"description": "The value after the change. Null if the key was deleted.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Represents a change in a revision, showing before and after values."
},
"RevisionResponse": {
"type": "object",
"properties": {
"revisionId": {
"type": "string",
"description": "The revision ID.",
"nullable": true
},
"version": {
"type": "integer",
"description": "The version number.",
"format": "int64"
},
"time": {
"type": "string",
"description": "The time the revision was created/updated.",
"format": "date-time"
},
"publishedBy": {
"type": "string",
"description": "The user ID who published this revision.",
"nullable": true
},
"message": {
"type": "string",
"description": "The message describing the changes.",
"nullable": true
},
"deploymentResult": {
"type": "string",
"description": "The deployment result status.",
"nullable": true
},
"autoRestoreToVersion": {
"type": "integer",
"description": "The version to auto-restore to, or -1 if not applicable.",
"format": "int64"
},
"changes": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RevisionChange"
},
"description": "The changes in this revision, keyed by entry key.",
"nullable": true
},
"conditionalRulesChanges": {
"allOf": [
{
"$ref": "#/components/schemas/ConditionalRulesChangesPayload"
}
],
"description": "Optional delta for conditional rules when this revision touched rules or evaluation order.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for a revision."
},
"Roblox.AccountInformation.Api.Models.BirthdateResponse": {
"description": "The birthdate response",
"type": "object",
"properties": {
"birthMonth": {
"format": "int32",
"description": "The birth month",
"type": "integer"
},
"birthDay": {
"format": "int32",
"description": "The birth day",
"type": "integer"
},
"birthYear": {
"format": "int32",
"description": "The birth year",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.DescriptionRequest": {
"description": "The description request",
"type": "object",
"properties": {
"description": {
"description": "The description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.DescriptionResponse": {
"description": "The description response",
"type": "object",
"properties": {
"description": {
"description": "The description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.EmptyRequest": {
"description": "For API calls without a request body.",
"type": "object",
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.GenderRequest": {
"description": "The gender request",
"type": "object",
"properties": {
"gender": {
"description": "The gender",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.GenderResponse": {
"description": "The gender response",
"type": "object",
"properties": {
"gender": {
"format": "int32",
"description": "The gender",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.MetadataResponse": {
"description": "The metadata response",
"type": "object",
"properties": {
"isAllowedNotificationsEndpointDisabled": {
"description": "Switch for account/settings/allowed-notification-destinations endpoint",
"type": "boolean"
},
"isAccountSettingsPolicyEnabled": {
"description": "The account settings policy enabled setting",
"type": "boolean"
},
"isPhoneNumberEnabled": {
"description": "Switch for phone endpoints",
"type": "boolean"
},
"MaxUserDescriptionLength": {
"format": "int32",
"description": "The limit on the length used for description",
"type": "integer"
},
"isUserDescriptionEnabled": {
"description": "Switch for determining if user description is enabled",
"type": "boolean"
},
"isUserBlockEndpointsUpdated": {
"description": "Switch for determining block endpoints to use for the user",
"type": "boolean"
},
"shouldUsePersonaForIdVerification": {
"description": "Whether to use Persona for ID verification.",
"type": "boolean"
},
"shouldDisplaySessionManagement": {
"description": "Whether to display Session Management.",
"type": "boolean"
},
"isPasswordRequiredForAgingDown": {
"description": "Switch for requiring password to change age below 13.",
"type": "boolean",
"readOnly": true
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.PhoneRequest": {
"description": "The phone request",
"type": "object",
"properties": {
"countryCode": {
"description": "The country Code",
"type": "string"
},
"prefix": {
"description": "The Phone Prefix",
"type": "string"
},
"phone": {
"description": "The Phone number",
"type": "string"
},
"password": {
"description": "Password",
"type": "string"
},
"verificationChannel": {
"description": "Verification Channel",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.PhoneResponse": {
"description": "The phone response",
"type": "object",
"properties": {
"countryCode": {
"description": "The country Code",
"type": "string"
},
"prefix": {
"description": "The Phone Prefix",
"type": "string"
},
"phone": {
"description": "The Phone number",
"type": "string"
},
"isVerified": {
"description": "Is the phone verified",
"type": "boolean"
},
"verificationCodeLength": {
"format": "int32",
"description": "Verification Code Length",
"type": "integer"
},
"canBypassPasswordForPhoneUpdate": {
"description": "Whether user needs to provide password to update their phone numbers",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.PromotionChannelsByUserIdResponse": {
"description": "The promotion channels response",
"type": "object",
"properties": {
"facebook": {
"description": "The Facebook channel",
"type": "string"
},
"twitter": {
"description": "The Twitter channel",
"type": "string"
},
"youtube": {
"description": "The YouTube channel",
"type": "string"
},
"twitch": {
"description": "The Twitch channel",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.PromotionChannelsRequest": {
"description": "The promotion channels request",
"type": "object",
"properties": {
"facebook": {
"description": "The Facebook channel",
"type": "string"
},
"twitter": {
"description": "The Twitter channel",
"type": "string"
},
"youtube": {
"description": "The YouTube channel",
"type": "string"
},
"twitch": {
"description": "The Twitch channel",
"type": "string"
},
"promotionChannelsVisibilityPrivacy": {
"description": "The promotion channels visibility privacy level",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.PromotionChannelsResponse": {
"description": "The promotion channels response",
"type": "object",
"properties": {
"promotionChannelsVisibilityPrivacy": {
"description": "The promotion channels visibility privacy level",
"type": "string"
},
"facebook": {
"description": "The Facebook channel",
"type": "string"
},
"twitter": {
"description": "The Twitter channel",
"type": "string"
},
"youtube": {
"description": "The YouTube channel",
"type": "string"
},
"twitch": {
"description": "The Twitch channel",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.VerifyEmailRequest": {
"description": "Verify Email Request",
"type": "object",
"properties": {
"ticket": {
"description": "Ticket to verify email",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.VerifyEmailResponse": {
"description": "The verify email response",
"type": "object",
"properties": {
"verifiedUserHatAssetId": {
"format": "int32",
"description": "Free item id after email verification",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.Models.VerifyPhoneRequest": {
"description": "Verify Phone Request",
"type": "object",
"properties": {
"code": {
"description": "Code to verify phone",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AccountInformation.Api.RobloxBadgeResponse": {
"type": "object",
"properties": {
"id": {
"format": "int32",
"description": "The ID belonging to this Roblox badge.",
"type": "integer"
},
"name": {
"description": "The name of this Roblox badge.",
"type": "string"
},
"description": {
"description": "The description belonging to this Roblox badge.",
"type": "string"
},
"imageUrl": {
"description": "The URL corresponding to the image which represents this Roblox badge.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.CreateSponsoredGameV2Request": {
"description": "A request model for creating a sponsored game",
"type": "object",
"properties": {
"universeId": {
"format": "int64",
"description": "The target universe id",
"type": "integer"
},
"targetGender": {
"format": "int32",
"description": "Targeting gender(s) of the ad set ['Undefined' = 1, 'Male' = 2, 'Female' = 4]",
"enum": [1, 2, 4],
"type": "integer"
},
"targetAgeBracket": {
"format": "int32",
"description": "Targeting age bracket(s) of the ad set ['Undefined' = 1, 'AgeUnder13' = 2, 'Age13OrOver' = 4, 'Age13To16' = 8, 'Age17OrOver' = 16]",
"enum": [1, 2, 4, 8, 16],
"type": "integer"
},
"budgetInRobux": {
"format": "int64",
"description": "The budget in Robux",
"type": "integer"
},
"startDate": {
"format": "date-time",
"description": "The start date of the ad set",
"type": "string"
},
"endDate": {
"format": "date-time",
"description": "The end date of the ad set",
"type": "string"
},
"targetDeviceType": {
"format": "int32",
"description": "Targeting device type(s) of the ad set ['Undefined' = 1, 'Computer' = 2, 'Phone' = 4, 'Tablet' = 8, 'Console' = 16, 'VR' = 32]",
"enum": [1, 2, 4, 8, 16, 32],
"type": "integer"
},
"adName": {
"description": "The name of the Ad",
"type": "string"
},
"bidAmountInRobux": {
"format": "int64",
"description": "The bid amount of the Ad in Robux",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.CreativeModel": {
"description": "A model representing an Ad Creative (for example, an ad thumbnail).",
"type": "object",
"properties": {
"creativeId": {
"format": "int64",
"description": "The ID of the creative. Typically, a thumbnail's imageId.",
"type": "integer",
"example": 1
},
"creativeType": {
"format": "int32",
"description": "The type of the ad creative. Typically, CreativeType.Image. ['Undefined' = 0, 'Image' = 1, 'Video' = 2]",
"enum": [0, 1, 2],
"type": "integer",
"example": 1
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.GetSponsoredCampaignsResponse": {
"description": "A response model for retrieving a page of Roblox.AdConfiguration.Api.SponsoredCampaignModel.",
"type": "object",
"properties": {
"sponsoredCampaigns": {
"description": "A collection of Roblox.AdConfiguration.Api.SponsoredCampaignModel.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.SponsoredCampaignModel"
}
},
"previousPageCursor": {
"description": "The cursor for retrieving the previous page, if present.",
"type": "string"
},
"nextPageCursor": {
"description": "The cursor for retrieving the next page, if present.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.GetSponsoredGamesResponse": {
"description": "A response model for retrieving a page of Roblox.AdConfiguration.Api.SponsoredGameV2Model.",
"type": "object",
"properties": {
"sponsoredGames": {
"description": "A collection of Roblox.AdConfiguration.Api.SponsoredGameV2Model.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.SponsoredGameV2Model"
}
},
"previousPageCursor": {
"description": "The cursor for retrieving the previous page, if present.",
"type": "string"
},
"nextPageCursor": {
"description": "The cursor for retrieving the next page, if present.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.Models.CampaignTargetModel": {
"description": "Represents a sponsored ad campaign target",
"type": "object",
"properties": {
"campaignTargetType": {
"format": "int32",
"description": "The campaign target type ['Undefined' = 0, 'Universe' = 1, 'Asset' = 2, 'ImmersiveAd' = 3]",
"enum": [0, 1, 2, 3],
"type": "integer"
},
"campaignTargetId": {
"format": "int64",
"description": "The ID of the campaign target",
"type": "integer"
},
"name": {
"description": "The name of the campaign target (i.e. the asset name, universe name, group name, etc.)",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.Models.CreateSponsoredCampaignRequest": {
"description": "A request model for creating a sponsored game",
"type": "object",
"properties": {
"campaignTargetId": {
"format": "int64",
"description": "The ID of the campaign target",
"type": "integer",
"example": 1
},
"campaignTargetType": {
"format": "int32",
"description": "The type of the campaign target ['Undefined' = 0, 'Universe' = 1, 'Asset' = 2, 'ImmersiveAd' = 3]",
"enum": [0, 1, 2, 3],
"type": "integer",
"example": 2
},
"targetGender": {
"format": "int32",
"description": "Targeting gender(s) of the ad set ['Undefined' = 1, 'Male' = 2, 'Female' = 4]",
"enum": [1, 2, 4],
"type": "integer",
"example": 4
},
"targetAgeBracket": {
"format": "int32",
"description": "Targeting age bracket(s) of the ad set ['Undefined' = 1, 'AgeUnder13' = 2, 'Age13OrOver' = 4, 'Age13To16' = 8, 'Age17OrOver' = 16]",
"enum": [1, 2, 4, 8, 16],
"type": "integer",
"example": 4
},
"startDate": {
"format": "date-time",
"description": "The start date of the ad set",
"type": "string"
},
"endDate": {
"format": "date-time",
"description": "The end date of the ad set",
"type": "string"
},
"targetDeviceType": {
"format": "int32",
"description": "Targeting device type(s) of the ad set ['Undefined' = 1, 'Computer' = 2, 'Phone' = 4, 'Tablet' = 8, 'Console' = 16, 'VR' = 32]",
"enum": [1, 2, 4, 8, 16, 32],
"type": "integer",
"example": 2
},
"campaignName": {
"description": "The name of the Campaign / Ad",
"type": "string"
},
"dailyBidAmountInRobux": {
"format": "int64",
"description": "The daily bid amount for the campaign / ad, in Robux",
"type": "integer",
"example": 101
},
"placementLocation": {
"format": "int32",
"description": "The location to place the campaign ['Undefined' = 1, 'GameSort' = 2, 'AvatarShop' = 4, 'ItemDetails' = 8, 'HomePage' = 16, 'Billboard300x250' = 32, 'Billboard600x300' = 64, 'Billboard300x600' = 128]",
"enum": [1, 2, 4, 8, 16, 32, 64, 128],
"type": "integer",
"example": 4
},
"creativeModel": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.CreativeModel"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.Models.GetCampaignTargetsResponse": {
"description": "The response model which returns a collection of Roblox.AdConfiguration.Api.Models.CampaignTargetModel",
"type": "object",
"properties": {
"campaignTargetModels": {
"description": "Gets or sets a collection of Roblox.AdConfiguration.Api.Models.CampaignTargetModel",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.CampaignTargetModel"
}
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.Models.GetEligibleCampaignTargetsRequest": {
"description": "A model represents a request to stop a sponsored campaign / ad.",
"type": "object",
"properties": {
"campaignTargetTypes": {
"description": "The list of campaign types we want to include in the results",
"type": "array",
"items": {
"format": "int32",
"description": " ['Undefined' = 0, 'Universe' = 1, 'Asset' = 2, 'ImmersiveAd' = 3]",
"enum": [0, 1, 2, 3],
"type": "integer"
}
},
"groupId": {
"format": "int64",
"description": "The group id, if applicable.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.Models.GetRecentAdsRankedUniversesResponse": {
"description": "The response model for getting a list of recent-ads-ranked universes.",
"type": "object",
"properties": {
"universes": {
"description": "Gets or sets a list of Roblox.AdConfiguration.Api.Models.UniverseModel.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.AdConfiguration.Api.Models.UniverseModel"
}
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.Models.StopSponsoredCampaignRequest": {
"description": "A model represents a request to stop a sponsored campaign / ad.",
"type": "object",
"properties": {
"adSetId": {
"format": "int64",
"description": "The ID of the ad set to stop.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.Models.StopSponsoredGameV2Request": {
"description": "A model represents a request to stop a sponsored game ad.",
"type": "object",
"properties": {
"adSetId": {
"format": "int64",
"description": "Gets the ID of the ad set to stop.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.Models.UniverseModel": {
"description": "Represents a universe in API endpoint results.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The universe Id.",
"type": "integer"
},
"name": {
"description": "The name of the universe",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.SponsoredCampaignModel": {
"description": "A response model represents an Ad with complete information, including infos from its associated campaign and ad set",
"type": "object",
"properties": {
"adId": {
"format": "int64",
"description": "The id of the ad",
"type": "integer"
},
"adSetId": {
"format": "int64",
"description": "The id of the ad set",
"type": "integer"
},
"adName": {
"description": "The name of the Ad",
"type": "string"
},
"adStatus": {
"format": "int32",
"description": "The status of the ad ['Undefined' = 0, 'Draft' = 1, 'PendingApproval' = 2, 'Approved' = 3, 'Moderated' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"creativeType": {
"format": "int32",
"description": "The type of the creative associated with the Ad ['Undefined' = 0, 'Image' = 1, 'Video' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"creativeTargetId": {
"format": "int64",
"description": "The target id of the creative associated with the Ad",
"type": "integer"
},
"bidAmountInRobux": {
"format": "int64",
"description": "The bid amount of the Ad in Robux",
"type": "integer"
},
"budgetInRobux": {
"format": "int64",
"description": "The budget of the ad set in Robux",
"type": "integer"
},
"adSetStatus": {
"format": "int32",
"description": "The status of the ad set ['Undefined' = 0, 'Draft' = 1, 'Scheduled' = 2, 'Running' = 3, 'Paused' = 4, 'Stopped' = 5, 'Completed' = 6]",
"enum": [0, 1, 2, 3, 4, 5, 6],
"type": "integer"
},
"startDate": {
"format": "date-time",
"description": "The start date of the ad set",
"type": "string"
},
"endDate": {
"format": "date-time",
"description": "The end date of the ad set",
"type": "string"
},
"targetGender": {
"format": "int32",
"description": "The target gender of the ad set ['Undefined' = 1, 'Male' = 2, 'Female' = 4]",
"enum": [1, 2, 4],
"type": "integer"
},
"targetAgeBracket": {
"format": "int32",
"description": "The target age bracket of the ad set ['Undefined' = 1, 'AgeUnder13' = 2, 'Age13OrOver' = 4, 'Age13To16' = 8, 'Age17OrOver' = 16]",
"enum": [1, 2, 4, 8, 16],
"type": "integer"
},
"targetDeviceType": {
"format": "int32",
"description": "The target device type of the ad set ['Undefined' = 1, 'Computer' = 2, 'Phone' = 4, 'Tablet' = 8, 'Console' = 16, 'VR' = 32]",
"enum": [1, 2, 4, 8, 16, 32],
"type": "integer"
},
"campaignTargetType": {
"format": "int32",
"description": "The target type of the campaign ['Undefined' = 0, 'Universe' = 1, 'Asset' = 2, 'ImmersiveAd' = 3]",
"enum": [0, 1, 2, 3],
"type": "integer"
},
"campaignTargetId": {
"format": "int64",
"description": "The target id of the campaign",
"type": "integer"
},
"totalSpendInRobux": {
"format": "int64",
"description": "The total spend of the ad set in Robux",
"type": "integer"
},
"totalImpressions": {
"format": "int64",
"description": "The total number of impressions generated by the ad",
"type": "integer"
},
"totalClicks": {
"format": "int64",
"description": "The total number of clicks generated by the ad",
"type": "integer"
},
"totalConversions": {
"format": "int64",
"description": "The total number of conversions generated by the ad",
"type": "integer"
},
"impressionConversions": {
"format": "int64",
"description": "The number of conversions by ad impression generated by the ad",
"type": "integer"
},
"clickConversions": {
"format": "int64",
"description": "The number of conversions by ad click generated by the ad",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.AdConfiguration.Api.SponsoredGameV2Model": {
"description": "A response model represents an Ad with complete information, including infos from its associated campaign and ad set",
"type": "object",
"properties": {
"adId": {
"format": "int64",
"description": "The id of the ad",
"type": "integer"
},
"adSetId": {
"format": "int64",
"description": "The id of the ad set",
"type": "integer"
},
"adName": {
"description": "The name of the Ad",
"type": "string"
},
"adStatus": {
"format": "int32",
"description": "The status of the ad ['Undefined' = 0, 'Draft' = 1, 'PendingApproval' = 2, 'Approved' = 3, 'Moderated' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"creativeType": {
"format": "int32",
"description": "The type of the creative associated with the Ad ['Undefined' = 0, 'Image' = 1, 'Video' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"creativeTargetId": {
"format": "int64",
"description": "The target id of the creative associated with the Ad",
"type": "integer"
},
"creativeUrl": {
"description": "The Url of the creative",
"type": "string"
},
"bidAmountInRobux": {
"format": "int64",
"description": "The bid amount of the Ad in Robux",
"type": "integer"
},
"budgetInRobux": {
"format": "int64",
"description": "The budget of the ad set in Robux",
"type": "integer"
},
"adSetStatus": {
"format": "int32",
"description": "The status of the ad set ['Undefined' = 0, 'Draft' = 1, 'Scheduled' = 2, 'Running' = 3, 'Paused' = 4, 'Stopped' = 5, 'Completed' = 6]",
"enum": [0, 1, 2, 3, 4, 5, 6],
"type": "integer"
},
"startDate": {
"format": "date-time",
"description": "The start date of the ad set",
"type": "string"
},
"endDate": {
"format": "date-time",
"description": "The end date of the ad set",
"type": "string"
},
"targetGender": {
"format": "int32",
"description": "The target gender of the ad set ['Undefined' = 1, 'Male' = 2, 'Female' = 4]",
"enum": [1, 2, 4],
"type": "integer"
},
"targetAgeBracket": {
"format": "int32",
"description": "The target age bracket of the ad set ['Undefined' = 1, 'AgeUnder13' = 2, 'Age13OrOver' = 4, 'Age13To16' = 8, 'Age17OrOver' = 16]",
"enum": [1, 2, 4, 8, 16],
"type": "integer"
},
"targetDeviceType": {
"format": "int32",
"description": "The target device type of the ad set ['Undefined' = 1, 'Computer' = 2, 'Phone' = 4, 'Tablet' = 8, 'Console' = 16, 'VR' = 32]",
"enum": [1, 2, 4, 8, 16, 32],
"type": "integer"
},
"campaignTargetType": {
"format": "int32",
"description": "The target type of the campaign ['Undefined' = 0, 'Universe' = 1, 'Asset' = 2, 'ImmersiveAd' = 3]",
"enum": [0, 1, 2, 3],
"type": "integer"
},
"campaignTargetId": {
"format": "int64",
"description": "The target id of the campaign",
"type": "integer"
},
"totalSpendInRobux": {
"format": "int64",
"description": "The total spend of the ad set in Robux",
"type": "integer"
},
"totalImpressions": {
"format": "int64",
"description": "The total number of impressions generated by the ad",
"type": "integer"
},
"totalClicks": {
"format": "int64",
"description": "The total number of clicks generated by the ad",
"type": "integer"
},
"totalConversions": {
"format": "int64",
"description": "The total number of conversions generated by the ad",
"type": "integer"
},
"impressionConversions": {
"format": "int64",
"description": "The number of conversions by ad impression generated by the ad",
"type": "integer"
},
"clickConversions": {
"format": "int64",
"description": "The number of conversions by ad click generated by the ad",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AccessoryPositionModel": {
"description": "A model which contains accessory position coordinates",
"type": "object",
"properties": {
"xPosition": {
"format": "float",
"description": "Float that determines the absolute\r\nposition refinement in studs that this accessory\r\nis relocated in the x-direction",
"type": "number"
},
"yPosition": {
"format": "float",
"description": "Float that determines the absolute\r\nposition refinement in studs that this accessory\r\nis relocated in the y-direction",
"type": "number"
},
"zPosition": {
"format": "float",
"description": "Float that determines the absolute\r\nposition refinement in studs that this accessory\r\nis relocated in the z-direction",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AccessoryRefinementModel": {
"description": "A model containing details about accessory refinement data",
"type": "object",
"properties": {
"position": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AccessoryPositionModel"
},
"rotation": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AccessoryRotationModel"
},
"scale": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AccessoryScaleModel"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AccessoryRotationModel": {
"description": "A model which contains accessory rotation coordinates",
"type": "object",
"properties": {
"xRotation": {
"format": "float",
"description": "Float from -180 to 180 that determines the absolute\r\nrotation refinement that this accessory is rotated in the\r\nx-direction",
"type": "number"
},
"yRotation": {
"format": "float",
"description": "Float from -180 to 180 that determines the absolute\r\nrotation refinement that this accessory is rotated in the\r\ny-direction",
"type": "number"
},
"zRotation": {
"format": "float",
"description": "Float from -180 to 180 that determines the absolute\r\nrotation refinement that this accessory is rotated in the\r\nz-direction",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AccessoryScaleModel": {
"description": "A model which contains accessory Scale, that is the multiplier\r\nwith respect to the default size. For example, scale = 2 means\r\ntwice the default size of an asset",
"type": "object",
"properties": {
"xScale": {
"format": "float",
"description": "Float that determines the scale refinement that\r\nthis accessory is resized in the x-direction\r\nDefault size is 1",
"type": "number"
},
"yScale": {
"format": "float",
"description": "Float that determines the scale refinement that\r\nthis accessory is resized in the y-direction\r\nDefault size is 1",
"type": "number"
},
"zScale": {
"format": "float",
"description": "Float that determines the scale refinement that\r\nthis accessory is resized in the z-direction\r\nDefault size is 1",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AssetIdListModel": {
"description": "A model that contains a list of asset ids",
"type": "object",
"properties": {
"assetIds": {
"description": "The asset ids",
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AssetMetaModelV1": {
"description": "Exhaustive model denoting all possible metadata fields of an asset",
"type": "object",
"properties": {
"order": {
"format": "int32",
"description": "Layered-clothing order",
"type": "integer"
},
"puffiness": {
"format": "float",
"description": "Layered-clothing puffiness",
"type": "number"
},
"position": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetPosition"
},
"rotation": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetRotation"
},
"scale": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetScale"
},
"headShape": {
"format": "int32",
"description": "Head Shape selected for the asset id.\r\nApplicable for dynamic head assets.",
"enum": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29
],
"type": "integer"
},
"staticFacialAnimation": {
"description": "Indicates user choice for facial animation.\r\nstaticFacialAnimation=false, implies the toggle as on and face will animate.\r\nApplicable for dynamic head assets.",
"type": "boolean"
},
"version": {
"format": "int32",
"description": "Client-authoritative meta model format version\r\n- default is always 1",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AssetModelV2": {
"description": "A model containing details about an asset\r\n- V2: adds CurrentVersionId, AssetMetaModel",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The id",
"type": "integer"
},
"name": {
"description": "The name",
"type": "string"
},
"assetType": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetTypeModel"
},
"currentVersionId": {
"format": "int64",
"description": "Id of the current version of asset",
"type": "integer"
},
"meta": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetMetaModelV1"
},
"availabilityStatus": {
"description": "Asset availability status.",
"type": "string"
},
"expirationTime": {
"format": "date-time",
"description": "For rental assets only. (Future) ownership expiration time of the asset.",
"type": "string"
},
"supportsHeadShapes": {
"description": "If the \"Id\" is swappable, applicable for DH assets.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AssetPosition": {
"description": "A model which contains accessory position coordinates.",
"type": "object",
"properties": {
"X": {
"format": "float",
"description": "X coordinate of the position.",
"type": "number"
},
"Y": {
"format": "float",
"description": "y coordinate of the position.",
"type": "number"
},
"Z": {
"format": "float",
"description": "Z coordinate of the position.",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AssetRotation": {
"description": "A model which contains accessory rotation coordinates.",
"type": "object",
"properties": {
"X": {
"format": "float",
"description": "X degrees of the rotation.",
"type": "number"
},
"Y": {
"format": "float",
"description": "Y degrees of the rotation.",
"type": "number"
},
"Z": {
"format": "float",
"description": "Z degrees of the rotation.",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AssetScale": {
"description": "A model which contains accessory scale.",
"type": "object",
"properties": {
"X": {
"format": "float",
"description": "X scale multiplier of accessory.",
"type": "number"
},
"Y": {
"format": "float",
"description": "Y scale multiplier of accessory.",
"type": "number"
},
"Z": {
"format": "float",
"description": "Z scale multiplier of accessory.",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AssetTypeModel": {
"description": "A model containing details about an asset type",
"type": "object",
"properties": {
"id": {
"format": "int32",
"description": "The id",
"type": "integer"
},
"name": {
"description": "The name",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AssetTypeRulesModel": {
"description": "A model containing details about an asset type and its business rules",
"type": "object",
"properties": {
"maxNumber": {
"format": "int32",
"description": "The max number of this asset type that can be worn",
"type": "integer"
},
"id": {
"format": "int32",
"description": "The id",
"type": "integer"
},
"name": {
"description": "The name",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AssetWearModel": {
"description": "A model which contains\r\n- an asset id\r\n- AssetMetaModel",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "An asset id",
"type": "integer"
},
"meta": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetMetaModelV1"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AvatarApiSuccessResponse": {
"description": "Success response class",
"type": "object",
"properties": {
"success": {
"description": "Gets or sets a value indicating whether the request was a success.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AvatarFilteredPageResponse_Roblox.Api.Avatar.Models.OutfitModel_": {
"description": "Filtered page response",
"type": "object",
"properties": {
"filteredCount": {
"format": "int32",
"description": "Number of !:TPagedObject filtered.",
"type": "integer"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitModel"
}
},
"total": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AvatarMetadataModel": {
"description": "A model containing website metadata for avatars",
"type": "object",
"properties": {
"enableDefaultClothingMessage": {
"description": "Whether or not to show the Default Clothing message",
"type": "boolean"
},
"isAvatarScaleEmbeddedInTab": {
"description": "Whether or not the Scales is embedded in the tab",
"type": "boolean"
},
"isBodyTypeScaleOutOfTab": {
"description": "Whether or not the Boby Type scale is embedded in the tab",
"type": "boolean"
},
"scaleHeightIncrement": {
"format": "double",
"description": "How much the height scaler should increment by",
"type": "number"
},
"scaleWidthIncrement": {
"format": "double",
"description": "How much the width scaler should increment by",
"type": "number"
},
"scaleHeadIncrement": {
"format": "double",
"description": "How much the head scaler should increment by",
"type": "number"
},
"scaleProportionIncrement": {
"format": "double",
"description": "How much the proportion scaler should increment by",
"type": "number"
},
"scaleBodyTypeIncrement": {
"format": "double",
"description": "How much the body type scaler should increment by",
"type": "number"
},
"supportProportionAndBodyType": {
"description": "Whether or not to support proportion and body type",
"type": "boolean"
},
"showDefaultClothingMessageOnPageLoad": {
"description": "Whether or not to show the default clothing message when the page loads",
"type": "boolean"
},
"areThreeDeeThumbsEnabled": {
"description": "Whether or not 3D thumbnails are shown",
"type": "boolean"
},
"isAvatarWearingApiCallsLockingOnFrontendEnabled": {
"description": "Does the frontend lock avatar editor input until the wearing call returns",
"type": "boolean"
},
"isOutfitHandlingOnFrontendEnabled": {
"description": "Does the frontend lock avatar editor input until the wearing call returns",
"type": "boolean"
},
"isJustinUiChangesEnabled": {
"description": "Determines whether a bunch of UI improvements are released",
"type": "boolean"
},
"isCategoryReorgEnabled": {
"description": "Determines whether Category Reorg is released",
"type": "boolean"
},
"LCEnabledInEditorAndCatalog": {
"description": "Flag for both web UI and App, name is fixed due to sharing, do not change",
"type": "boolean"
},
"isLCCompletelyEnabled": {
"description": "Useful for the time between enabling Jackets for most users and\r\nall LC types for everyone, meanwhile Soothsayers need all types\r\nat all times",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AvatarModelV2": {
"description": "A model containing details about an avatar",
"type": "object",
"properties": {
"scales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"format": "int32",
"description": "The avatar type",
"enum": [1, 3],
"type": "integer"
},
"bodyColors": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorsModel"
},
"assets": {
"description": "The assets worn on the character",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"defaultShirtApplied": {
"description": "Whether default clothing has been applied to this avatar.",
"type": "boolean"
},
"defaultPantsApplied": {
"description": "Whether default clothing has been applied to this avatar.",
"type": "boolean"
},
"emotes": {
"description": "The emotes on the character",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.EmoteResponseModel"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AvatarModelV3": {
"description": "A model containing details about an avatar",
"type": "object",
"properties": {
"scales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"format": "int32",
"description": "The avatar type",
"enum": [1, 3],
"type": "integer"
},
"bodyColor3s": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColors3Model"
},
"assets": {
"description": "The assets worn on the character",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"defaultShirtApplied": {
"description": "Whether default clothing has been applied to this avatar.",
"type": "boolean"
},
"defaultPantsApplied": {
"description": "Whether default clothing has been applied to this avatar.",
"type": "boolean"
},
"emotes": {
"description": "The emotes on the character",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.EmoteResponseModel"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AvatarPageResponse_Roblox.Api.Avatar.Models.OutfitModel_": {
"description": "Avatar page response.",
"type": "object",
"properties": {
"data": {
"description": "The data",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.OutfitModel"
}
},
"paginationToken": {
"description": "A non empty string indicates that there is more data available than this response contains. An empty string indicates the last page.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AvatarRulesModel": {
"description": "A model containing details about avatar-related business rules",
"type": "object",
"properties": {
"playerAvatarTypes": {
"description": "The avatar type",
"type": "array",
"items": {
"format": "int32",
"description": "https://confluence.roblox.com/display/PLATFORM/Avatar+Project+2016\r\nWhat avatar type does the player prefer to have?",
"enum": [1, 3],
"type": "integer"
}
},
"scales": {
"description": "The scales",
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.ScaleRulesModel"
}
},
"wearableAssetTypes": {
"description": "The assets worn on the character",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetTypeRulesModel"
}
},
"accessoryRefinementTypes": {
"description": "The list of asset type ids for Accessory Refinement.",
"type": "array",
"items": {
"format": "int32",
"type": "integer"
}
},
"accessoryRefinementLowerBounds": {
"description": "The lower bounds for accessory refinement settings.",
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AccessoryRefinementModel"
}
},
"accessoryRefinementUpperBounds": {
"description": "The lower bounds for accessory refinement settings.",
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AccessoryRefinementModel"
}
},
"bodyColorsPalette": {
"description": "The full set of usable body colors",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorModel"
}
},
"basicBodyColorsPalette": {
"description": "The basic set of body colors",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorModel"
}
},
"minimumDeltaEBodyColorDifference": {
"format": "double",
"description": "The minimum Delta-E difference in body colors\r\nfor default clothing not to be applied",
"type": "number"
},
"proportionsAndBodyTypeEnabledForUser": {
"description": "Whether proportion and bodyType scales are allowed to be set by the authenticated user",
"type": "boolean"
},
"defaultClothingAssetLists": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.DefaultClothingAssets"
},
"bundlesEnabledForUser": {
"description": "Whether or not bundles are enabled for the specific user",
"type": "boolean"
},
"emotesEnabledForUser": {
"description": "Whether or not emotes are enabled",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AvatarThumbnailCustomizationCameraModel": {
"description": "A model describing a the camera details for a single avatar thumbnail customization.",
"type": "object",
"properties": {
"fieldOfViewDeg": {
"format": "double",
"description": "Field of view for the camera, in degrees.",
"type": "number"
},
"yRotDeg": {
"format": "double",
"description": "Rotation around y axis, in degrees.",
"type": "number"
},
"distanceScale": {
"format": "double",
"description": "There's a natural camera distance we calculate based on avatar size. Apply this scale to that distance.",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.AvatarThumbnailCustomizationModel": {
"description": "A model describing a single avatar thumbnail customization.",
"type": "object",
"properties": {
"thumbnailType": {
"format": "int32",
"description": "What type of 2D thumbnail are we customizing: |Closeup, FullBody.",
"enum": [0, 1, 2],
"type": "integer"
},
"emoteAssetId": {
"format": "int64",
"description": "What emote are we using to pose the avatar in the thumbnail.",
"type": "integer"
},
"camera": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarThumbnailCustomizationCameraModel"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.BodyColorModel": {
"description": "A model container BrickColor ids for each body part.",
"type": "object",
"properties": {
"brickColorId": {
"format": "int32",
"description": "The BrickColor id",
"type": "integer"
},
"hexColor": {
"description": "The hex color, e.g. #FFFFFF",
"type": "string"
},
"name": {
"description": "The name of the BrickColor",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.BodyColors3Model": {
"description": "A model containing RGB hex colors for each body part.",
"type": "object",
"properties": {
"headColor3": {
"description": "The RGB hex color for head color, e.g. #FFFFFF",
"type": "string"
},
"torsoColor3": {
"description": "The RGB hex color for torso color, e.g. #FFFFFF",
"type": "string"
},
"rightArmColor3": {
"description": "The RGB hex color for right arm color, e.g. #FFFFFF",
"type": "string"
},
"leftArmColor3": {
"description": "The RGB hex color for left arm color, e.g. #FFFFFF",
"type": "string"
},
"rightLegColor3": {
"description": "The RGB hex color for right leg color, e.g. #FFFFFF",
"type": "string"
},
"leftLegColor3": {
"description": "The RGB hex color for left leg color, e.g. #FFFFFF",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.BodyColorsModel": {
"description": "A model container BrickColor ids for each body part.",
"type": "object",
"properties": {
"headColorId": {
"format": "int32",
"description": "The BrickColor id for head color",
"type": "integer"
},
"torsoColorId": {
"format": "int32",
"description": "The BrickColor id for torso color",
"type": "integer"
},
"rightArmColorId": {
"format": "int32",
"description": "The BrickColor id for right arm color",
"type": "integer"
},
"leftArmColorId": {
"format": "int32",
"description": "The BrickColor id for left arm color",
"type": "integer"
},
"rightLegColorId": {
"format": "int32",
"description": "The BrickColor id for right leg color",
"type": "integer"
},
"leftLegColorId": {
"format": "int32",
"description": "The BrickColor id for left leg color",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.BodyColorsModelV4": {
"description": "A model containing RGB hex colors for each body part.",
"type": "object",
"properties": {
"headColor": {
"description": "The RGB hex color for head color, e.g. #FFFFFF",
"type": "string"
},
"torsoColor": {
"description": "The RGB hex color for torso color, e.g. #FFFFFF",
"type": "string"
},
"rightArmColor": {
"description": "The RGB hex color for right arm color, e.g. #FFFFFF",
"type": "string"
},
"leftArmColor": {
"description": "The RGB hex color for left arm color, e.g. #FFFFFF",
"type": "string"
},
"rightLegColor": {
"description": "The RGB hex color for right leg color, e.g. #FFFFFF",
"type": "string"
},
"leftLegColor": {
"description": "The RGB hex color for left leg color, e.g. #FFFFFF",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.DefaultClothingAssets": {
"description": "A model containing details about avatar-related business rules",
"type": "object",
"properties": {
"defaultShirtAssetIds": {
"description": "List of asset Ids used to equip shirts for default clothing when the avatar appears nude.",
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
},
"defaultPantAssetIds": {
"description": "List of asset Ids used to equip pants for default clothing when the avatar appears nude.",
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.EmoteRequestModel": {
"description": "Request model to equip a emote",
"type": "object",
"properties": {
"assetId": {
"format": "int64",
"description": "The asset id of the emote",
"type": "integer"
},
"position": {
"format": "int32",
"description": "The position to equip the emote to",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.EmoteResponseModel": {
"description": "Response object representing a user's emote",
"type": "object",
"properties": {
"assetId": {
"format": "int64",
"description": "The asset id of the emote.",
"type": "integer"
},
"assetName": {
"description": "The name of the emote.",
"type": "string"
},
"position": {
"format": "int32",
"description": "The position the emote is equipped to.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.GameStartInfoResponse": {
"description": "The game start info",
"type": "object",
"properties": {
"gameAvatarType": {
"description": "Avatar Type",
"type": "string"
},
"allowCustomAnimations": {
"description": "Custom animation enabled",
"type": "string"
},
"universeAvatarCollisionType": {
"description": "collision type for the univers",
"type": "string"
},
"universeAvatarBodyType": {
"description": "Body type for the univers",
"type": "string"
},
"jointPositioningType": {
"description": "Joing positioning type",
"type": "string"
},
"message": {
"description": "Mesasge",
"type": "string"
},
"universeAvatarMinScales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"universeAvatarMaxScales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"universeAvatarAssetOverrides": {
"description": "asset overrides for the univers",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.UniverseAvatarAssetOverrideResponseModel"
}
},
"moderationStatus": {
"description": "Moderation status",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.InvalidBackgroundResponse": {
"type": "object",
"properties": {
"BackgroundAssetId": {
"format": "int64",
"description": "The asset id of the emote",
"type": "integer"
},
"Error": {
"description": "The error associated with the background.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.InvalidEmoteResponseModel": {
"description": "Response object representing an invalid emote",
"type": "object",
"properties": {
"assetId": {
"format": "int64",
"description": "The asset id of the emote",
"type": "integer"
},
"position": {
"format": "int32",
"description": "The position the emote is equipped to",
"type": "integer"
},
"error": {
"description": "The error occured while trying to equip this emote",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.InvalidProfileFrameResponse": {
"description": "Validation error for a profile frame that could not be applied.",
"type": "object",
"properties": {
"FrameAssetId": {
"format": "int64",
"description": "The asset id of the profile frame.",
"type": "integer"
},
"Error": {
"description": "The error associated with the profile frame.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.OutfitDetailsModel": {
"description": "A model containing details about a user outfit",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The id",
"type": "integer"
},
"universeId": {
"format": "int64",
"description": "The universe id of the outfit, null when outfit is not created in-experience",
"type": "integer"
},
"name": {
"description": "The name",
"type": "string"
},
"assets": {
"description": "A list of assetIds",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"bodyColors": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorsModel"
},
"scale": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"description": "The player avatar type - this can be R6 or R15.",
"type": "string"
},
"outfitType": {
"description": "The outfit type of the outfit",
"type": "string"
},
"isEditable": {
"description": "Whether the outfit can be edited by the user",
"type": "boolean"
},
"moderationStatus": {
"description": "The moderation status of the outfit, not applicable when outfit is created outside experience",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.OutfitDetailsModelV2": {
"description": "A model containing details about a user outfit",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The id",
"type": "integer"
},
"name": {
"description": "The name",
"type": "string"
},
"assets": {
"description": "A list of assetIds",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"bodyColor3s": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColors3Model"
},
"scale": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"description": "The player avatar type - this can be R6 or R15.",
"type": "string"
},
"outfitType": {
"description": "The outfit type of the outfit",
"type": "string"
},
"isEditable": {
"description": "Whether the outfit can be edited by the user",
"type": "boolean"
},
"universeId": {
"format": "int64",
"description": "The universe id of the outfit, null when outfit is not created in-experience",
"type": "integer"
},
"moderationStatus": {
"description": "The moderation status of the outfit, not applicable when outfit is created outside experience",
"type": "string"
},
"bundleId": {
"format": "int64",
"description": "The bundle ID, currently only returned for in-experience created outfits.",
"type": "integer"
},
"inventoryType": {
"description": "The inventory type of the outfit.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.OutfitModel": {
"description": "A slim model for user outfits.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The id.",
"type": "integer"
},
"name": {
"description": "The name.",
"type": "string"
},
"isEditable": {
"description": "Whether the outfit can be modified by the user.",
"type": "boolean"
},
"outfitType": {
"description": "The type of the Outfit.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.OutfitUpdateModelV2": {
"description": "A model containing details needed to update or create an outfit",
"type": "object",
"properties": {
"name": {
"description": "The outfit name",
"type": "string"
},
"bodyColors": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorsModel"
},
"assets": {
"description": "Array of assets",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetWearModel"
}
},
"scale": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"description": "The avatar scale",
"type": "string"
},
"outfitType": {
"format": "int32",
"description": "The type of outfit",
"enum": [0, 1, 2, 4, 5],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.OutfitUpdateModelV3": {
"description": "A model containing details needed to update or create an outfit.",
"type": "object",
"properties": {
"name": {
"description": "The outfit name.",
"type": "string"
},
"bodyColor3s": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColors3Model"
},
"assets": {
"description": "Array of assets.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetWearModel"
}
},
"scale": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"description": "The avatar scale.",
"type": "string"
},
"outfitType": {
"format": "int32",
"description": "The type of outfit.",
"enum": [0, 1, 2, 4, 5],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.PlayerAvatarTypeModel": {
"description": "A model that contains a playerAvatarType",
"type": "object",
"properties": {
"playerAvatarType": {
"format": "int32",
"description": "The playerAvatarType",
"enum": [1, 3],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.ScaleRulesModel": {
"description": "A model that contains information about the max/mins for each scale",
"type": "object",
"properties": {
"min": {
"format": "double",
"description": "The min scale",
"type": "number"
},
"max": {
"format": "double",
"description": "The max scale",
"type": "number"
},
"increment": {
"format": "double",
"description": "The increment of the scale",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.UniverseAvatarAssetOverrideResponseModel": {
"type": "object",
"properties": {
"assetID": {
"format": "int64",
"type": "integer"
},
"assetTypeID": {
"format": "int32",
"type": "integer"
},
"isPlayerChoice": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.UpdateAvatarDataModel": {
"description": "A model containing details about an avatar.",
"type": "object",
"properties": {
"scales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"format": "int32",
"description": "The avatar type.",
"enum": [1, 3],
"type": "integer"
},
"bodyColors": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColors3Model"
},
"assets": {
"description": "The assets worn on the character.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetWearModel"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.UpdateAvatarRequestModel": {
"description": "A model containing details about an avatar update request.",
"type": "object",
"properties": {
"updateMask": {
"description": "Update mask specifying which avatar fields to update (can include multiple).\r\nAcceptable values:\r\n- UpdateAvatarType: updates avatar.type (R6/R15)\r\n- UpdateScales: updates avatar.scale\r\n- UpdateBodyColors: updates avatar.body_color_set\r\n- UpdateAssets: updates avatar.avatar_assets",
"type": "array",
"items": {
"format": "int32",
"description": "Defines the data that needs to be modified during an update.",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
"type": "integer"
}
},
"data": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.UpdateAvatarDataModel"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.UpdateAvatarResponseModel": {
"description": "A model for update avatar responses.",
"type": "object",
"properties": {
"invalidAssets": {
"description": "The assets that could not be worn\r\nUnlike invalidAssetIds, only contains assets that are wearable types.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"success": {
"description": "Whether or not all the outfit contents were successfully worn.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.AvatarBackgroundModel": {
"description": "A model containing avatar background data.",
"type": "object",
"properties": {
"backgroundAsset": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.AvatarBackgroundRequestModel": {
"description": "A model which contains the asset id of the background. This can be\r\nextended to have more attributes in the future.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "An asset id.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.AvatarConfigurations": {
"description": "Avatar config details.",
"type": "object",
"properties": {
"emotes": {
"description": "The emotes on the character.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.EmoteResponseModel"
}
},
"background": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarBackgroundModel"
},
"thumbnailCustomizations": {
"description": "List of customizations set for this avatar. At most one per thumbnail type (Closeup, FullBody).",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarThumbnailCustomizationModel"
}
},
"profileFrame": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarProfileFrameModel"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.AvatarDefinition": {
"description": "Details about an avatar.",
"type": "object",
"properties": {
"avatarModel": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarModelV4"
},
"avatarConfigurations": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarConfigurations"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.AvatarModelV4": {
"description": "A model containing details about an avatar.",
"type": "object",
"properties": {
"scales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"format": "int32",
"description": "The avatar type.",
"enum": [1, 3],
"type": "integer"
},
"bodyColors": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorsModelV4"
},
"assets": {
"description": "The assets worn on the character.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.AvatarProfileFrameModel": {
"description": "A model containing avatar profile frame data.",
"type": "object",
"properties": {
"frameAsset": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.AvatarProfileFrameRequestModel": {
"description": "A model which contains the asset id of the profile frame.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "An asset id. Use 0 to clear the equipped frame.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.OutfitConfigurations": {
"description": "Background configuration for an outfit.",
"type": "object",
"properties": {
"background": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarBackgroundModel"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.OutfitDefinition": {
"description": "Details about an outfit.",
"type": "object",
"properties": {
"moderationStatus": {
"description": "The moderation status of the outfit, not applicable when outfit is created outside experience",
"type": "string"
},
"bundleId": {
"format": "int64",
"description": "The bundle ID, currently only returned for in-experience created outfits.",
"type": "integer"
},
"outfitModel": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.OutfitModelV4"
},
"outfitConfigurations": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.OutfitConfigurations"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.OutfitModelV4": {
"description": "A model containing core outfit details.",
"type": "object",
"properties": {
"universeId": {
"format": "int64",
"description": "The universe id of the outfit, null when outfit is not created in-experience",
"type": "integer"
},
"inventoryType": {
"description": "The inventory type of the outfit.",
"type": "string"
},
"id": {
"description": "The outfit id.",
"type": "string"
},
"name": {
"description": "The outfit name.",
"type": "string"
},
"isEditable": {
"description": "Whether the outfit can be modified by the user.",
"type": "boolean"
},
"outfitType": {
"format": "int32",
"description": "The type of the outfit.",
"enum": [0, 1, 2, 4, 5],
"type": "integer"
},
"assets": {
"description": "The assets on the outfit.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"bodyColors": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorsModelV4"
},
"scale": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"format": "int32",
"description": "The player avatar type.",
"enum": [1, 3],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.Request.CreateOutfitDefinitionRequestV4": {
"description": "Request model for creating an outfit (V4).",
"type": "object",
"properties": {
"outfitDefinition": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.UpdateOutfitDefinition"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.Request.UpdateAvatarDefinitionRequestV4": {
"description": "Request model for updating an avatar definition (V4).",
"type": "object",
"properties": {
"updateTypes": {
"description": "The list of data needed to be updated.",
"type": "array",
"items": {
"format": "int32",
"description": "Defines the data that needs to be modified during an update.",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
"type": "integer"
}
},
"avatarDefinition": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.UpdateAvatarDefinition"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.Request.UpdateOutfitDefinitionRequestV4": {
"description": "Request model for updating an outfit (V4).",
"type": "object",
"properties": {
"updateTypes": {
"description": "The list of data needed to be updated.",
"type": "array",
"items": {
"format": "int32",
"description": "Defines the data that needs to be modified during an outfit update operation.",
"enum": [0, 1, 2, 3, 4, 5, 6],
"type": "integer"
}
},
"outfitDefinition": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.UpdateOutfitDefinition"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.Response.AvatarValidationResultV4": {
"description": "Validation details for avatar mutation responses when one or more inputs could not be applied.",
"type": "object",
"properties": {
"invalidAssets": {
"description": "Assets that could not be worn.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"invalidBackground": {
"description": "Background assets that could not be applied.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.InvalidBackgroundResponse"
}
},
"invalidProfileFrame": {
"description": "Profile frame assets that could not be applied.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.InvalidProfileFrameResponse"
}
},
"invalidEmotes": {
"description": "Emotes that could not be equipped.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.InvalidEmoteResponseModel"
}
},
"invalidThumbnailCustomizations": {
"description": "Thumbnail customizations that could not be applied.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.InvalidThumbnailCustomizationResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.Response.CreateOutfitDefinitionResponseV4": {
"description": "Response model for create outfit (V4).",
"type": "object",
"properties": {
"success": {
"description": "Whether all requested changes were successfully applied.",
"type": "boolean"
},
"validation": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.OutfitValidationResultV4"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.Response.InvalidThumbnailCustomizationResponse": {
"type": "object",
"properties": {
"ThumbnailCustomizationModel": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarThumbnailCustomizationModel"
},
"Error": {
"description": "The error associated with the thumbnail customization",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.Response.OutfitValidationResultV4": {
"description": "Validation details for outfit mutation responses when one or more inputs could not be applied.",
"type": "object",
"properties": {
"unwornAssets": {
"description": "Assets that could not be worn.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"invalidBackground": {
"description": "Background assets that could not be applied.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.InvalidBackgroundResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.Response.UpdateAvatarDefinitionResponseV4": {
"description": "Response model for update avatar (V4).",
"type": "object",
"properties": {
"success": {
"description": "Whether all requested changes were successfully applied.",
"type": "boolean"
},
"invalidAssets": {
"description": "Temporary top-level mirror of Roblox.Api.Avatar.Models.V4.Response.AvatarValidationResultV4.InvalidAssets to unblock\r\nclients that still read `invalidAssets` at the response root during backgrounds rollout.\r\nPrefer Roblox.Api.Avatar.Models.V4.Response.UpdateAvatarDefinitionResponseV4.Validation.Roblox.Api.Avatar.Models.V4.Response.AvatarValidationResultV4.InvalidAssets.\r\nWill be reverted once the engine fix is fully deployed.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"validation": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.AvatarValidationResultV4"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.Response.UpdateOutfitDefinitionResponseV4": {
"description": "Response model for update outfit (V4).",
"type": "object",
"properties": {
"success": {
"description": "Whether all requested changes were successfully applied.",
"type": "boolean"
},
"validation": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.Response.OutfitValidationResultV4"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.UpdateAvatarConfig": {
"description": "A model containing avatar config fields to update.",
"type": "object",
"properties": {
"emoteRequestModels": {
"description": "The avatar's emotes.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.EmoteRequestModel"
}
},
"thumbnailCustomizationModels": {
"description": "The avatar's thumbnail customizations.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AvatarThumbnailCustomizationModel"
}
},
"backgroundRequestModel": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarBackgroundRequestModel"
},
"profileFrameRequestModel": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarProfileFrameRequestModel"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.UpdateAvatarDefinition": {
"description": "A model containing details about an avatar update.",
"type": "object",
"properties": {
"updateAvatarModel": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.UpdateAvatarModelV4"
},
"updateAvatarConfig": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.UpdateAvatarConfig"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.UpdateAvatarModelV4": {
"description": "A model containing avatar model fields to update.",
"type": "object",
"properties": {
"scales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"format": "int32",
"description": "The avatar type.",
"enum": [1, 3],
"type": "integer"
},
"bodyColors": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorsModelV4"
},
"assets": {
"description": "The assets worn on the character.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetWearModel"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.UpdateOutfitConfig": {
"description": "A model containing outfit config fields to update.",
"type": "object",
"properties": {
"backgroundRequestModel": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.AvatarBackgroundRequestModel"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.UpdateOutfitDefinition": {
"description": "A model containing outfit fields to create or update.",
"type": "object",
"properties": {
"updateOutfitModel": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.UpdateOutfitModelV4"
},
"updateOutfitConfig": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.V4.UpdateOutfitConfig"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.V4.UpdateOutfitModelV4": {
"description": "A model containing core outfit fields to update.",
"type": "object",
"properties": {
"name": {
"description": "The outfit name.",
"type": "string"
},
"bodyColors": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.BodyColorsModelV4"
},
"assets": {
"description": "The assets on the outfit.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetWearModel"
}
},
"scale": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"playerAvatarType": {
"format": "int32",
"description": "The player avatar type.",
"enum": [1, 3],
"type": "integer"
},
"outfitType": {
"format": "int32",
"description": "The type of outfit (for example Avatar or Makeup). Defaults to Avatar when omitted.",
"enum": [0, 1, 2, 4, 5],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.WearRequestModel": {
"description": "A model that contains a list of AssetWear models",
"type": "object",
"properties": {
"assets": {
"description": "The asset ids",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetWearModel"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Avatar.Models.WearResponseModel": {
"description": "A model for wear outfit responses",
"type": "object",
"properties": {
"invalidAssets": {
"description": "The assets that could not be worn\r\nUnlike invalidAssetIds, only contains assets that are wearable types",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Avatar.Models.AssetModelV2"
}
},
"invalidAssetIds": {
"description": "The asset ids that could not be worn",
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
},
"success": {
"description": "Whether or not all the outfit contents were successfully worn",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.ActivationEligibilityResponse": {
"description": "The result of various checks for a user's eligibility to activate a given universe from private to public.",
"type": "object",
"properties": {
"isEligible": {
"description": "The overall result of activation eligibility. This requires the user publish gate\r\nand either a maturity rating or an intact Build seal.",
"type": "boolean"
},
"maturityRated": {
"description": "Whether the place has an active content maturity rating or not.",
"type": "boolean"
},
"isUserEligibleForPublicPublish": {
"description": "isUserEligibleForPublicPublish",
"type": "boolean"
},
"remainingPublicPublishCount": {
"format": "int32",
"description": "How many public publishes are remaining for the given user / group.",
"type": "integer"
},
"isPublicPublish": {
"description": "Whether the universe is publicly published or not.",
"type": "boolean"
},
"isPublishToExistingUniverse": {
"description": "Whether the universeId is within the tracked list of distinct allowed published universes.",
"type": "boolean"
},
"isUniverseSelect": {
"description": "Whether the universe is in the \"Select\" program.",
"type": "boolean"
},
"creatorTier": {
"format": "int32",
"description": "The creator tier of the universe owner. ['Invalid' = 0, 'Blocked' = 1, 'Private' = 2, 'Trusted' = 3, 'Everyone' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"allowedAudiences": {
"description": "Audiences the universe is allowed to be published to.",
"type": "array",
"items": {
"format": "int32",
"description": " ['Invalid' = 0, 'Editors' = 1, 'PlayTesters' = 2, 'Friends' = 3, 'Public' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
}
},
"provisionalRatingAllowed": {
"description": "Whether the universe has a provisional rating via a Build seal in Content Catalog.\r\nWhen true, the universe is eligible for activation even without a full maturity questionnaire.",
"type": "boolean"
},
"provisionalRating": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse": {
"description": "The complete build-generated rating preview returned by Experience Guidelines.",
"type": "object",
"properties": {
"ageRecommendationDetails": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.AgeRecommendationDetailsModel"
},
"restrictedCountries": {
"description": "Country-specific restrictions produced by the preview.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.RestrictedCountryModel"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.AgeRangeModel": {
"description": "Age range for a descriptor usage.",
"type": "object",
"properties": {
"minAgeInclusive": {
"format": "int32",
"description": "Inclusive minimum age.",
"type": "integer"
},
"maxAgeInclusive": {
"format": "int32",
"description": "Inclusive maximum age.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.AgeRecommendationDetailsModel": {
"description": "Age recommendation details.",
"type": "object",
"properties": {
"ageRecommendationSummary": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.AgeRecommendationSummaryModel"
},
"experienceDescriptorUsages": {
"description": "Descriptor usages that contributed to the recommendation.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.ExperienceDescriptorUsageModel"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.AgeRecommendationModel": {
"description": "Age recommendation.",
"type": "object",
"properties": {
"displayName": {
"description": "Localized display name.",
"type": "string"
},
"minimumAge": {
"format": "int32",
"description": "Minimum recommended age.",
"type": "integer"
},
"displayNameWithHeaderShort": {
"description": "Localized short display name including the maturity header.",
"type": "string"
},
"minimumAgeDisplay": {
"description": "Localized minimum-age display value.",
"type": "string"
},
"contentMaturity": {
"description": "Explicit content maturity value.",
"type": "string"
},
"igrsRating": {
"description": "IGRS rating enum name, when present.",
"type": "string"
},
"igrsRatingDisplayMessage": {
"description": "Localized IGRS rating display message, when present.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.AgeRecommendationSummaryModel": {
"description": "Age recommendation summary.",
"type": "object",
"properties": {
"ageRecommendation": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.AgeRecommendationModel"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.ExperienceDescriptorDimensionUsageModel": {
"description": "Descriptor dimension usage.",
"type": "object",
"properties": {
"dimensionName": {
"description": "Dimension name.",
"type": "string"
},
"dimensionValue": {
"description": "Dimension value.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.ExperienceDescriptorModel": {
"description": "Experience descriptor definition.",
"type": "object",
"properties": {
"name": {
"description": "Descriptor name.",
"type": "string"
},
"displayName": {
"description": "Localized descriptor display name.",
"type": "string"
},
"complianceApiSupported": {
"description": "Whether the descriptor is supported by the Compliance API.",
"type": "boolean"
},
"iconUrl": {
"description": "Descriptor icon URL.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.ExperienceDescriptorUsageModel": {
"description": "A descriptor usage that contributed to a recommendation.",
"type": "object",
"properties": {
"name": {
"description": "Descriptor usage name.",
"type": "string"
},
"followsComplianceApi": {
"description": "Whether this usage follows the Compliance API, when specified.",
"type": "boolean"
},
"experienceDescriptor": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.ExperienceDescriptorModel"
},
"experienceDescriptorDimensionUsages": {
"description": "Dimensions associated with this usage.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.ExperienceDescriptorDimensionUsageModel"
}
},
"contains": {
"description": "Whether the experience contains this descriptor.",
"type": "boolean"
},
"ageRange": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.AgeRangeModel"
},
"descriptorDisplayName": {
"description": "Localized descriptor display name.",
"type": "string"
},
"ageRangeDisplayName": {
"description": "Localized age-range display name.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.RestrictedCountryModel": {
"description": "Country-specific restrictions.",
"type": "object",
"properties": {
"countryCode": {
"description": "ISO country code.",
"type": "string"
},
"experienceDescriptorUsages": {
"description": "Descriptor usages responsible for the restriction.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.BuildGeneratedRatingPreviewResponse.ExperienceDescriptorUsageModel"
}
},
"countryDisplayName": {
"description": "Localized country display name.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.GameTemplateModel": {
"description": "Represents a game template in API endpoint responses.",
"type": "object",
"properties": {
"gameTemplateType": {
"description": "The type of this game template.",
"type": "string"
},
"hasTutorials": {
"description": "Whether this game template has tutorials.",
"type": "boolean"
},
"universe": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseModel"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.GroupModel": {
"description": "A model containing information about a group",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The Roblox.Platform.Groups.IGroup's Id.",
"type": "integer"
},
"name": {
"description": "The Roblox.Platform.Groups.IGroup's name.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.IPlaceModel": {
"description": "A model containing information about a place",
"type": "object",
"additionalProperties": false
},
"Roblox.Api.Develop.Models.PlaceConfigurationModel": {
"description": "A model containing information about a place to be configured",
"type": "object",
"properties": {
"name": {
"description": "The name for the place.",
"type": "string"
},
"description": {
"description": "The new description for the place.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.PlaceConfigurationModelV2": {
"description": "A model containing information about a place to be configured",
"type": "object",
"properties": {
"name": {
"description": "The name for the place.",
"type": "string"
},
"description": {
"description": "The new description for the place.",
"type": "string"
},
"maxPlayerCount": {
"format": "int32",
"description": "The max number of players for the place.",
"type": "integer"
},
"socialSlotType": {
"description": "The social slot type for the place. Determines how users are placed into servers.\r\n Examples: \r\n Automatic,\r\n Empty,\r\n Custom",
"type": "string"
},
"customSocialSlotsCount": {
"format": "int32",
"description": "The number of social slots for the place when the slot type is custom.",
"type": "integer"
},
"allowCopying": {
"description": "Determines if copying of the place is allowed.",
"type": "boolean"
},
"allowedGearTypes": {
"description": "List of allowed gear types",
"type": "array",
"items": {
"type": "string"
}
},
"isAllGenresAllowed": {
"description": "If all genres are allowed, or only the experience type",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.PlaceModel": {
"description": "A model containing information about a place",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "Returns the place id.",
"type": "integer"
},
"universeId": {
"format": "int64",
"description": "Returns the id of the place's universe, or null - if the place is not part of a universe.",
"type": "integer"
},
"name": {
"description": "Returns the place name.",
"type": "string"
},
"description": {
"description": "Returns the place description.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.PlaceModelV2": {
"description": "A model containing information about a place",
"type": "object",
"properties": {
"maxPlayerCount": {
"format": "int32",
"description": "The max number of players for the place.",
"type": "integer"
},
"socialSlotType": {
"description": "The social slot type for the place. Determines how users are placed into servers.\r\n Examples: \r\n Automatic,\r\n Empty,\r\n Custom",
"type": "string"
},
"customSocialSlotsCount": {
"format": "int32",
"description": "The number of social slots for the place when the slot type is custom.",
"type": "integer"
},
"allowCopying": {
"description": "Determines if copying of the place is allowed.",
"type": "boolean"
},
"currentSavedVersion": {
"format": "int32",
"description": "The current saved version number of the place.",
"type": "integer"
},
"isAllGenresAllowed": {
"description": "Whether all genres allowed in the place.",
"type": "boolean"
},
"allowedGearTypes": {
"description": "Types of Roblox gear that are allowed to exist in the place.\r\nValid values are from amp::AssetCategory",
"type": "array",
"items": {
"format": "int32",
"description": "The types of Gear that can be worn inside a place.\r\nValid values are derived from amp::AssetCategory ['Invalid' = 0, 'Melee' = 8, 'Ranged' = 9, 'Explosive' = 10, 'PowerUps' = 11, 'Navigation' = 12, 'Musical' = 13, 'Social' = 14, 'Building' = 21, 'PersonalTransport' = 22]",
"enum": [0, 8, 9, 10, 11, 12, 13, 14, 21, 22],
"type": "integer"
}
},
"maxPlayersAllowed": {
"format": "int32",
"description": "The maximum allowed number of players for the place that the user can set, based on user roleset.",
"type": "integer"
},
"created": {
"format": "date-time",
"description": "The time place was created.",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "The time place was updated.",
"type": "string"
},
"id": {
"format": "int64",
"description": "Returns the place id.",
"type": "integer"
},
"universeId": {
"format": "int64",
"description": "Returns the id of the place's universe, or null - if the place is not part of a universe.",
"type": "integer"
},
"name": {
"description": "Returns the place name.",
"type": "string"
},
"description": {
"description": "Returns the place description.",
"type": "string"
},
"isRootPlace": {
"description": "Returns whether this place is the root place.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.PlaytesterEligibility": {
"description": "Whether one candidate user can currently be added as a private playtester.",
"type": "object",
"properties": {
"userId": {
"format": "int64",
"description": "The candidate user id.",
"type": "integer"
},
"isEligible": {
"description": "Whether the candidate is eligible.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.PlaytesterEligibilityResponse": {
"description": "Per-user add eligibility for private playtester candidates.",
"type": "object",
"properties": {
"playtesters": {
"description": "The per-user eligibility results.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.PlaytesterEligibility"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.PlaytestersRequest": {
"description": "Request model for adding or removing playtesters.",
"type": "object",
"properties": {
"playtesters": {
"description": "The user ids to add or remove as playtesters for this universe.",
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.PlaytestersResponse": {
"description": "Response model for playtester list endpoints.",
"type": "object",
"properties": {
"playtesters": {
"description": "The user ids that are playtesters for this universe.",
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.PrivateServerDetailsResponse": {
"description": "Model for private server details responses from the UniverseSettings controller.",
"type": "object",
"properties": {
"isEnabled": {
"description": "Whether or not VIP servers are enabled on this universe.",
"type": "boolean"
},
"price": {
"format": "int64",
"description": "The price of the VIP server.",
"type": "integer"
},
"activeServersCount": {
"format": "int64",
"description": "The number of active VIP servers for this universe. A negative value indicates at least this many exist (i.e. -100 means 100+ active private servers).",
"type": "integer"
},
"activeSubscriptionsCount": {
"format": "int64",
"description": "The number of active VIP server subscriptions. A negative value indicates at least this many exist (i.e. -100 means 100+ active subscriptions).",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.Response.TeamCreateSettingsResponse": {
"description": "Team create settings",
"type": "object",
"properties": {
"isEnabled": {
"description": "Whether or not the universe should be enabled for team create",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.TeamCreateMembershipRequest": {
"description": "Request model for a TeamCreate membership",
"type": "object",
"properties": {
"userId": {
"format": "int64",
"description": "The id of the user.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UniverseIdPermissionsModel": {
"description": "A model containing information about a universe permissions",
"type": "object",
"properties": {
"universeId": {
"format": "int64",
"description": "The universe Id these permissions reference",
"type": "integer"
},
"canManage": {
"description": "Determines whether or not consumer can manage the target universe",
"type": "boolean"
},
"canCloudEdit": {
"description": "Determines whether or not consumer can cloud the target universe\r\nThis is only nullable/optional in the context of https://develop.roblox.com/docs#!/Universes/get_v1_universes_universeId_context_permissions endpoint which is consumed only internally. It should be computed and set for all other usages.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UniverseModel": {
"description": "Represents a universe in API endpoint results.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The universe Id.",
"type": "integer"
},
"name": {
"description": "The name of the universe",
"type": "string"
},
"description": {
"description": "The description of the universe",
"type": "string"
},
"isArchived": {
"description": "Is this universe archived",
"type": "boolean"
},
"rootPlaceId": {
"format": "int64",
"description": "The universe's root place id",
"type": "integer"
},
"isActive": {
"description": "Is this universe active",
"type": "boolean"
},
"privacyType": {
"description": "The universe's privacy type.",
"type": "string"
},
"creatorType": {
"description": "The creator type, either \"User\" or \"Group\"",
"type": "string"
},
"creatorTargetId": {
"format": "int64",
"description": "The id of the user or group that created this universe.",
"type": "integer"
},
"creatorName": {
"description": "The name of the creator of the universe.",
"type": "string"
},
"created": {
"format": "date-time",
"description": "The created System.DateTime",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "The updated System.DateTime",
"type": "string"
},
"audiences": {
"description": "The audiences this universe is visible to (e.g. Editors, PlayTesters, Friends, Public).\r\nAlways non-null; may be empty when audience visibility has not been configured.",
"type": "array",
"items": {
"format": "int32",
"description": " ['Invalid' = 0, 'Editors' = 1, 'PlayTesters' = 2, 'Friends' = 3, 'Public' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UniverseModerationPolicyStatus": {
"description": "Represents a universe moderation policy status",
"type": "object",
"properties": {
"region": {
"format": "int32",
"description": "The region policy label ['Unknown' = 0, 'China' = 1]",
"enum": [0, 1],
"type": "integer"
},
"status": {
"description": "The status of the universe",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UniversePermissionsModel": {
"description": "A model containing information about a universe permissions",
"type": "object",
"properties": {
"canManage": {
"description": "Determines whether or not consumer can manage the target universe",
"type": "boolean"
},
"canCloudEdit": {
"description": "Determines whether or not consumer can cloud the target universe\r\nThis is only nullable/optional in the context of https://develop.roblox.com/docs#!/Universes/get_v1_universes_universeId_context_permissions endpoint which is consumed only internally. It should be computed and set for all other usages.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UniverseSettingsRequest": {
"description": "Model for UniverseSettings patch requests",
"type": "object",
"properties": {
"name": {
"description": "The name of the universe.",
"type": "string"
},
"universeAvatarType": {
"format": "int32",
"description": "Which avatar types are allowed in the universe.",
"enum": [1, 2, 3],
"type": "integer"
},
"universeScaleType": {
"format": "int32",
"description": "Whether custom scales allowed in the universe.",
"enum": [1, 2],
"type": "integer"
},
"universeAnimationType": {
"format": "int32",
"description": "Whether custom animations are allowed in the universe.",
"enum": [1, 2],
"type": "integer"
},
"universeCollisionType": {
"format": "int32",
"description": "What type of collisions are used by the universe.",
"enum": [1, 2],
"type": "integer"
},
"universeBodyType": {
"format": "int32",
"description": "What avatar body types are allowed by the universe.",
"enum": [1, 2],
"type": "integer"
},
"universeJointPositioningType": {
"format": "int32",
"description": "What avatar joint positioning type is allowed by the universe.",
"enum": [1, 2],
"type": "integer"
},
"isArchived": {
"description": "Archive status of the universe.",
"type": "boolean"
},
"isFriendsOnly": {
"description": "Whether game access is limited to friends for user-owned games or group members for group-owned games.",
"type": "boolean"
},
"genre": {
"format": "int32",
"description": "Game genre.",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
"type": "integer"
},
"playableDevices": {
"description": "List of device types this game can be played on.",
"type": "array",
"items": {
"format": "int32",
"description": " ['Computer' = 1, 'Phone' = 2, 'Tablet' = 3, 'Console' = 4, 'VR' = 5, 'TV' = 6]",
"enum": [1, 2, 3, 4, 5, 6],
"type": "integer"
}
},
"isForSale": {
"description": "Whether the game is offered for sale.",
"type": "boolean"
},
"price": {
"format": "int64",
"description": "Price of the game, in Robux.",
"type": "integer"
},
"isMeshTextureApiAccessAllowed": {
"description": "Sets whether access to APIs for mesh and texture is enabled for this universe.",
"type": "boolean"
},
"isRewardedOnDemandAdsAllowed": {
"description": "Set is rewarded on-demand ads are allowed for this universe.",
"type": "boolean"
},
"fiatBasePriceId": {
"description": "Sets the base price of the experience for Fiat purchases.",
"type": "string"
},
"fiatProductChangeType": {
"format": "int32",
"description": "Determines the change type of the Fiat Product Change request.\r\nCan either Activate the product, Update the price, or Deactivate the product.",
"enum": [0, 1, 2, 3],
"type": "integer"
},
"demoModeEnabled": {
"description": "Whether demo mode is enabled for this paid access game.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UniverseSettingsRequestV2": {
"description": "Model for UniverseSettings patch requests",
"type": "object",
"properties": {
"allowPrivateServers": {
"description": "If the universe allows the use of private servers.",
"type": "boolean"
},
"privateServerPrice": {
"format": "int64",
"description": "The price to purchase a private server in robux.",
"type": "integer"
},
"name": {
"description": "The name of the universe.",
"type": "string"
},
"description": {
"description": "The description of the universe.",
"type": "string"
},
"promotionalText": {
"description": "Promotional text for the universe. Empty stores an empty value.",
"type": "string"
},
"universeAvatarType": {
"format": "int32",
"description": "Which avatar types are allowed in the universe.",
"enum": [1, 2, 3],
"type": "integer"
},
"universeAnimationType": {
"format": "int32",
"description": "Whether custom animations are allowed in the universe.",
"enum": [1, 2],
"type": "integer"
},
"universeCollisionType": {
"format": "int32",
"description": "What type of collisions are used by the universe.",
"enum": [1, 2],
"type": "integer"
},
"universeJointPositioningType": {
"format": "int32",
"description": "What avatar joint positioning type is allowed by the universe.",
"enum": [1, 2],
"type": "integer"
},
"engineAvatarSettings": {
"description": "Optional JSON string used to store avatar settings used by the game engine.\r\nWill not be updated if null or empty. To clear settings, set to empty JSON object \"{}\".\r\nNote: This is an experimental field which may be changed or removed in future.",
"type": "string"
},
"isArchived": {
"description": "Archive status of the universe.",
"type": "boolean"
},
"isFriendsOnly": {
"description": "Whether game access is limited to friends for user-owned games or group members for group-owned games.",
"type": "boolean"
},
"genre": {
"format": "int32",
"description": "Game genre.",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
"type": "integer"
},
"playableDevices": {
"description": "List of device types this game can be played on.",
"type": "array",
"items": {
"format": "int32",
"description": " ['Computer' = 1, 'Phone' = 2, 'Tablet' = 3, 'Console' = 4, 'VR' = 5, 'TV' = 6]",
"enum": [1, 2, 3, 4, 5, 6],
"type": "integer"
}
},
"isForSale": {
"description": "Whether the game is offered for sale.",
"type": "boolean"
},
"price": {
"format": "int64",
"description": "Price of the game, in Robux.",
"type": "integer"
},
"universeAvatarAssetOverrides": {
"description": "A list of avatar asset overrides.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Platform.UniverseSettings.UniverseAvatarAssetOverrideResponseModel"
}
},
"universeAvatarMinScales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"universeAvatarMaxScales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"studioAccessToApisAllowed": {
"description": "Whether Studio can access data stores of this universe.",
"type": "boolean"
},
"permissions": {
"$ref": "#/components/schemas/Roblox.UniversePluginPermissionAuthority.Models.UniversePluginPermissions"
},
"optInRegions": {
"description": "A list of opt in region.",
"type": "array",
"items": {
"format": "int32",
"description": "Universe opt in regions ['Unknown' = 0, 'China' = 1]",
"enum": [0, 1],
"type": "integer"
}
},
"optOutRegions": {
"description": "A list of opt out region.",
"type": "array",
"items": {
"format": "int32",
"description": "Universe opt in regions ['Unknown' = 0, 'China' = 1]",
"enum": [0, 1],
"type": "integer"
}
},
"isMeshTextureApiAccessAllowed": {
"description": "Sets whether access to APIs for mesh and texture is enabled for this universe.",
"type": "boolean"
},
"isRewardedOnDemandAdsAllowed": {
"description": "Whether rewarded on-demand ads are allowed for this universe.",
"type": "boolean"
},
"fiatBasePriceId": {
"description": "Sets the base price of the experience for Fiat purchases.",
"type": "string"
},
"fiatProductChangeType": {
"format": "int32",
"description": "Determines the change type of the Fiat Product Change request.\r\nCan either Activate, Update Base Price, or Deactivate.",
"enum": [0, 1, 2, 3],
"type": "integer"
},
"audiences": {
"description": "The audiences this universe should be visible to (e.g. Editors, PlayTesters, Friends, Public).\r\nWhen provided, replaces the universe's existing audience set with the supplied values.",
"type": "array",
"items": {
"format": "int32",
"description": " ['Invalid' = 0, 'Editors' = 1, 'PlayTesters' = 2, 'Friends' = 3, 'Public' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
}
},
"demoModeEnabled": {
"description": "Whether demo mode is enabled for this paid access game.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UniverseSettingsResponse": {
"description": "Model for UniverseSettings controller responses",
"type": "object",
"properties": {
"allowPrivateServers": {
"description": "If the universe allows the use of private servers.",
"type": "boolean"
},
"privateServerPrice": {
"format": "int64",
"description": "The price to purchase a private server in robux.",
"type": "integer"
},
"isMeshTextureApiAccessAllowed": {
"description": "Whether access to APIs for mesh and texture is enabled for this universe.",
"type": "boolean"
},
"isRewardedOnDemandAdsAllowed": {
"description": "Whether rewarded on-demand ads are allowed for this universe.",
"type": "boolean"
},
"id": {
"format": "int64",
"description": "The universe Id.",
"type": "integer"
},
"name": {
"description": "The universe name.",
"type": "string"
},
"promotionalText": {
"description": "Promotional Text for the universe.",
"type": "string"
},
"universeAvatarType": {
"format": "int32",
"description": "Which avatar types are allowed in the universe. ['MorphToR6' = 1, 'PlayerChoice' = 2, 'MorphToR15' = 3]",
"enum": [1, 2, 3],
"type": "integer"
},
"universeScaleType": {
"format": "int32",
"description": "Whether custom scales allowed in the universe. ['NoScales' = 1, 'AllScales' = 2]",
"enum": [1, 2],
"type": "integer"
},
"universeAnimationType": {
"format": "int32",
"description": "Whether custom animations are allowed in the universe. ['Standard' = 1, 'PlayerChoice' = 2]",
"enum": [1, 2],
"type": "integer"
},
"universeCollisionType": {
"format": "int32",
"description": "What type of collisions are used by the universe. ['InnerBox' = 1, 'OuterBox' = 2]",
"enum": [1, 2],
"type": "integer"
},
"universeBodyType": {
"format": "int32",
"description": "What avatar body types are allowed by the universe. ['Standard' = 1, 'PlayerChoice' = 2]",
"enum": [1, 2],
"type": "integer"
},
"universeJointPositioningType": {
"format": "int32",
"description": "What avatar joint positioning is allowed by the universe. ['Standard' = 1, 'ArtistIntent' = 2]",
"enum": [1, 2],
"type": "integer"
},
"isArchived": {
"description": "Archive status of the universe",
"type": "boolean"
},
"isFriendsOnly": {
"description": "Whether game access is limited to friends for user-owned games or group members for group-owned games.",
"type": "boolean"
},
"genre": {
"format": "int32",
"description": "Game genre. ['All' = 0, 'Tutorial' = 1, 'Scary' = 2, 'TownAndCity' = 3, 'War' = 4, 'Funny' = 5, 'Fantasy' = 6, 'Adventure' = 7, 'SciFi' = 8, 'Pirate' = 9, 'FPS' = 10, 'RPG' = 11, 'Sports' = 12, 'Ninja' = 13, 'WildWest' = 14]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
"type": "integer"
},
"playableDevices": {
"description": "List of device types this game can be played on.",
"type": "array",
"items": {
"format": "int32",
"description": " ['Computer' = 1, 'Phone' = 2, 'Tablet' = 3, 'Console' = 4, 'VR' = 5, 'TV' = 6]",
"enum": [1, 2, 3, 4, 5, 6],
"type": "integer"
}
},
"isForSale": {
"description": "Whether the game is offered for sale.",
"type": "boolean"
},
"price": {
"format": "int64",
"description": "Price of the game, in Robux.",
"type": "integer"
},
"isStudioAccessToApisAllowed": {
"description": "Whether studio access to APIs is allowed or not.",
"type": "boolean"
},
"privacyType": {
"description": "Privacy type of the universe.",
"type": "string"
},
"isForSaleInFiat": {
"description": "Whether the game is offered for sale in fiat.",
"type": "boolean"
},
"fiatBasePriceId": {
"description": "The basePriceId for the Fiat product.",
"type": "string"
},
"fiatModerationStatus": {
"format": "int32",
"description": "The current moderation status of the game if it is for sale in fiat. ['Invalid' = 0, 'NotModerated' = 1, 'Pending' = 2, 'Approved' = 3, 'Rejected' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"audiences": {
"description": "The audiences this universe is visible to (e.g. Editors, PlayTesters, Friends, Public).\r\nAlways non-null; may be empty when audience visibility has not been configured.",
"type": "array",
"items": {
"format": "int32",
"description": " ['Invalid' = 0, 'Editors' = 1, 'PlayTesters' = 2, 'Friends' = 3, 'Public' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
}
},
"demoModeEnabled": {
"description": "Whether demo mode is enabled.",
"type": "boolean"
},
"demoModeChangeableAfter": {
"format": "date-time",
"description": "The earliest time at which demo mode can be toggled again (ISO 8601).\r\nNull when no cooldown is active (i.e. demo mode can be changed immediately).",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UniverseSettingsResponseV2": {
"description": "Model for UniverseSettings controller responses",
"type": "object",
"properties": {
"allowPrivateServers": {
"description": "If the universe allows the use of private servers.",
"type": "boolean"
},
"privateServerPrice": {
"format": "int64",
"description": "The price to purchase a private server in robux.",
"type": "integer"
},
"optInRegions": {
"description": "The regions the universe has opted in for",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseModerationPolicyStatus"
}
},
"isMeshTextureApiAccessAllowed": {
"description": "Whether access to APIs for mesh and texture is enabled for this universe.",
"type": "boolean"
},
"isRewardedOnDemandAdsAllowed": {
"description": "Whether rewarded on-demand ads are allowed for this universe.",
"type": "boolean"
},
"id": {
"format": "int64",
"description": "The universe Id.",
"type": "integer"
},
"name": {
"description": "The universe name.",
"type": "string"
},
"description": {
"description": "The universe description.",
"type": "string"
},
"promotionalText": {
"description": "Promotional Text for the universe.",
"type": "string"
},
"universeAvatarType": {
"format": "int32",
"description": "Which avatar types are allowed in the universe. ['MorphToR6' = 1, 'PlayerChoice' = 2, 'MorphToR15' = 3]",
"enum": [1, 2, 3],
"type": "integer"
},
"universeAnimationType": {
"format": "int32",
"description": "Whether custom animations are allowed in the universe. ['Standard' = 1, 'PlayerChoice' = 2]",
"enum": [1, 2],
"type": "integer"
},
"universeCollisionType": {
"format": "int32",
"description": "What type of collisions are used by the universe. ['InnerBox' = 1, 'OuterBox' = 2]",
"enum": [1, 2],
"type": "integer"
},
"universeJointPositioningType": {
"format": "int32",
"description": "What avatar joint positioning is allowed by the universe. ['Standard' = 1, 'ArtistIntent' = 2]",
"enum": [1, 2],
"type": "integer"
},
"engineAvatarSettings": {
"description": "Optional JSON string used to store avatar settings used by the game engine.\r\nNote: This is an experimental field which may be changed or removed in future.",
"type": "string"
},
"isArchived": {
"description": "Archive status of the universe",
"type": "boolean"
},
"isFriendsOnly": {
"description": "Whether game access is limited to friends for user-owned games or group members for group-owned games.",
"type": "boolean"
},
"genre": {
"format": "int32",
"description": "Game genre. ['All' = 0, 'Tutorial' = 1, 'Scary' = 2, 'TownAndCity' = 3, 'War' = 4, 'Funny' = 5, 'Fantasy' = 6, 'Adventure' = 7, 'SciFi' = 8, 'Pirate' = 9, 'FPS' = 10, 'RPG' = 11, 'Sports' = 12, 'Ninja' = 13, 'WildWest' = 14]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],
"type": "integer"
},
"playableDevices": {
"description": "List of device types this game can be played on.",
"type": "array",
"items": {
"format": "int32",
"description": " ['Computer' = 1, 'Phone' = 2, 'Tablet' = 3, 'Console' = 4, 'VR' = 5, 'TV' = 6]",
"enum": [1, 2, 3, 4, 5, 6],
"type": "integer"
}
},
"isForSale": {
"description": "Whether the game is offered for sale.",
"type": "boolean"
},
"price": {
"format": "int64",
"description": "Price of the game, in Robux.",
"type": "integer"
},
"universeAvatarAssetOverrides": {
"description": "A collection of avatar asset settings allowed by the universe.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Platform.UniverseSettings.UniverseAvatarAssetOverrideResponseModel"
}
},
"universeAvatarMinScales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"universeAvatarMaxScales": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Avatar.ScaleModel"
},
"studioAccessToApisAllowed": {
"description": "Whether Studio can access data stores of this universe.",
"type": "boolean"
},
"permissions": {
"$ref": "#/components/schemas/Roblox.UniversePluginPermissionAuthority.Models.UniversePluginPermissions"
},
"isForSaleInFiat": {
"description": "Whether the game is offered for sale in fiat.",
"type": "boolean"
},
"fiatBasePriceId": {
"description": "The basePriceId for the Fiat product.",
"type": "string"
},
"fiatModerationStatus": {
"format": "int32",
"description": "The current moderation status of the game if it is for sale in fiat. ['Invalid' = 0, 'NotModerated' = 1, 'Pending' = 2, 'Approved' = 3, 'Rejected' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"audiences": {
"description": "The audiences this universe is visible to (e.g. Editors, PlayTesters, Friends, Public).\r\nAlways non-null; may be empty when audience visibility has not been configured.",
"type": "array",
"items": {
"format": "int32",
"description": " ['Invalid' = 0, 'Editors' = 1, 'PlayTesters' = 2, 'Friends' = 3, 'Public' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
}
},
"demoModeEnabled": {
"description": "Whether demo mode is enabled.",
"type": "boolean"
},
"demoModeChangeableAfter": {
"format": "date-time",
"description": "The earliest time at which demo mode can be toggled again (ISO 8601).\r\nNull when no cooldown is active (i.e. demo mode can be changed immediately).",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UniverseTeamCreateSettingsModel": {
"description": "Team create settings of a universe",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "Id of the universe.",
"type": "integer"
},
"isEnabled": {
"description": "Whether or not the universe is enabled for team create",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UpdateTeamCreateSettingsRequest": {
"description": "Team create settings request",
"type": "object",
"properties": {
"isEnabled": {
"description": "Whether or not the universe should be enabled for team create",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Develop.Models.UserPublicPublishEligibilityResponse": {
"description": "The result of various checks for a user's eligibility to publish a public universe.",
"type": "object",
"properties": {
"isEligible": {
"description": "The overall result of eligibility.",
"type": "boolean"
},
"hasTransactions": {
"format": "int32",
"description": "Whether user has spent any Robux since 1/1/25, including gift cards. ['Incomplete' = 0, 'NotRequired' = 1, 'Completed' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"idVerified": {
"format": "int32",
"description": "Whether user has completed ID Verification or not. ['Incomplete' = 0, 'NotRequired' = 1, 'Completed' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"hasDevex": {
"format": "int32",
"description": "Whether user is eligible for the developer exchange program. ['Incomplete' = 0, 'NotRequired' = 1, 'Completed' = 2]",
"enum": [0, 1, 2],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.ChromeManifestModel": {
"description": "Chrome Manifest to link GCM project to Chrome browser",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"gcm_sender_id": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.GameUpdateNotificationModel": {
"description": "Model for a game update message to be displayed in notification stream.",
"type": "object",
"properties": {
"universeId": {
"format": "int64",
"description": "ID of the game.",
"type": "integer"
},
"rootPlaceId": {
"format": "int64",
"description": "ID of the game.",
"type": "integer"
},
"createdOn": {
"format": "date-time",
"description": "Creation date of the update message.",
"type": "string"
},
"createdOnKey": {
"description": "Key of Creation date ticks (dynamo table sort key).",
"type": "string"
},
"content": {
"description": "Content of the update message.",
"type": "string"
},
"universeName": {
"description": "Name of the game.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.GetCurrentPushDestinationResponseModel": {
"type": "object",
"properties": {
"destination": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.UserPushDestination"
},
"statusMessage": {
"description": "Message for the success response",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.GetMetadataResponseModel": {
"type": "object",
"properties": {
"metadata": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.PushNotificationClientMetadata"
},
"statusMessage": {
"description": "Message for the success response",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.GetPushDestinationsResponseModel": {
"type": "object",
"properties": {
"destinations": {
"description": "List of destinations for the user push notification",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.UserPushDestination"
}
},
"statusMessage": {
"description": "Message for the success response",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.NotificationStreamEntriesModel": {
"type": "object",
"properties": {
"id": {
"format": "uuid",
"description": "Id of the notification stream entry",
"type": "string"
},
"notificationSourceType": {
"description": "Type of the notification source ['Test' = 0, 'FriendRequestReceived' = 1, 'FriendRequestAccepted' = 2, 'PartyInviteReceived' = 3, 'PartyMemberJoined' = 4, 'ChatNewMessage' = 5, 'PrivateMessageReceived' = 6, 'UserAddedToPrivateServerWhiteList' = 7, 'ConversationUniverseChanged' = 8, 'TeamCreateInvite' = 9, 'GameUpdate' = 10, 'DeveloperMetricsAvailable' = 11, 'GroupJoinRequestAccepted' = 12, 'Sendr' = 13, 'ExperienceInvitation' = 14]",
"enum": [
"Test",
"FriendRequestReceived",
"FriendRequestAccepted",
"PartyInviteReceived",
"PartyMemberJoined",
"ChatNewMessage",
"PrivateMessageReceived",
"UserAddedToPrivateServerWhiteList",
"ConversationUniverseChanged",
"TeamCreateInvite",
"GameUpdate",
"DeveloperMetricsAvailable",
"GroupJoinRequestAccepted",
"Sendr",
"ExperienceInvitation"
],
"type": "string"
},
"eventDate": {
"format": "date-time",
"description": "Datetime when the notification stream entry event had occured",
"type": "string"
},
"timestamp": {
"description": "Relative timestamp for sendr notification stream entry",
"type": "string"
},
"isInteracted": {
"description": "Has the user interacted with the notification stream entry",
"type": "boolean"
},
"metadataCollection": {
"description": "List of metadata objects showing more details related to the notification stream entry",
"type": "array",
"items": {}
},
"eventCount": {
"format": "int64",
"description": "Count of events corresponding to the group of notification stream entry",
"type": "integer"
},
"content": {
"description": "Content object for sendr notification stream entry"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.NotificationUser": {
"type": "object",
"properties": {
"name": {
"description": "Name of the user",
"type": "string"
},
"userId": {
"format": "int64",
"description": "Id of the user",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.PushNotificationClientMetadata": {
"type": "object",
"properties": {
"notificationId": {
"format": "uuid",
"description": "Id for the push client notification",
"type": "string"
},
"type": {
"description": "Type of the push client notification",
"type": "string"
},
"detail": {
"description": "Details corresponding to the notification"
},
"fallbackDelivered": {
"description": "Is fallback delivered for the notification metadata",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.PushNotificationRegistration": {
"type": "object",
"properties": {
"userPushNotificationDestinationId": {
"format": "int64",
"description": "Id of the push notification destination",
"type": "integer"
},
"name": {
"description": "Name of the push Notification destination",
"type": "string"
},
"notificationToken": {
"description": "Notification token",
"type": "string"
},
"application": {
"description": "Notification application\r\nExample : \"Roblox\"",
"type": "string"
},
"platform": {
"description": "Notification platform ['ChromeOnDesktop' = 0, 'AndroidNative' = 1, 'FirefoxOnDesktop' = 2, 'IOSNative' = 3, 'AndroidAmazon' = 4, 'IOSTencent' = 5, 'AndroidTencentService' = 6, 'IOSPushKit' = 7]",
"enum": [
"ChromeOnDesktop",
"AndroidNative",
"FirefoxOnDesktop",
"IOSNative",
"AndroidAmazon",
"IOSTencent",
"AndroidTencentService",
"IOSPushKit"
],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.RegisterAndroidRequestModel": {
"type": "object",
"properties": {
"notificationToken": {
"description": "Token for notification",
"type": "string"
},
"authorizeForUser": {
"description": "Is this call authorized for user",
"type": "boolean"
},
"oldNotificationToken": {
"description": "Old notification token",
"type": "string"
},
"deviceName": {
"description": "Name of the requesting device",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.RegisterIOSNativeRequestModel": {
"type": "object",
"properties": {
"notificationToken": {
"description": "Token for notification",
"type": "string"
},
"destinationIdentifier": {
"description": "Identifier string for the destination",
"type": "string"
},
"authorizeForUser": {
"description": "Is call authorized for user",
"type": "boolean"
},
"oldNotificationToken": {
"description": "Old notification token",
"type": "string"
},
"deviceName": {
"description": "Name of the requesting device",
"type": "string"
},
"isProvisional": {
"description": "True when the client granted iOS provisional authorization (silent, quiet-only)\r\nrather than full authorization. Absent/null is treated as not provisional.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.RegisterIOSPushKitRequestModel": {
"type": "object",
"properties": {
"notificationToken": {
"description": "Token for notification",
"type": "string"
},
"destinationIdentifier": {
"description": "Identifier string for the destination",
"type": "string"
},
"authorizeForUser": {
"description": "Is call authorized for user",
"type": "boolean"
},
"oldNotificationToken": {
"description": "Old notification token",
"type": "string"
},
"deviceName": {
"description": "Name of the requesting device",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.RegistrationResponseModel": {
"type": "object",
"properties": {
"registration": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.PushNotificationRegistration"
},
"statusMessage": {
"description": "Message for the success response",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.ResponseModels.NotificationStreamMetadataResponse": {
"type": "object",
"properties": {
"bannerDismissTimeSpan": {
"format": "int32",
"type": "integer"
},
"signalRDisconnectionResponseInMilliseconds": {
"format": "int64",
"type": "integer"
},
"canLaunchGameFromGameUpdate": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.SuccessResponseModel": {
"type": "object",
"properties": {
"statusMessage": {
"description": "Message for the success response",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.UnreadStreamNotificationsModel": {
"type": "object",
"properties": {
"unreadNotifications": {
"format": "int64",
"description": "Count of unread notifications in the stream",
"type": "integer"
},
"statusMessage": {
"description": "Message for the success response",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Api.Notifications.Models.UserPushDestination": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/Roblox.Api.Notifications.Models.NotificationUser"
},
"name": {
"description": "Name of the destination",
"type": "string"
},
"notificationToken": {
"description": "Token for the corresponding notification",
"type": "string"
},
"supportsUpdateNotifications": {
"description": "Is Update notification feature supported",
"type": "boolean"
},
"userPushNotificationDestinationId": {
"format": "int64",
"description": "Destination Id for the push notification",
"type": "integer"
},
"application": {
"description": "application for the corresponding notification\r\nExample : \"Roblox\"",
"type": "string"
},
"platform": {
"description": "Platform for the corresponding notification ['ChromeOnDesktop' = 0, 'AndroidNative' = 1, 'FirefoxOnDesktop' = 2, 'IOSNative' = 3, 'AndroidAmazon' = 4, 'IOSTencent' = 5, 'AndroidTencentService' = 6, 'IOSPushKit' = 7]",
"enum": [
"ChromeOnDesktop",
"AndroidNative",
"FirefoxOnDesktop",
"IOSNative",
"AndroidAmazon",
"IOSTencent",
"AndroidTencentService",
"IOSPushKit"
],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.AccountLinkParameters": {
"type": "object",
"properties": {
"LinkingPlatform": {
"format": "int32",
"description": " ['Invalid' = 0, 'Xbox' = 1, 'Qq' = 2, 'WeChat' = 3, 'Facebook' = 4, 'RobloxDeveloper' = 5, 'RobloxGroupCreator' = 6, 'Playstation' = 7, 'ExternalProvider' = 8, 'Steam' = 9, 'Example' = 999]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 999],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.AccountPinRequest": {
"type": "object",
"properties": {
"pin": {
"type": "string"
},
"reauthenticationToken": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.AccountPinResponse": {
"type": "object",
"properties": {
"unlockedUntil": {
"format": "double",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.AccountPinStatusResponse": {
"type": "object",
"properties": {
"isEnabled": {
"type": "boolean"
},
"unlockedUntil": {
"format": "double",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.AccountUpgradeRequest": {
"type": "object",
"properties": {
"upgradeType": {
"format": "int32",
"description": " ['Unknown' = 0, 'Pioneer' = 1, 'OAuth' = 2, 'Guest' = 3]",
"enum": [0, 1, 2, 3],
"type": "integer"
},
"username": {
"type": "string"
},
"password": {
"type": "string"
},
"birthday": {
"format": "date-time",
"type": "string"
},
"email": {
"type": "string"
},
"gender": {
"format": "int32",
"enum": [1, 2, 3],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.AccountUpgradeResponse": {
"type": "object",
"properties": {
"userId": {
"format": "int64",
"type": "integer"
},
"username": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.AuthMetaDataResponse": {
"type": "object",
"properties": {
"cookieLawNoticeTimeout": {
"format": "int32",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.AuthMethodsMetadataResponse": {
"type": "object",
"properties": {
"isEligibleForALSignup": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.EmailValidationResponse": {
"type": "object",
"properties": {
"isEmailValid": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.ForgotPasswordUserResponse": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Users.LegacyUserResponse"
},
"ticket": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.LoginMethodModel": {
"type": "object",
"properties": {
"method": {
"format": "int32",
"description": " ['EmailOtp' = 0, 'Passkey' = 1, 'Password' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"priority": {
"format": "int32",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.LoginRequest": {
"type": "object",
"properties": {
"ctype": {
"format": "int32",
"description": " ['Email' = 0, 'Username' = 1, 'PhoneNumber' = 2, 'EmailOtpSessionToken' = 3, 'AuthToken' = 4, 'Passkey' = 5, 'AsUser' = 6, 'TwoStepVerification' = 7, 'XboxLive' = 8, 'PlatformLive' = 9, 'MagicLink' = 10]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
"type": "integer"
},
"cvalue": {
"type": "string"
},
"password": {
"type": "string"
},
"userId": {
"format": "int64",
"type": "integer"
},
"securityQuestionSessionId": {
"type": "string"
},
"securityQuestionRedemptionToken": {
"type": "string"
},
"secureAuthenticationIntent": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.SecureAuthenticationIntentModel"
},
"accountBlob": {
"type": "string"
},
"accountLinkParameters": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountLinkParameters"
},
"captchaId": {
"type": "string"
},
"captchaToken": {
"type": "string"
},
"captchaProvider": {
"type": "string"
},
"challengeId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.LoginResponse": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Users.SkinnyUserResponse"
},
"twoStepVerificationData": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.TwoStepVerificationSentResponse"
},
"identityVerificationLoginTicket": {
"type": "string"
},
"isBanned": {
"type": "boolean"
},
"accountBlob": {
"type": "string"
},
"shouldUpdateEmail": {
"type": "boolean"
},
"recoveryEmail": {
"type": "string"
},
"passkeyRegistrationSucceeded": {
"type": "boolean"
},
"shouldAutoLoginFromRecovery": {
"type": "boolean"
},
"shouldPrompt2svRemoval": {
"type": "boolean"
},
"shouldPromptPasskeyAddition": {
"type": "boolean"
},
"shouldPromptCredentialInvalidation": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.MetadataResponse": {
"type": "object",
"properties": {
"isUpdateUsernameEnabled": {
"type": "boolean"
},
"ftuxAvatarAssetMap": {
"type": "string"
},
"IsEmailUpsellAtLogoutEnabled": {
"type": "boolean"
},
"ShouldFetchEmailUpsellIXPValuesAtLogout": {
"type": "boolean"
},
"IsAccountRecoveryPromptEnabled": {
"type": "boolean"
},
"IsContactMethodRequiredAtSignup": {
"type": "boolean"
},
"IsUserAgreementsSignupIntegrationEnabled": {
"type": "boolean"
},
"IsPasswordRequiredForUsernameChange": {
"type": "boolean"
},
"IsPasskeyFeatureEnabled": {
"type": "boolean"
},
"IsAltBrowserTracker": {
"type": "boolean"
},
"IsLoginRedirectPageEnabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.PasswordChangeModel": {
"type": "object",
"properties": {
"currentPassword": {
"type": "string"
},
"newPassword": {
"type": "string"
},
"secureAuthenticationIntent": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.SecureAuthenticationIntentModel"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.PasswordResetMetadataResponse": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Users.LegacyUserResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.PasswordResetModel": {
"type": "object",
"properties": {
"targetType": {
"format": "int32",
"description": " ['Email' = 0, 'PhoneNumber' = 1, 'RecoverySessionID' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"ticket": {
"type": "string"
},
"userId": {
"format": "int64",
"type": "integer"
},
"password": {
"type": "string"
},
"passwordRepeated": {
"type": "string"
},
"twoStepVerificationChallengeId": {
"type": "string"
},
"twoStepVerificationToken": {
"type": "string"
},
"accountBlob": {
"type": "string"
},
"secureAuthenticationIntent": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.SecureAuthenticationIntentModel"
},
"newEmail": {
"type": "string"
},
"passkeySessionId": {
"type": "string"
},
"passkeyRegistrationResponse": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.PasswordResetVerificationRequest": {
"type": "object",
"properties": {
"targetType": {
"format": "int32",
"description": " ['Email' = 0, 'PhoneNumber' = 1, 'RecoverySessionID' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"nonce": {
"type": "string"
},
"code": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.PasswordResetVerificationResponse": {
"type": "object",
"properties": {
"userTickets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.ForgotPasswordUserResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.PasswordStatusResponse": {
"type": "object",
"properties": {
"valid": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.PasswordValidationModel": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.PasswordValidationResponse": {
"type": "object",
"properties": {
"code": {
"format": "int32",
"description": " ['ValidPassword' = 0, 'WeakPasswordError' = 1, 'PasswordLengthError' = 2, 'PasswordSameAsUsernameError' = 3, 'ForbiddenPasswordError' = 4, 'DumbStringsError' = 5]",
"enum": [0, 1, 2, 3, 4, 5],
"type": "integer"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.ProviderInfoModel": {
"type": "object",
"properties": {
"provider": {
"type": "string"
},
"identifier": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.RecommendedUsernameFromDisplayNameRequest": {
"type": "object",
"properties": {
"displayName": {
"type": "string"
},
"birthday": {
"format": "date-time",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.RecommendedUsernameRequest": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"birthday": {
"format": "date-time",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.RecommendedUsernameResponse": {
"type": "object",
"properties": {
"didGenerateNewUsername": {
"type": "boolean"
},
"suggestedUsernames": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.RecoverUsernameRequest": {
"type": "object",
"properties": {
"targetType": {
"format": "int32",
"description": " ['Email' = 0, 'PhoneNumber' = 1, 'RecoverySessionID' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"target": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.RecoverUsernameResponse": {
"type": "object",
"properties": {
"transmissionType": {
"format": "int32",
"enum": [0, 1],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.RecoveryMetadataResponse": {
"type": "object",
"properties": {
"isOnPhone": {
"type": "boolean"
},
"codeLength": {
"format": "int32",
"type": "integer"
},
"isPhoneFeatureEnabledForUsername": {
"type": "boolean"
},
"isPhoneFeatureEnabledForPassword": {
"type": "boolean"
},
"isBedev2CaptchaEnabledForPasswordReset": {
"type": "boolean"
},
"isUsernameRecoveryDeprecated": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.ReferralDataModel": {
"type": "object",
"properties": {
"acquisitionTime": {
"format": "date-time",
"type": "string"
},
"acquisitionReferrer": {
"type": "string"
},
"medium": {
"type": "string"
},
"source": {
"type": "string"
},
"campaign": {
"type": "string"
},
"adGroup": {
"type": "string"
},
"keyword": {
"type": "string"
},
"matchType": {
"type": "string"
},
"sendInfo": {
"type": "boolean"
},
"requestSessionId": {
"type": "string"
},
"offerId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.AuditContentValue": {
"type": "object",
"properties": {
"translationKey": {
"type": "string"
},
"translationNamespace": {
"type": "string"
},
"translatedSourceString": {
"type": "string"
},
"parameters": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.AuditSystemContent": {
"type": "object",
"properties": {
"capturedAuditContent": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.AuditContentValue"
}
},
"additionalAuditContent": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.DeletePasskeysRequest": {
"type": "object",
"properties": {
"credentialIDs": {
"type": "array",
"items": {
"type": "string"
}
},
"credentialNicknames": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.ExternalAccessRequest": {
"type": "object",
"properties": {
"authenticationProof": {
"type": "string"
},
"identityProviderPlatformType": {
"format": "int32",
"description": " ['Undefined' = 0, 'Xbox' = 1, 'Playstation' = 2, 'Web' = 3, 'Steam' = 4, 'Android' = 5, 'Ios' = 6, 'MacOs' = 7]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"postAuthenticationIntentId": {
"type": "string"
},
"additionalInfoPayload": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.ExternalLoginAndLinkRequest": {
"type": "object",
"properties": {
"ctype": {
"format": "int32",
"description": " ['Email' = 0, 'Username' = 1, 'PhoneNumber' = 2, 'EmailOtpSessionToken' = 3, 'AuthToken' = 4, 'Passkey' = 5, 'AsUser' = 6, 'TwoStepVerification' = 7, 'XboxLive' = 8, 'PlatformLive' = 9, 'MagicLink' = 10]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
"type": "integer"
},
"cvalue": {
"type": "string"
},
"password": {
"type": "string"
},
"authenticationProof": {
"type": "string"
},
"IdentityProviderPlatformType": {
"format": "int32",
"description": " ['Undefined' = 0, 'Xbox' = 1, 'Playstation' = 2, 'Web' = 3, 'Steam' = 4, 'Android' = 5, 'Ios' = 6, 'MacOs' = 7]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"additionalInfoPayload": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.ExternalLoginRequest": {
"type": "object",
"properties": {
"identityProvider": {
"format": "int32",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 999],
"type": "integer"
},
"additionalData": {
"type": "object",
"additionalProperties": {}
},
"authenticationProof": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.ExternalSignupRequest": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
},
"birthday": {
"format": "date-time",
"type": "string"
},
"locale": {
"type": "string"
},
"authenticationProof": {
"type": "string"
},
"IdentityProviderPlatformType": {
"format": "int32",
"description": " ['Undefined' = 0, 'Xbox' = 1, 'Playstation' = 2, 'Web' = 3, 'Steam' = 4, 'Android' = 5, 'Ios' = 6, 'MacOs' = 7]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"additionalInfoPayload": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.ExternalUnlinkRequest": {
"type": "object",
"properties": {
"IdentityProviderPlatformType": {
"format": "int32",
"description": " ['Undefined' = 0, 'Xbox' = 1, 'Playstation' = 2, 'Web' = 3, 'Steam' = 4, 'Android' = 5, 'Ios' = 6, 'MacOs' = 7]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"additionalInfoPayload": {
"type": "object",
"additionalProperties": {}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.FinishARPreAuthPasskeyRegistrationRequest": {
"type": "object",
"properties": {
"recoverySession": {
"type": "string"
},
"passkeySessionId": {
"type": "string"
},
"passkeyRegistrationResponse": {
"type": "string"
},
"userId": {
"format": "int64",
"type": "integer"
},
"isPostRecovery": {
"type": "boolean"
},
"source": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.FinishPasskeyPreauthRegistrationRequest": {
"type": "object",
"properties": {
"sessionId": {
"type": "string"
},
"registrationResponse": {
"type": "string"
},
"source": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.FinishPasskeyRegistrationRequest": {
"type": "object",
"properties": {
"sessionId": {
"type": "string"
},
"credentialNickname": {
"type": "string"
},
"attestationResponse": {
"type": "string"
},
"source": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.IdentityVerificationLoginRequest": {
"type": "object",
"properties": {
"loginTicket": {
"type": "string"
},
"resultToken": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.InitializeLoginRequest": {
"required": ["ctype", "cvalue"],
"type": "object",
"properties": {
"ctype": {
"format": "int32",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
"type": "integer"
},
"cvalue": {
"minLength": 1,
"type": "string"
},
"captchaId": {
"type": "string"
},
"captchaToken": {
"type": "string"
},
"captchaProvider": {
"type": "string"
},
"challengeId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.ListPasskeysRequest": {
"type": "object",
"properties": {
"all": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.LogoutFromAllSessionsAndReauthenticateRequest": {
"type": "object",
"properties": {
"SecureAuthenticationIntent": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.SecureAuthenticationIntentModel"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.LogoutV3Request": {
"type": "object",
"properties": {
"logoutReason": {
"type": "string"
},
"url": {
"type": "string"
},
"userId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.OtpSessionModel": {
"type": "object",
"properties": {
"otpSessionToken": {
"type": "string"
},
"otpContactType": {
"format": "int32",
"description": " ['Unset' = 1, 'Email' = 2]",
"enum": [1, 2],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.RenamePasskeyRequest": {
"type": "object",
"properties": {
"credentialID": {
"type": "string"
},
"newNickname": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.SecureAuthenticationIntentModel": {
"type": "object",
"properties": {
"clientPublicKey": {
"type": "string"
},
"clientEpochTimestamp": {
"format": "int64",
"type": "integer"
},
"saiSignature": {
"type": "string"
},
"serverNonce": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.StartAuthenticationByUserRequest": {
"required": ["ctype", "cvalue"],
"type": "object",
"properties": {
"ctype": {
"format": "int32",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
"type": "integer"
},
"cvalue": {
"minLength": 1,
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.StartPasskeyPreauthRegistrationRequest": {
"type": "object",
"properties": {
"username": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Request.StartPasskeyRegistrationRequest": {
"type": "object",
"properties": {
"isSilentUpgrade": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.ExternalIdentityGateway.ExternalIdentityAccessResponse": {
"type": "object",
"properties": {
"placeId": {
"format": "int64",
"type": "integer"
},
"isolationContext": {
"type": "string"
},
"launchData": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.ExternalIdentityGateway.ExternalIdentityNonceResponse": {
"type": "object",
"properties": {
"nonce": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.ExternalIdentityGateway.ExternalLoginResponse": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.GetClientAssertionResponse": {
"type": "object",
"properties": {
"clientAssertion": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.InitializeLoginResponse": {
"type": "object",
"properties": {
"loginMethods": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.LoginMethodModel"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.ListPasskeyCredentialResponse": {
"type": "object",
"properties": {
"credentials": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Response.PasskeyCredential"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.PasskeyCredential": {
"type": "object",
"properties": {
"nickname": {
"type": "string"
},
"credentialID": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.SilentUpgradeEligibilityResponse": {
"type": "object",
"properties": {
"suEligibility": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.StartAuthenticationByUserResponse": {
"type": "object",
"properties": {
"authenticationOptions": {
"type": "string"
},
"sessionId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.StartAuthenticationResponse": {
"type": "object",
"properties": {
"authenticationOptions": {
"type": "string"
},
"sessionId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.StartPasskeyPreauthRegistrationResponse": {
"type": "object",
"properties": {
"creationOptions": {
"type": "string"
},
"sessionId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.Response.StartPasskeyRegistrationResponse": {
"type": "object",
"properties": {
"creationOptions": {
"type": "string"
},
"sessionId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.RevertAccountInfoResponse": {
"type": "object",
"properties": {
"isTwoStepVerificationEnabled": {
"type": "boolean"
},
"isEmailVerified": {
"type": "boolean"
},
"isEmailChanged": {
"type": "boolean"
},
"isPhoneVerified": {
"type": "boolean"
},
"userId": {
"format": "int64",
"type": "integer"
},
"username": {
"type": "string"
},
"ticket": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.RevertAccountSubmitRequest": {
"type": "object",
"properties": {
"UserId": {
"format": "int64",
"type": "integer"
},
"NewPassword": {
"type": "string"
},
"NewPasswordRepeated": {
"type": "string"
},
"Ticket": {
"type": "string"
},
"TwoStepVerificationChallengeId": {
"type": "string"
},
"TwoStepVerificationToken": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.SendResetPasswordRequest": {
"type": "object",
"properties": {
"targetType": {
"format": "int32",
"description": " ['Email' = 0, 'PhoneNumber' = 1, 'RecoverySessionID' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"target": {
"type": "string"
},
"captchaId": {
"type": "string"
},
"captchaToken": {
"type": "string"
},
"captchaProvider": {
"type": "string"
},
"challengeId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.SendResetPasswordResponse": {
"type": "object",
"properties": {
"nonce": {
"type": "string"
},
"transmissionType": {
"format": "int32",
"description": " ['Sms' = 0, 'Email' = 1]",
"enum": [0, 1],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.SignupRequest": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
},
"gender": {
"format": "int32",
"description": " ['Unknown' = 1, 'Male' = 2, 'Female' = 3]",
"enum": [1, 2, 3],
"type": "integer"
},
"birthday": {
"format": "date-time",
"type": "string"
},
"displayName": {
"type": "string"
},
"isTosAgreementBoxChecked": {
"type": "boolean"
},
"signupType": {
"format": "int32",
"description": " ['Regular' = 0, 'Express' = 1]",
"enum": [0, 1],
"type": "integer"
},
"email": {
"type": "string"
},
"locale": {
"type": "string"
},
"assetIds": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
},
"bodyColorId": {
"format": "int32",
"type": "integer"
},
"bodyTypeScale": {
"format": "double",
"type": "number"
},
"headScale": {
"format": "double",
"type": "number"
},
"heightScale": {
"format": "double",
"type": "number"
},
"widthScale": {
"format": "double",
"type": "number"
},
"proportionScale": {
"format": "double",
"type": "number"
},
"referralData": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.ReferralDataModel"
},
"agreementIds": {
"type": "array",
"items": {
"type": "string"
}
},
"identityVerificationResultToken": {
"type": "string"
},
"secureAuthenticationIntent": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.SecureAuthenticationIntentModel"
},
"otpSession": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.OtpSessionModel"
},
"dataToken": {
"type": "string"
},
"accountBlob": {
"type": "string"
},
"passkeySessionId": {
"type": "string"
},
"passkeyRegistrationResponse": {
"type": "string"
},
"accountLinkParameters": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountLinkParameters"
},
"auditSystemContent": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.AuditSystemContent"
},
"captchaId": {
"type": "string"
},
"captchaToken": {
"type": "string"
},
"captchaProvider": {
"type": "string"
},
"challengeId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.SignupResponse": {
"type": "object",
"properties": {
"userId": {
"format": "int64",
"type": "integer"
},
"starterPlaceId": {
"format": "int64",
"type": "integer"
},
"returnUrl": {
"type": "string"
},
"accountBlob": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.SocialAuthenticationDisconnectRequest": {
"type": "object",
"properties": {
"Password": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.SocialProvidersResponse": {
"type": "object",
"properties": {
"providers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.ProviderInfoModel"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.TwoStepVerificationSentResponse": {
"type": "object",
"properties": {
"mediaType": {
"format": "int32",
"description": " ['Email' = 0, 'SMS' = 1, 'Authenticator' = 2, 'RecoveryCode' = 3, 'SecurityKey' = 4, 'CrossDevice' = 5, 'Password' = 6, 'Passkey' = 7]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"ticket": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.TwoStepVerificationV3LoginResponse": {
"type": "object",
"properties": {
"identityVerificationLoginTicket": {
"type": "string"
},
"accountBlob": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.UsernameChangePriceResponse": {
"type": "object",
"properties": {
"priceInRobux": {
"format": "int64",
"type": "integer"
},
"basePriceInRobux": {
"format": "int64",
"type": "integer"
},
"isFreeUsernameChange": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.UsernameChangeRequest": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.UsernameValidationRequest": {
"type": "object",
"properties": {
"username": {
"type": "string"
},
"birthday": {
"format": "date-time",
"type": "string"
},
"context": {
"format": "int32",
"enum": [0, 1, 2],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.UsernameValidationResponse": {
"type": "object",
"properties": {
"code": {
"format": "int32",
"description": " ['ValidUsername' = 0, 'AlreadyInUseError' = 1, 'ModerationError' = 2, 'InvalidLengthError' = 3, 'StartsOrEndsWithUnderscoreError' = 4, 'TooManyUnderscoresError' = 5, 'ContainsSpacesError' = 6, 'InvalidCharactersError' = 7, 'ContainsPiiError' = 10, 'ContainsReservedUsernameError' = 12]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 10, 12],
"type": "integer"
},
"message": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.UsernamesResponse": {
"type": "object",
"properties": {
"usernames": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.XboxCollectionsOfUserResponse": {
"type": "object",
"properties": {
"Users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.XboxUserModel"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.XboxConnectionModel": {
"type": "object",
"properties": {
"hasConnectedXboxAccount": {
"type": "boolean"
},
"gamertag": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.XboxLoginConsecutiveDaysResponse": {
"type": "object",
"properties": {
"count": {
"format": "int32",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.XboxTranslateRequest": {
"type": "object",
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.Models.XboxUserModel": {
"type": "object",
"properties": {
"Id": {
"type": "string"
},
"UserId": {
"format": "int64",
"type": "integer"
},
"Username": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Authentication.Api.TwoStepVerificationLoginRequest": {
"type": "object",
"properties": {
"challengeId": {
"type": "string"
},
"verificationToken": {
"type": "string"
},
"rememberDevice": {
"type": "boolean"
},
"secureAuthenticationIntent": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.Request.SecureAuthenticationIntentModel"
},
"accountBlob": {
"type": "string"
},
"accountLinkParameters": {
"$ref": "#/components/schemas/Roblox.Authentication.Api.Models.AccountLinkParameters"
}
},
"additionalProperties": false
},
"Roblox.Badges.Api.BadgeMetadataResponse": {
"description": "Metadata about badges.",
"type": "object",
"properties": {
"badgeCreationPrice": {
"format": "int64",
"description": "The cost in Robux for creating a new badge.",
"type": "integer"
},
"maxBadgeNameLength": {
"format": "int32",
"description": "The max length for a badge name.",
"type": "integer"
},
"maxBadgeDescriptionLength": {
"format": "int32",
"description": "The max length for a badge description.",
"type": "integer"
},
"defaultBadgeIconImageId": {
"format": "int64",
"description": "The asset ID of the curated default badge icon used when a badge is created without an\r\nuploaded icon file, or `0` when the default badge icon feature is disabled.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Badges.Api.BadgeResponse": {
"description": "A response containing badge information.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The badge Id.",
"type": "integer"
},
"name": {
"description": "The name of the badge.",
"type": "string"
},
"description": {
"description": "The badge description.",
"type": "string"
},
"displayName": {
"description": "The localized name of the badge.",
"type": "string"
},
"displayDescription": {
"description": "The localized badge description.",
"type": "string"
},
"enabled": {
"description": "Whether or not the badge is enabled.",
"type": "boolean"
},
"iconImageId": {
"format": "int64",
"description": "The badge icon asset Id.",
"type": "integer"
},
"displayIconImageId": {
"format": "int64",
"description": "The localized badge icon asset Id.",
"type": "integer"
},
"created": {
"format": "date-time",
"description": "When the badge was created.",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "When the badge was updated.",
"type": "string"
},
"statistics": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Badges.BadgeAwardStatisticsResponse"
},
"awardingUniverse": {
"$ref": "#/components/schemas/Roblox.Badges.Api.UniverseResponse"
}
},
"additionalProperties": false
},
"Roblox.Badges.Api.UniverseResponse": {
"description": "A response containing universe information.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The universe Id.",
"type": "integer"
},
"name": {
"description": "The universe name.",
"type": "string"
},
"rootPlaceId": {
"format": "int64",
"description": "The description of the universe.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Badges.Api.UpdateBadgeRequest": {
"description": "A request model used for updating badge information.",
"type": "object",
"properties": {
"name": {
"description": "The new badge name.",
"type": "string"
},
"description": {
"description": "The new badge description.",
"type": "string"
},
"enabled": {
"description": "The new enabled state of the badge.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.BundleCreatorModel": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"type": {
"type": "string",
"readOnly": true
},
"hasVerifiedBadge": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.BundleDetailsModel": {
"description": "The hydration model representing a bundle on marketplace. Returned in all bundles controller endpoints.\nBound in the game-engine MarketplaceService.GetProductInfo method.\nhttps://create.roblox.com/docs/reference/engine/classes/MarketplaceService#GetProductInfo.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"bundleType": {
"type": "string"
},
"isRecolorable": {
"type": "boolean"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleItemDetailModel"
}
},
"creator": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleCreatorModel"
},
"product": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleProductModel"
},
"itemRestrictions": {
"type": "array",
"items": {
"format": "int32",
"description": "Catalog item restriction enum. ['ThirteenPlus' = 1, 'LimitedUnique' = 2, 'Limited' = 3, 'BuildersClub' = 4, 'TurboBuildersClub' = 5, 'OutrageousBuildersClub' = 6, 'Rthro' = 7, 'Live' = 8, 'Collectible' = 9]",
"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9],
"type": "integer"
}
},
"collectibleItemDetail": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.CollectibleItemDetail"
},
"discountInformation": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.DiscountInformation"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.BundleItemDetailModel": {
"type": "object",
"properties": {
"owned": {
"type": "boolean"
},
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"supportsHeadShapes": {
"description": "Whether the bundle item supports head shapes.",
"type": "boolean"
},
"assetType": {
"format": "int32",
"description": "The asset type of the bundle item, if it's an asset.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.BundleItemDetailModelV2": {
"description": "The is the beta (non game-engine) version of BundleItemDetailModel for internal consumption on Roblox web and universal-app.",
"type": "object",
"properties": {
"owned": {
"type": "boolean"
},
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"supportsHeadShapes": {
"description": "Whether the bundle item supports head shapes.",
"type": "boolean"
},
"assetType": {
"format": "int32",
"description": "The asset type of the bundle item, if it's an asset.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.BundleProductModel": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"type": {
"type": "string"
},
"isPublicDomain": {
"type": "boolean"
},
"isForSale": {
"type": "boolean"
},
"priceInRobux": {
"format": "int64",
"type": "integer"
},
"isFree": {
"type": "boolean"
},
"noPriceText": {
"type": "string"
},
"premiumPricing": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.PremiumPricingModel"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.CatalogSearchDetailedResponseItem": {
"description": "Game-engine version of fully hydrated asset or bundle in catalog marketplace.\nDocumented here: https://create.roblox.com/docs/reference/engine/classes/AvatarEditorService#SearchCatalog.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The Item Id.",
"type": "integer"
},
"itemType": {
"format": "int32",
"description": "The Roblox.Catalog.Api.CatalogSearchDetailedResponseItem.ItemType item type. ['Asset' = 1, 'Bundle' = 2]",
"enum": [1, 2],
"type": "integer"
},
"assetType": {
"format": "int32",
"description": "The Roblox.Platform.Assets.AssetType serialized if item is an asset.",
"enum": [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21, 22,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
91, 92, 93, 94, 95, 96
],
"type": "integer"
},
"bundleType": {
"format": "int32",
"description": "The Roblox.Platform.Bundles.Core.BundleType serialized if item is a bundle.",
"enum": [1, 2, 3, 4],
"type": "integer"
},
"isRecolorable": {
"description": "Gets or sets the property whether a bundle is recolorable or not. Not serialized for asset.",
"type": "boolean"
},
"name": {
"description": "The item name.",
"type": "string"
},
"description": {
"description": "The item description.",
"type": "string"
},
"productId": {
"format": "int64",
"description": "The product id of corresponding item.",
"type": "integer"
},
"bundledItems": {
"description": "The System.Collections.Generic.IEnumerable`1 contained in the bundle, serialized if item is a bundle.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleItemDetailModel"
}
},
"itemStatus": {
"description": "The System.Collections.Generic.IEnumerable`1 if item has Roblox.Catalog.Api.CatalogItemStatus.",
"type": "array",
"items": {
"format": "int32",
"description": "Catalog item status enum. ['New' = 1, 'Sale' = 2, 'SaleTimer' = 7, 'IsFAE' = 8]",
"enum": [1, 2, 7, 8],
"type": "integer"
}
},
"itemRestrictions": {
"description": "The System.Collections.Generic.IEnumerable`1 if item has Roblox.Catalog.Api.CatalogItemRestriction.",
"type": "array",
"items": {
"format": "int32",
"description": "Catalog item restriction enum. ['ThirteenPlus' = 1, 'LimitedUnique' = 2, 'Limited' = 3, 'BuildersClub' = 4, 'TurboBuildersClub' = 5, 'OutrageousBuildersClub' = 6, 'Rthro' = 7, 'Live' = 8, 'Collectible' = 9]",
"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9],
"type": "integer"
}
},
"creatorHasVerifiedBadge": {
"description": "The verified status of a creator.",
"type": "boolean"
},
"creatorType": {
"format": "int32",
"description": "The Roblox.Catalog.Api.CatalogSearchDetailedResponseItem.CreatorType of the item's creator.",
"enum": [0, 1, 2],
"type": "integer"
},
"creatorTargetId": {
"format": "int64",
"description": "The creator id of the item's creator.",
"type": "integer"
},
"creatorName": {
"description": "The creator name of the item's creator.",
"type": "string"
},
"price": {
"format": "int64",
"description": "The item's price.",
"type": "integer"
},
"lowestPrice": {
"format": "int64",
"description": "The item's lowest price, only if the item is resellable and there are resellers.",
"type": "integer"
},
"lowestResalePrice": {
"format": "int64",
"description": "The item's lowest resale price, only if the item is resellable and there are resellers, including current user.",
"type": "integer"
},
"priceStatus": {
"description": "The localized string item status if the item's price should not be displayed.",
"type": "string"
},
"unitsAvailableForConsumption": {
"format": "int64",
"description": "The number of items in stock, only if the item is resellable and is limitedEdition.",
"type": "integer"
},
"favoriteCount": {
"format": "int64",
"description": "The number of times the item has been favorited.",
"type": "integer"
},
"offSaleDeadline": {
"format": "date-time",
"description": "When the item will go off sale, if the item has an off deadline.",
"type": "string"
},
"collectibleItemId": {
"description": "The item's collectible item id.\nIt is an UUID if a item is collectible type. Otherwise, it is null.",
"type": "string"
},
"totalQuantity": {
"format": "int64",
"description": "The collectible or limited-unique item's total quantity of unique instances.",
"type": "integer"
},
"saleLocationType": {
"format": "int32",
"description": "The sale location type of the item. ['NotApplicable' = 0, 'ShopOnly' = 1, 'MyExperiencesOnly' = 2, 'ShopAndMyExperiences' = 3, 'ExperiencesById' = 4, 'ShopAndAllExperiences' = 5, 'ExperiencesDevApiOnly' = 6, 'ShopAndExperiencesById' = 7]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"hasResellers": {
"description": "An indicator if the item has resellers or not (null if not resellable).",
"type": "boolean"
},
"isOffSale": {
"description": "An indicator if the item is off sale or not.",
"type": "boolean"
},
"quantityLimitPerUser": {
"format": "int32",
"description": "Quantity limit for how many instances a user can buy.",
"type": "integer"
},
"supportsHeadShapes": {
"description": "Whether the item supports head shapes.",
"type": "boolean"
},
"timedOptions": {
"description": "The timed options for the item.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.TimedOption"
}
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.CatalogSearchDetailedResponseItemV2": {
"description": "This is the beta (non game-engine) version of our hydration model representing asset or bundle in marketplace.",
"type": "object",
"properties": {
"bundledItems": {
"description": "The System.Collections.Generic.IEnumerable`1 contained in the bundle, serialized if item is a bundle.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleItemDetailModelV2"
}
},
"taxonomy": {
"description": "The taxonomy ids and names for this item.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.TaxonomyModel"
}
},
"itemCreatedUtc": {
"format": "date-time",
"description": "The UTC creation date-time of the asset or bundle.",
"type": "string"
},
"discountInformation": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.DiscountInformation"
},
"license": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.CollectibleLicense"
},
"id": {
"format": "int64",
"description": "The Item Id.",
"type": "integer"
},
"itemType": {
"format": "int32",
"description": "The Roblox.Catalog.Api.CatalogSearchDetailedResponseItem.ItemType item type. ['Asset' = 1, 'Bundle' = 2]",
"enum": [1, 2],
"type": "integer"
},
"assetType": {
"format": "int32",
"description": "The Roblox.Platform.Assets.AssetType serialized if item is an asset.",
"enum": [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21, 22,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
91, 92, 93, 94, 95, 96
],
"type": "integer"
},
"bundleType": {
"format": "int32",
"description": "The Roblox.Platform.Bundles.Core.BundleType serialized if item is a bundle.",
"enum": [1, 2, 3, 4],
"type": "integer"
},
"isRecolorable": {
"description": "Gets or sets the property whether a bundle is recolorable or not. Not serialized for asset.",
"type": "boolean"
},
"name": {
"description": "The item name.",
"type": "string"
},
"description": {
"description": "The item description.",
"type": "string"
},
"productId": {
"format": "int64",
"description": "The product id of corresponding item.",
"type": "integer"
},
"itemStatus": {
"description": "The System.Collections.Generic.IEnumerable`1 if item has Roblox.Catalog.Api.CatalogItemStatus.",
"type": "array",
"items": {
"format": "int32",
"description": "Catalog item status enum. ['New' = 1, 'Sale' = 2, 'SaleTimer' = 7, 'IsFAE' = 8]",
"enum": [1, 2, 7, 8],
"type": "integer"
}
},
"itemRestrictions": {
"description": "The System.Collections.Generic.IEnumerable`1 if item has Roblox.Catalog.Api.CatalogItemRestriction.",
"type": "array",
"items": {
"format": "int32",
"description": "Catalog item restriction enum. ['ThirteenPlus' = 1, 'LimitedUnique' = 2, 'Limited' = 3, 'BuildersClub' = 4, 'TurboBuildersClub' = 5, 'OutrageousBuildersClub' = 6, 'Rthro' = 7, 'Live' = 8, 'Collectible' = 9]",
"enum": [1, 2, 3, 4, 5, 6, 7, 8, 9],
"type": "integer"
}
},
"creatorHasVerifiedBadge": {
"description": "The verified status of a creator.",
"type": "boolean"
},
"creatorType": {
"format": "int32",
"description": "The Roblox.Catalog.Api.CatalogSearchDetailedResponseItem.CreatorType of the item's creator.",
"enum": [0, 1, 2],
"type": "integer"
},
"creatorTargetId": {
"format": "int64",
"description": "The creator id of the item's creator.",
"type": "integer"
},
"creatorName": {
"description": "The creator name of the item's creator.",
"type": "string"
},
"price": {
"format": "int64",
"description": "The item's price.",
"type": "integer"
},
"lowestPrice": {
"format": "int64",
"description": "The item's lowest price, only if the item is resellable and there are resellers.",
"type": "integer"
},
"lowestResalePrice": {
"format": "int64",
"description": "The item's lowest resale price, only if the item is resellable and there are resellers, including current user.",
"type": "integer"
},
"priceStatus": {
"description": "The localized string item status if the item's price should not be displayed.",
"type": "string"
},
"unitsAvailableForConsumption": {
"format": "int64",
"description": "The number of items in stock, only if the item is resellable and is limitedEdition.",
"type": "integer"
},
"favoriteCount": {
"format": "int64",
"description": "The number of times the item has been favorited.",
"type": "integer"
},
"offSaleDeadline": {
"format": "date-time",
"description": "When the item will go off sale, if the item has an off deadline.",
"type": "string"
},
"collectibleItemId": {
"description": "The item's collectible item id.\nIt is an UUID if a item is collectible type. Otherwise, it is null.",
"type": "string"
},
"totalQuantity": {
"format": "int64",
"description": "The collectible or limited-unique item's total quantity of unique instances.",
"type": "integer"
},
"saleLocationType": {
"format": "int32",
"description": "The sale location type of the item. ['NotApplicable' = 0, 'ShopOnly' = 1, 'MyExperiencesOnly' = 2, 'ShopAndMyExperiences' = 3, 'ExperiencesById' = 4, 'ShopAndAllExperiences' = 5, 'ExperiencesDevApiOnly' = 6, 'ShopAndExperiencesById' = 7]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"hasResellers": {
"description": "An indicator if the item has resellers or not (null if not resellable).",
"type": "boolean"
},
"isOffSale": {
"description": "An indicator if the item is off sale or not.",
"type": "boolean"
},
"quantityLimitPerUser": {
"format": "int32",
"description": "Quantity limit for how many instances a user can buy.",
"type": "integer"
},
"supportsHeadShapes": {
"description": "Whether the item supports head shapes.",
"type": "boolean"
},
"timedOptions": {
"description": "The timed options for the item.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.TimedOption"
}
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.CatalogSearchPageResponse_Roblox.Catalog.Api.CatalogSearchDetailedResponseItemV2_": {
"description": "ApiPageResponse for catalog search.",
"type": "object",
"properties": {
"keyword": {
"description": "Keyword used for search query.",
"type": "string"
},
"elasticsearchDebugInfo": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.ElasticsearchDebugInfo"
},
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.CatalogSearchDetailedResponseItemV2"
}
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.CollectibleItemDetail": {
"type": "object",
"properties": {
"collectibleItemId": {
"type": "string"
},
"collectibleProductId": {
"type": "string"
},
"price": {
"format": "int64",
"type": "integer"
},
"lowestPrice": {
"format": "int64",
"type": "integer"
},
"lowestResalePrice": {
"format": "int64",
"type": "integer"
},
"totalQuantity": {
"format": "int64",
"type": "integer"
},
"unitsAvailable": {
"format": "int64",
"type": "integer"
},
"saleLocation": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.SaleLocation"
},
"hasResellers": {
"type": "boolean"
},
"saleStatus": {
"format": "int32",
"description": " ['Invalid' = 0, 'Draft' = 1, 'OffSale' = 2, 'OnSale' = 3, 'PendingSale' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"quantityLimitPerUser": {
"format": "int32",
"type": "integer"
},
"offSaleDeadline": {
"format": "date-time",
"type": "string"
},
"collectibleItemType": {
"format": "int32",
"description": "The type of collectible item, limited or non-limited for now. ['Invalid' = 0, 'Limited' = 1, 'NonLimited' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"lowestAvailableResaleProductId": {
"type": "string"
},
"lowestAvailableResaleItemInstanceId": {
"type": "string"
},
"resaleRestriction": {
"format": "int32",
"description": " ['Invalid' = 0, 'None' = 1, 'Disabled' = 2]",
"enum": [0, 1, 2],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.CollectibleLicense": {
"description": "A model representing the license attached to a collectible, linked via the collectibleItemId.",
"type": "object",
"properties": {
"id": {
"type": "string"
},
"licenseType": {
"format": "int32",
"description": "The type of license attached to a collectible. ['Invalid' = 0, 'ThirdParty' = 1, 'FirstParty' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"licenseHolder": {
"type": "string"
},
"licenseDisplayName": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.Discount": {
"type": "object",
"properties": {
"robuxDiscountAmount": {
"format": "int64",
"type": "integer"
},
"robuxDiscountPercentage": {
"format": "float",
"type": "number"
},
"discountCampaign": {
"type": "string"
},
"localizedDiscountAttribution": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.DiscountInformation": {
"type": "object",
"properties": {
"originalPrice": {
"format": "int64",
"type": "integer"
},
"totalDiscountPercentage": {
"format": "float",
"type": "number"
},
"totalDiscountAmount": {
"format": "int64",
"type": "integer"
},
"discounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.Discount"
}
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.ElasticsearchDebugInfo": {
"type": "object",
"properties": {
"elasticsearchQuery": {
"description": "Gets or sets the nest query that resulted from the operation.",
"type": "string"
},
"isFromCache": {
"description": "Gets or sets if the results were returned from cache.",
"type": "boolean"
},
"indexName": {
"description": "Gets or sets the index name.",
"type": "string"
},
"isTerminatedEarly": {
"description": "Gets or sets if the query was Terminated Early.",
"type": "boolean"
},
"isForceTerminationEnabledByRequest": {
"description": "Gets or sets if Force Termination was Enabled in the Request.",
"type": "boolean"
},
"searchResultDataSource": {
"description": "Gets or sets the search result data source.",
"type": "string"
},
"searchResultRelevanceScore": {
"description": "Gets or sets the search result relevance score.",
"type": "string"
},
"searchResultEngagementScore": {
"description": "Gets or sets the search result engagement score.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.MultigetItemDetailsRequestItem": {
"type": "object",
"properties": {
"itemType": {
"format": "int32",
"description": " ['Asset' = 1, 'Bundle' = 2]",
"enum": [1, 2],
"type": "integer"
},
"id": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.MultigetItemDetailsRequestModel": {
"type": "object",
"properties": {
"items": {
"description": "The items to retrieve details for. Each endpoint has an item count limit per request.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.MultigetItemDetailsRequestItem"
}
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.OwnedBundleModel": {
"description": "A model to represent owned bundles.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"bundleType": {
"type": "string"
},
"creator": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleCreatorModel"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.PremiumPricingModel": {
"description": "Defines the Premium pricing for a catalog item.",
"type": "object",
"properties": {
"premiumDiscountPercentage": {
"format": "int32",
"description": "The Premium discount percentage for a catalog item.",
"type": "integer"
},
"premiumPriceInRobux": {
"format": "int64",
"description": "The Premium price for a catalog item.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.SaleLocation": {
"description": "SaleLocation information for a collectible item (asset or bundle).",
"type": "object",
"properties": {
"saleLocationType": {
"format": "int32",
"description": "Sale location type related for an item detail. ['NotApplicable' = 0, 'ShopOnly' = 1, 'MyExperiencesOnly' = 2, 'ShopAndMyExperiences' = 3, 'ExperiencesById' = 4, 'ShopAndAllExperiences' = 5, 'ExperiencesDevApiOnly' = 6, 'ShopAndExperiencesById' = 7]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"saleLocationTypeId": {
"format": "int32",
"type": "integer"
},
"universeIds": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
},
"enabledUniverseIds": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.TaxonomyModel": {
"description": "public api model coaslescing taxonomy information for a single item.",
"type": "object",
"properties": {
"taxonomyId": {
"description": "The id value to pass into taxonomy field in SearchV2 catalog-api.",
"type": "string"
},
"taxonomyName": {
"description": "The localized human readable name of the category.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Catalog.Api.TimedOption": {
"description": "Defines a timed option for a catalog item.",
"type": "object",
"properties": {
"days": {
"format": "int32",
"description": "The days for the timed option.",
"type": "integer"
},
"price": {
"format": "int64",
"description": "The price for the timed option.",
"type": "integer"
},
"discountInformation": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.DiscountInformation"
},
"selected": {
"description": "To indicate if this option is selected by the client.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.ClientSettings.Api.Models.Response.AndroidBinaryLibraryNames": {
"description": "Contains the names of the libraries in an Android Binary Module.",
"type": "object",
"properties": {
"engine": {
"description": "Name of the engine library.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.ClientSettings.Api.Models.Response.AndroidBinaryResponse": {
"description": "Contains information about an Android Binary Module for a given channel.\nincluding its module name, the names of its libraries, and whether the channel supports Android binaries.",
"required": ["libraryNames"],
"type": "object",
"properties": {
"moduleName": {
"description": "The name of the Android Binary Module.",
"type": "string"
},
"libraryNames": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.AndroidBinaryLibraryNames"
},
"supportsAndroidBinaries": {
"description": "True if the channel supports android binaries. False otherwise.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.ClientSettings.Api.Models.Response.BetaProgramInfo": {
"description": "Beta program information included in the user channel response.",
"required": ["id", "name"],
"type": "object",
"properties": {
"name": {
"description": "The display name of the beta program.",
"type": "string"
},
"id": {
"description": "The ID of the beta program.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.ClientSettings.Api.Models.Response.ClientVersionResponse": {
"type": "object",
"properties": {
"version": {
"type": "string"
},
"clientVersionUpload": {
"type": "string"
},
"bootstrapperVersion": {
"type": "string"
},
"nextClientVersionUpload": {
"type": "string"
},
"nextClientVersion": {
"type": "string"
},
"forceInstall": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.ClientSettings.Api.Models.Response.MobileClientVersionResponse": {
"type": "object",
"properties": {
"activeVersion": {
"type": "string"
},
"upgradeSource": {
"type": "string"
},
"MD5Sum": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.MobileClientVersionResponseData"
}
},
"additionalProperties": false
},
"Roblox.ClientSettings.Api.Models.Response.MobileClientVersionResponseData": {
"type": "object",
"properties": {
"UpgradeAction": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.ClientSettings.Api.Models.Response.OtaVersionResponse": {
"description": "Response for endpoints returning ota information.",
"required": ["downloadUrl", "name", "version"],
"type": "object",
"properties": {
"name": {
"description": "Ota library/plugin name",
"type": "string"
},
"version": {
"description": "Version number of asset",
"type": "string"
},
"downloadUrl": {
"description": "URL to download the ota asset",
"type": "string"
},
"isStandalone": {
"description": "Refers to whether the plugin is core to Studio functions, and is used to determine when it is loaded.",
"type": "boolean"
},
"assetId": {
"description": "The asset ID of the LuaApp OTA.",
"type": "string"
},
"assetVersion": {
"description": "The asset version of the LuaApp OTA.",
"type": "string"
},
"maxAppVersion": {
"description": "The maximum application version compatible with the LuaApp OTA.",
"type": "string"
},
"tryoutName": {
"description": "The name of the tryout for the LuaApp OTA.",
"type": "string"
},
"localAssetURI": {
"description": "The local asset URI for the LuaApp OTA.",
"type": "string"
},
"isForcedUpdate": {
"description": "Indicates whether the LuaApp OTA is a forced update.",
"type": "boolean"
},
"appStorageResetId": {
"description": "The application storage reset ID for the LuaApp OTA.",
"type": "string"
},
"isDevelopmentConfig": {
"description": "Indicates whether the LuaApp OTA is a development configuration.",
"type": "boolean"
},
"assetsManifest": {
"description": "Inlined assets manifest for the LuaApp OTA.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"versionV2": {
"format": "int64",
"description": "VersionV2 of the OTA asset.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.ClientSettings.Api.Models.Response.UserChannelResponse": {
"description": "Response data object for getting a user's channel information.",
"type": "object",
"properties": {
"channelName": {
"description": "Name of the channel.",
"type": "string"
},
"channelAssignmentType": {
"format": "int32",
"description": "How the user was bound to the channel. If the user is not assigned to any channel, this is omitted. ['None' = 0, 'PerMille' = 1, 'BoundToPrivateChannel' = 2, 'BoundToPublicChannel' = 3, 'OptedInToBetaProgramWithPrivateChannel' = 4, 'OptedInToBetaProgramWithPublicChannel' = 5]",
"enum": [0, 1, 2, 3, 4, 5],
"type": "integer"
},
"token": {
"description": "JWT token. If the channel is not private, this is omitted.",
"type": "string"
},
"program": {
"$ref": "#/components/schemas/Roblox.ClientSettings.Api.Models.Response.BetaProgramInfo"
},
"isFlagOnly": {
"description": "Whether the channel is flag-only. A flag-only channel uses production binaries.\nIf the channel is not flag-only, this is omitted.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Contacts.Api.Request.GetUserTagsRequestModel": {
"type": "object",
"properties": {
"targetUserIds": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.Contacts.Api.Request.SetUserTagRequestModel": {
"type": "object",
"properties": {
"targetUserId": {
"format": "int64",
"description": "The userId of the target of the userTag.",
"type": "integer"
},
"userTag": {
"description": "The userTag to be set",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Contacts.Api.Response.GetUserTagsResponseModel": {
"type": "object",
"properties": {
"targetUserId": {
"format": "int64",
"type": "integer"
},
"targetUserTag": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Contacts.Api.Response.SetUserTagResponseModel": {
"type": "object",
"properties": {
"status": {
"description": "Status message to be sent to the setter of the userTag ['Success' = 0, 'Moderated' = 1]",
"enum": ["Success", "Moderated"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Contacts.Api.Response.ValidateUserTagResponseModel": {
"type": "object",
"properties": {
"status": {
"description": "Status message to be sent to the requester of the userTag validation ['Success' = 0, 'Moderated' = 1, 'TooLong' = 2]",
"enum": ["Success", "Moderated", "TooLong"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Develop.Api.UpdatePluginRequest": {
"description": "A request model for updating a plugin.",
"type": "object",
"properties": {
"name": {
"description": "The new plugin name.",
"type": "string"
},
"description": {
"description": "The new plugin description.",
"type": "string"
},
"commentsEnabled": {
"description": "Whether or not comments should be enabled.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.EconomyCreatorStats.Api.Models.StatisticsResponse": {
"description": "The response model",
"type": "object",
"properties": {
"dataGranularity": {
"format": "int32",
"description": "The Roblox.EconomyCreatorStats.Api.StatisticsDataGranularity. ['Hourly' = 0, 'Daily' = 1, 'Monthly' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"data": {
"description": "The actual data.",
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "array",
"items": {
"format": "double",
"type": "number"
}
}
}
}
},
"additionalProperties": false
},
"Roblox.Followings.Api.Models.FollowsByTypeResponse": {
"description": "Data model containing collection of all followed sources of a specific type.",
"type": "object",
"properties": {
"followerType": {
"format": "int32",
"description": "Type of the follower entity. ['Invalid' = 0, 'User' = 1]",
"enum": [0, 1],
"type": "integer"
},
"followerId": {
"format": "int64",
"description": "ID of the follower entity.",
"type": "integer"
},
"sourceType": {
"format": "int32",
"description": "Type of the source entity. ['Invalid' = 0, 'Universe' = 1]",
"enum": [0, 1],
"type": "integer"
},
"followedSources": {
"description": "Followed sources: map of (source ID => follow date)",
"type": "object",
"additionalProperties": {
"format": "date-time",
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.Followings.Api.Models.UserFollowingUniverseResponse": {
"description": "Model for a user following a universe controller responses",
"type": "object",
"properties": {
"universeId": {
"format": "int64",
"description": "The id of the universe being followed",
"type": "integer"
},
"userId": {
"format": "int64",
"description": "The id of the user that is following",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Followings.Api.Models.UserFollowingUniverseStatusResponse": {
"description": "Model for a user following a universe state controller responses",
"type": "object",
"properties": {
"UniverseId": {
"format": "int64",
"description": "The id of the universe.",
"type": "integer"
},
"UserId": {
"format": "int64",
"description": "The id of the user.",
"type": "integer"
},
"CanFollow": {
"description": "If the user can follow the universe.",
"type": "boolean"
},
"IsFollowing": {
"description": "If the user is currently following the universe.",
"type": "boolean"
},
"FollowingCountByType": {
"format": "int32",
"description": "The number of followings between this user and a universe.",
"type": "integer"
},
"FollowingLimitByType": {
"format": "int32",
"description": "The limit to the number of followings between a user and a universe for a specific user.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Friends.Api.FriendRequest": {
"description": "A response model representing a friend request.",
"type": "object",
"properties": {
"sentAt": {
"format": "date-time",
"description": "When the friend request was sent.",
"type": "string"
},
"senderId": {
"format": "int64",
"description": "The sender user Id.",
"type": "integer"
},
"sourceUniverseId": {
"format": "int64",
"description": "The source universe Id which the request was sent in.",
"type": "integer"
},
"originSourceType": {
"format": "int32",
"description": "The origin source type associated with the friend request. ['Unknown' = 0, 'PlayerSearch' = 1, 'QrCode' = 2, 'InGame' = 3, 'UserProfile' = 4, 'QqContactImporter' = 5, 'WeChatContactImporter' = 6, 'ProfileShare' = 7, 'PhoneContactImporter' = 8, 'FriendRecommendations' = 9, 'UserCommunities' = 10, 'TrustedFriend' = 11, 'SchoolMemberList' = 12]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
"type": "integer"
},
"contactName": {
"description": "The contact name associated with the friend request.",
"type": "string"
},
"senderNickname": {
"description": "The nickname associated with the friend request.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Friends.Api.FriendRequestResponse": {
"description": "A response model representing a friend request.",
"type": "object",
"properties": {
"friendRequest": {
"$ref": "#/components/schemas/Roblox.Friends.Api.FriendRequest"
},
"mutualFriendsList": {
"description": "mutualFriendsList",
"type": "array",
"items": {
"type": "string"
}
},
"hasVerifiedBadge": {
"description": "The user's verified badge status.",
"type": "boolean"
},
"isUnseen": {
"description": "The user's verified badge status.",
"type": "boolean"
},
"description": {
"description": "The user description.",
"type": "string"
},
"created": {
"format": "date-time",
"description": "When the user signed up.",
"type": "string"
},
"isBanned": {
"description": "Whether or not the user is banned",
"type": "boolean"
},
"externalAppDisplayName": {
"description": "Used when user is logged in from third party app (e.g. QQ)\r\nExternalAppDisplayName is the name used in that app (e.g. QQ nickname)",
"type": "string"
},
"id": {
"format": "int64",
"description": "The user Id.",
"type": "integer"
},
"name": {
"description": "The user name.",
"type": "string"
},
"displayName": {
"description": "The user DisplayName.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Friends.Api.FriendStatusResponse": {
"description": "The friendship status response model.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The user Id of the friend.",
"type": "integer"
},
"status": {
"format": "int32",
"description": "The friendship status. ['NotFriends' = 0, 'Friends' = 1, 'RequestSent' = 2, 'RequestReceived' = 3]",
"enum": [0, 1, 2, 3],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Friends.Api.FriendsCountResponse": {
"description": "Response model for Friends Count",
"type": "object",
"properties": {
"count": {
"format": "int32",
"description": "Count of friends",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Friends.Api.Models.Response.NewFriendRequestsCountResponse": {
"description": "The friendship status response model.",
"type": "object",
"properties": {
"count": {
"format": "int64",
"description": "Count of new friend requests.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Friends.Api.Models.Response.TrustedFriendRequestResponse": {
"description": "A response model representing a friend request.",
"type": "object",
"properties": {
"sentAt": {
"format": "date-time",
"description": "When the TF request was sent.",
"type": "string"
},
"senderId": {
"format": "int64",
"description": "The sender user Id.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Friends.Api.PendingFriendRequestCountModel": {
"description": "Response model for Pending Friend Request Count",
"type": "object",
"properties": {
"count": {
"format": "int32",
"description": "Count of pending friend requests",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.AutomaticTranslationStatusTargetLanguage": {
"type": "object",
"properties": {
"languageCode": {
"description": "The language code.",
"type": "string"
},
"isAutomaticTranslationAllowed": {
"description": "Indicates whether or not automatic translation is allowed for the target language.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.EditAutomaticTranslationStatusForGameAndLanguageResponse": {
"type": "object",
"properties": {
"gameId": {
"format": "int64",
"description": "The game id.",
"type": "integer"
},
"languageCode": {
"description": "The language code.",
"type": "string"
},
"isAutomaticTranslationEnabled": {
"description": "Indicates whether or not automatic translation is currently enabled for the game and language.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.EditImageTranslationStatusForGameAndLanguageResponse": {
"type": "object",
"properties": {
"gameId": {
"format": "int64",
"description": "The game id.",
"type": "integer"
},
"languageCode": {
"description": "The language code.",
"type": "string"
},
"isImageTranslationEnabled": {
"description": "Indicates whether image translation is currently enabled for the game and language.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.FailedNameDescription": {
"type": "object",
"properties": {
"languageCode": {
"type": "string"
},
"errorCode": {
"format": "int32",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetAllowedAutomaticTranslationStatusForLanguagesResponse": {
"description": "A response model for getting the automatic translation allowed status of target languages.",
"type": "object",
"properties": {
"sourceLanguage": {
"description": "The source language.",
"type": "string"
},
"targetLanguages": {
"description": "The target languages with the automatic translation allowed status.\r\nThe status basically says if automatic translation can be enabled for the source and target.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.AutomaticTranslationStatusTargetLanguage"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetAutomaticTranslationFeatureStatusForGameResponse": {
"description": "A response model for getting the automatic translation allowed status of a game.",
"type": "object",
"properties": {
"gameId": {
"format": "int64",
"description": "The game id.",
"type": "integer"
},
"isAutomaticTranslationAllowed": {
"description": "Indicates whether or not automatic translation is allowed for the game.",
"type": "boolean"
},
"isAutomaticTranslationSwitchesUIEnabled": {
"description": "Indicates whether or not automatic translation switches are enabled for the game.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetAutomaticTranslationQuotaForGameResponse": {
"description": "A response model for getting the automatic translation quota info of a game.",
"type": "object",
"properties": {
"monthlyQuota": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.MonthlyQuotaModel"
},
"bankQuota": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.QuotaModel"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetBadgeIconResponse": {
"type": "object",
"properties": {
"imageId": {
"type": "string"
},
"imageUrl": {
"type": "string"
},
"state": {
"description": "Enum for image status.",
"enum": [
"Approved",
"PendingReview",
"UnAvailable",
"Rejected",
"Error"
],
"type": "string"
},
"languageCode": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetDeveloperProductIconResponse": {
"description": "A response model for getting developer product icon",
"type": "object",
"properties": {
"imageId": {
"type": "string"
},
"imageUrl": {
"type": "string"
},
"state": {
"description": "Enum for image status.",
"enum": [
"Approved",
"PendingReview",
"UnAvailable",
"Rejected",
"Error"
],
"type": "string"
},
"languageCode": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetGameIconResponse": {
"type": "object",
"properties": {
"imageId": {
"type": "string"
},
"imageUrl": {
"type": "string"
},
"state": {
"description": "Enum for image status.",
"enum": [
"Approved",
"PendingReview",
"UnAvailable",
"Rejected",
"Error"
],
"type": "string"
},
"languageCode": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetGamePassIconResponse": {
"description": "A response model for getting game pass icon",
"type": "object",
"properties": {
"imageId": {
"type": "string"
},
"imageUrl": {
"type": "string"
},
"state": {
"description": "Enum for image status.",
"enum": [
"Approved",
"PendingReview",
"UnAvailable",
"Rejected",
"Error"
],
"type": "string"
},
"languageCode": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetGameThumbnailsResponse": {
"type": "object",
"properties": {
"languageCode": {
"type": "string"
},
"mediaAssets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.MediaAssetResponse"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetNameDescriptionHistoryResponse": {
"type": "object",
"properties": {
"history": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.TranslationHistory"
}
},
"lastEvaluatedId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetNameDescriptionHistoryV2Request": {
"description": "A model containing request for getting the translation history of\r\na content source type's name or description.",
"type": "object",
"properties": {
"contentId": {
"format": "int64",
"type": "integer"
},
"contentType": {
"description": "The enum representing the type of request while requesting name/description history",
"enum": [
"UniverseDisplayNames",
"UniverseDisplayDescriptions",
"BadgeDisplayName",
"BadgeDisplayDescription",
"DeveloperProductDisplayName",
"DeveloperProductDisplayDescription",
"GamePassDisplayName",
"GamePassDisplayDescription"
],
"type": "string"
},
"languageCode": {
"type": "string"
},
"cursor": {
"type": "string"
},
"count": {
"format": "int32",
"type": "integer"
},
"sortOrder": {
"description": " ['Asc' = 1, 'Desc' = 2]",
"enum": ["Asc", "Desc"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetTranslationCountsForGameResponse": {
"description": "A response model that contains game info for getting a translation count.",
"type": "object",
"properties": {
"gameId": {
"format": "int64",
"description": "The game id.",
"type": "integer"
},
"languagesOrLocales": {
"description": "The list of languages/locales of the game.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.TranslationCountLanguageOrLocaleResponse"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetTranslationCountsForLanguageOrLocaleResponse": {
"description": "A response model for getting translation counts for a language or locale.",
"type": "object",
"properties": {
"languageOrLocaleCode": {
"description": "The code of the language or locale.",
"type": "string"
},
"languageOrLocaleType": {
"description": "An indicator that says whether the passed in language/locale code represents a language or locale.",
"enum": ["Language", "Locale"],
"type": "string"
},
"games": {
"description": "Info for the requested games, including their translation counts for the specified language or locale.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.TranslationCountGameInfoResponse"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.GetUiConfigurationsResponse": {
"type": "object",
"properties": {
"isGameProductsEnabled": {
"description": "Game products translation management page is enabled or not.",
"type": "boolean"
},
"isBadgeIconEnabled": {
"description": "Badge Icon translation management is enabled or not.",
"type": "boolean"
},
"isGamePassEnabled": {
"description": "Game pass translation management is enabled or not.",
"type": "boolean"
},
"isDeveloperProductEnabled": {
"description": "Developer product translation management is enabled or not.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.Language": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"nativeName": {
"type": "string"
},
"languageCode": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.LanguageOrLocale": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"languageCodeType": {
"description": "An enum to distinguish between locale codes and language codes.",
"enum": ["Language", "Locale"],
"type": "string"
},
"languageCode": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.LanguageOrLocaleSettings": {
"type": "object",
"properties": {
"languageCodeType": {
"description": "The language code type.",
"enum": ["Language", "Locale"],
"type": "string"
},
"languageCode": {
"description": "The language code.",
"type": "string"
},
"isAutomaticTranslationEnabled": {
"description": "Indicates whether or not automatic translation is currently enabled for the game and language.",
"type": "boolean"
},
"isImageTranslationEnabled": {
"description": "Indicates whether image translation is currently enabled for the game and language.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.LanguageWithLocales": {
"type": "object",
"properties": {
"languageFamily": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Language"
},
"childLocales": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Localization.Client.SupportedLocale"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.MediaAssetResponse": {
"type": "object",
"properties": {
"mediaAssetId": {
"type": "string"
},
"mediaAssetAltText": {
"type": "string"
},
"state": {
"description": "Enum for image status.",
"enum": [
"Approved",
"PendingReview",
"UnAvailable",
"Rejected",
"Error"
],
"type": "string"
},
"mediaAssetUrl": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.Models.Request.SetUserLocalizationSettingsRequest": {
"type": "object",
"properties": {
"settingValue": {
"$ref": "#/components/schemas/Roblox.GameLocalization.Client.UserUniverseLocalizationSettingValue"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.Models.Response.GameNameDescriptionMetadataResponse": {
"type": "object",
"properties": {
"isNameDescriptionMigrationEnabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.Models.Response.GetPlayerChoiceUniverseSettingsResponse": {
"type": "object",
"properties": {
"IsPlayerChoiceEnabled": {
"description": "Checks whether player choice warning should be displayed to users.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.Models.Response.GetUserLocalizationSettingsForUniverseResponse": {
"type": "object",
"properties": {
"userUniverseLocalizationSettingValue": {
"$ref": "#/components/schemas/Roblox.GameLocalization.Client.UserUniverseLocalizationSettingValue"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.Models.Response.SetUserLocalizationSettingsResponse": {
"type": "object",
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.Models.Response.UploadImageForGameThumbnailResponse": {
"type": "object",
"properties": {
"mediaAssetId": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.MonthlyQuotaModel": {
"type": "object",
"properties": {
"previousRefreshDate": {
"format": "date-time",
"type": "string"
},
"nextRefreshDate": {
"format": "date-time",
"type": "string"
},
"remaining": {
"format": "int64",
"type": "integer"
},
"capacity": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.NameDescription": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"updateType": {
"enum": ["Invalid", "Name", "Description"],
"type": "string"
},
"languageCode": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.PatchLanguage": {
"type": "object",
"properties": {
"languageCodeType": {
"description": "The language code type.",
"enum": ["Language", "Locale"],
"type": "string"
},
"languageCode": {
"description": "The language code for the language to edit.",
"type": "string"
},
"delete": {
"description": "An optional field used to indicate whether a language should be deleted from this game's list of supported languages.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.QuotaModel": {
"type": "object",
"properties": {
"remaining": {
"format": "int64",
"type": "integer"
},
"capacity": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.RequestTranslationAnalyticsReportRequest": {
"type": "object",
"properties": {
"startDateTime": {
"format": "date-time",
"description": "The inclusive start dateTime of report in UTC",
"type": "string"
},
"endDateTime": {
"format": "date-time",
"description": "The exclusive end dateTime of report in UTC",
"type": "string"
},
"reportType": {
"description": "The report type",
"enum": [
"GameTranslationStatus",
"GameTranslationStatusForTranslator",
"GameTranslationStatusForTranslatorGroup",
"Test"
],
"type": "string"
},
"reportSubjectTargetId": {
"format": "int64",
"description": "The report subject target id",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.RequestTranslationAnalyticsReportResponse": {
"type": "object",
"properties": {
"reportGenerationStatus": {
"description": " ['InProgress' = 0, 'Ready' = 1, 'Unavailable' = 2]",
"enum": ["inProgress", "ready", "unavailable"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.SortImageIdsRequest": {
"description": "A request model for sorting of image Ids for game thumbnails",
"type": "object",
"properties": {
"mediaAssetIds": {
"description": "List of thumbnail ids in desired order.",
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.SourceLanguageWithLocales": {
"type": "object",
"properties": {
"languageFamily": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Language"
},
"defaultLocale": {
"$ref": "#/components/schemas/Roblox.Localization.Client.SupportedLocale"
},
"childLocales": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Localization.Client.SupportedLocale"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.SupportedLanguagesMetadataResponse": {
"type": "object",
"properties": {
"isFeatureEnabled": {
"type": "boolean"
},
"areAllLanguagesEnabled": {
"type": "boolean"
},
"minimumUniverseIdForFeature": {
"format": "int64",
"type": "integer"
},
"isHumanTranslationProgressUIEnabled": {
"description": "Is translation progress for human translations enabled on UI",
"type": "boolean"
},
"isAutomaticTranslationProgressUIEnabled": {
"description": "Is translation progress for automatic translations enabled on UI",
"type": "boolean"
},
"isSupportedLanguagesChildLocalesUIEnabled": {
"description": "Is Language Locales UI Enabled for Supported Languages",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.TranslationAnalyticsMetadataResponse": {
"type": "object",
"properties": {
"isFeatureEnabledOnUI": {
"description": "Is Translation Analytics feature enabled on UI",
"type": "boolean"
},
"reportRequestPollingIntervalSeconds": {
"format": "int32",
"description": "Number of seconds to poll the server for report availability",
"type": "integer"
},
"minimumDateTimeForAnalyticsReport": {
"format": "date-time",
"description": "Date-Time since the Analytics Reports can be downloaded",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.TranslationCount": {
"description": "A model that contains the count value of a translation count and relevant metadata.",
"type": "object",
"properties": {
"count": {
"format": "int32",
"type": "integer"
},
"translationStatus": {
"description": "The enum representing a translation status.",
"enum": ["Approved"],
"type": "string"
},
"translatorType": {
"description": "Gets or sets the type of the translator associated with the count, or `null` if the count is not associated with a specific type of translator.",
"enum": ["Automation", "User"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.TranslationCountCategoryInfoResponse": {
"description": "A response model that contains category info for getting a translation count.",
"type": "object",
"properties": {
"category": {
"description": "The category of the translation counts.",
"enum": ["InGameContent"],
"type": "string"
},
"translationCounts": {
"description": "The translation counts.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.TranslationCount"
}
},
"totalTranslatableItemCount": {
"format": "int32",
"description": "The total number of translatable items.\r\nThe translation count percentage can be calculated by doing translationCounts / totalTranslatableItemCount.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.TranslationCountGameInfoResponse": {
"description": "A response model that contains game info for getting a translation count.",
"type": "object",
"properties": {
"gameId": {
"format": "int64",
"description": "The game id.",
"type": "integer"
},
"status": {
"description": "The status of the response for the requested game.",
"enum": [
"LanguageOrLocaleSupportedForGame",
"LanguageOrLocaleNotSupportedForGame",
"LanguageOrLocaleIsSource",
"InsufficientPermission",
"GameDoesNotExist",
"GameDoesNotHaveTable",
"UnknownError"
],
"type": "string"
},
"categories": {
"description": "Categories of translation counts.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.TranslationCountCategoryInfoResponse"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.TranslationCountLanguageOrLocaleResponse": {
"type": "object",
"properties": {
"status": {
"description": "The status of the response for the requested game.",
"enum": ["Success", "LanguageOrLocaleNotSupportedForGame"],
"type": "string"
},
"categories": {
"description": "Categories of translation counts.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.TranslationCountCategoryInfoResponse"
}
},
"name": {
"type": "string"
},
"languageCodeType": {
"description": "An enum to distinguish between locale codes and language codes.",
"enum": ["Language", "Locale"],
"type": "string"
},
"languageCode": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.TranslationHistory": {
"description": "A model containing a translation, translator, and translation time.",
"type": "object",
"properties": {
"translationText": {
"description": "The translation provided by the translator.",
"type": "string"
},
"translator": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.Translator"
},
"created": {
"format": "date-time",
"description": "The time the translation was provided.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.Translator": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"agentType": {
"description": " ['User' = 0, 'Automation' = 1]",
"enum": ["User", "Automation"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UniverseDisplayInfoAutomaticTranslationSettings": {
"type": "object",
"properties": {
"languageCode": {
"description": "The language code.",
"type": "string"
},
"isUniverseDisplayInfoAutomaticTranslationEnabled": {
"description": "Indicates whether or not automatic translation is currently enabled for Game and Place Information for a game and language.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateBadgeDescriptionRequest": {
"description": "A request model for updating badge description",
"type": "object",
"properties": {
"description": {
"description": "Badge description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateBadgeDescriptionResponse": {
"description": "A response model for updating badge description",
"type": "object",
"properties": {
"description": {
"description": "Badge description saved",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateBadgeNameDescriptionRequest": {
"description": "A request model for updating badge name and description",
"type": "object",
"properties": {
"name": {
"description": "Badge name",
"type": "string"
},
"description": {
"description": "Badge description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateBadgeNameDescriptionResponse": {
"description": "A response model for updating badge name and description",
"type": "object",
"properties": {
"name": {
"description": "Badge name saved",
"type": "string"
},
"description": {
"description": "Badge description saved",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateBadgeNameRequest": {
"description": "A request model for updating badge name",
"type": "object",
"properties": {
"name": {
"description": "Badge name",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateBadgeNameResponse": {
"description": "A response model for updating badge name",
"type": "object",
"properties": {
"name": {
"description": "Badge name saved",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateDeveloperProductDescriptionRequest": {
"description": "A request model for updating developer product description",
"type": "object",
"properties": {
"description": {
"description": "Developer product description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateDeveloperProductDescriptionResponse": {
"description": "A response model for updating developer product description",
"type": "object",
"properties": {
"description": {
"description": "Developer product description saved",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateDeveloperProductNameDescriptionRequest": {
"description": "A request model for updating developer product name and description",
"type": "object",
"properties": {
"name": {
"description": "Developer product name",
"type": "string"
},
"description": {
"description": "Developer product description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateDeveloperProductNameDescriptionResponse": {
"description": "A response model for updating developer product name and description",
"type": "object",
"properties": {
"name": {
"description": "Developer product name saved",
"type": "string"
},
"description": {
"description": "Developer product description saved",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateDeveloperProductNameRequest": {
"description": "A request model for updating developer product name",
"type": "object",
"properties": {
"name": {
"description": "Developer product name",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateDeveloperProductNameResponse": {
"description": "A response model for updating developer product name",
"type": "object",
"properties": {
"name": {
"description": "Developer product name saved",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateGamePassDescriptionRequest": {
"description": "A request model for updating game pass description",
"type": "object",
"properties": {
"description": {
"description": "Game pass description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateGamePassDescriptionResponse": {
"description": "A response model for updating game pass description",
"type": "object",
"properties": {
"description": {
"description": "Game pass description saved",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateGamePassNameDescriptionRequest": {
"description": "A request model for updating game pass name and description",
"type": "object",
"properties": {
"name": {
"description": "Game pass name",
"type": "string"
},
"description": {
"description": "Game pass description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateGamePassNameDescriptionResponse": {
"description": "A response model for updating game pass name and description",
"type": "object",
"properties": {
"name": {
"description": "Game pass name saved",
"type": "string"
},
"description": {
"description": "Game pass description saved",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateGamePassNameRequest": {
"description": "A request model for updating game pass name",
"type": "object",
"properties": {
"name": {
"description": "Game pass name",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateGamePassNameResponse": {
"description": "A response model for updating game pass name",
"type": "object",
"properties": {
"name": {
"description": "Game pass name saved",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateNameDescriptionsRequest": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.NameDescription"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateNameDescriptionsResponse": {
"type": "object",
"properties": {
"successOperations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.NameDescription"
}
},
"failedOperations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.FailedNameDescription"
}
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateThumbnailAltTextRequest": {
"type": "object",
"properties": {
"thumbnailId": {
"format": "int64",
"type": "integer"
},
"altText": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.GameInternationalization.Api.UpdateUniverseDisplayInfoAutomaticTranslationSettingsResponse": {
"description": "A response model for getting the automatic translation allowed status for game information.",
"type": "object",
"properties": {
"gameId": {
"format": "int64",
"description": "The game id.",
"type": "integer"
},
"languageCode": {
"description": "The language code.",
"type": "string"
},
"isUniverseDisplayInfoAutomaticTranslationEnabled": {
"description": "Indicates universeDisplayInformation automatic translation is enabled.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.GameLocalization.Client.GameLocalizationRoles.Assignee": {
"type": "object",
"properties": {
"assigneeType": {
"description": " ['User' = 0, 'Group' = 1, 'GroupRole' = 2]",
"enum": ["user", "group", "groupRole"],
"type": "string"
},
"id": {
"format": "int64",
"type": "integer"
}
}
},
"Roblox.GameLocalization.Client.GameLocalizationRoles.GameLocalizationRoleAssignment": {
"type": "object",
"properties": {
"gameId": {
"format": "int64",
"type": "integer"
},
"assignee": {
"$ref": "#/components/schemas/Roblox.GameLocalization.Client.GameLocalizationRoles.Assignee"
}
}
},
"Roblox.GameLocalization.Client.UserUniverseLocalizationSettingValue": {
"type": "object",
"properties": {
"settingType": {
"description": " ['LanguageFamily' = 0, 'SupportedLocale' = 1, 'SourceOrTranslation' = 2]",
"enum": [
"LanguageFamily",
"SupportedLocale",
"SourceOrTranslation"
],
"type": "string"
},
"settingTargetId": {
"format": "int64",
"type": "integer"
},
"settingTargetCode": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Request.GameFavoritesRequest": {
"description": "Game favorite request model.",
"type": "object",
"properties": {
"isFavorited": {
"description": "true for favor the game, false for unfavor the game.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.GameContentMetadataResponseModel": {
"description": "Response model for game-level content metadata.",
"type": "object",
"properties": {
"badgePosition": {
"type": "string"
},
"badgeAnalyticsId": {
"type": "string"
},
"badgeType": {
"type": "string"
},
"badgeIcon": {
"type": "string"
},
"badgeComponentType": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.GameCreator": {
"description": "Response model for getting the game creator",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The game creator id",
"type": "integer"
},
"name": {
"description": "The game creator name",
"type": "string"
},
"type": {
"description": "The game creator type",
"type": "string"
},
"isRNVAccount": {
"description": "The game creator account is Luobu Real Name Verified",
"type": "boolean"
},
"hasVerifiedBadge": {
"description": "Builder verified badge status.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.GameDetailResponse": {
"description": "Response model for getting the game detail",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The game universe id",
"type": "integer"
},
"rootPlaceId": {
"format": "int64",
"description": "The game root place id",
"type": "integer"
},
"name": {
"description": "The game name",
"type": "string"
},
"description": {
"description": "The game description",
"type": "string"
},
"sourceName": {
"description": "The game name in the source language, if different from the returned name.",
"type": "string"
},
"sourceDescription": {
"description": "The game description in the source language, if different from the returned description.",
"type": "string"
},
"creator": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameCreator"
},
"price": {
"format": "int64",
"description": "The game paid access price",
"type": "integer"
},
"allowedGearGenres": {
"description": "The game allowed gear genres",
"type": "array",
"items": {
"type": "string"
}
},
"allowedGearCategories": {
"description": "The game allowed gear categoris",
"type": "array",
"items": {
"type": "string"
}
},
"isGenreEnforced": {
"description": "The game must specify a genre",
"type": "boolean"
},
"copyingAllowed": {
"description": "The game allows place to be copied",
"type": "boolean"
},
"playing": {
"format": "int64",
"description": "Current player count of the game",
"type": "integer"
},
"visits": {
"format": "int64",
"description": "The total visits to the game",
"type": "integer"
},
"maxPlayers": {
"format": "int32",
"description": "The game max players",
"type": "integer"
},
"created": {
"format": "date-time",
"description": "The game created time",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "The game updated time",
"type": "string"
},
"studioAccessToApisAllowed": {
"description": "The setting of IsStudioAccessToApisAllowed of the universe",
"type": "boolean"
},
"createVipServersAllowed": {
"description": "Gets or sets the flag to indicate whether the create vip servers button should be allowed in game details page",
"type": "boolean"
},
"universeAvatarType": {
"format": "int32",
"description": "Avatar type. Possible values are MorphToR6, MorphToR15, and PlayerChoice",
"enum": [1, 2, 3],
"type": "integer"
},
"genre": {
"description": "The game genre display name",
"type": "string"
},
"genre_l1": {
"description": "The game genre from experience-genres-service",
"type": "string"
},
"genre_l2": {
"description": "The game subgenre from experience-genres-service",
"type": "string"
},
"untranslated_genre_l1": {
"description": "The game genre from experience-genres-service untranslated",
"type": "string"
},
"isAllGenre": {
"description": "Is this game all genre.",
"type": "boolean"
},
"isFavoritedByUser": {
"description": "Is this game favorited by user.",
"type": "boolean"
},
"favoritedCount": {
"format": "int64",
"description": "Game number of favorites.",
"type": "integer"
},
"licenseDescription": {
"type": "string"
},
"refundLink": {
"type": "string"
},
"localizedFiatPrice": {
"type": "string"
},
"refundPolicy": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.RefundPolicy"
},
"canonicalUrlPath": {
"description": "Canonical URL path for the game page, e.g. /games/{placeId}/{canonical-slug}.\r\nIt must be the same as the canonical URL (rel-canonical meta tag) on the game's EDP.",
"type": "string"
},
"isContentRestricted": {
"description": "Indicates whether this experience is content-restricted and has had its details wiped.\r\nWhen true, the content fields (name, description, creator, etc.) contain placeholder or\r\nempty values rather than the real data. Consumers should branch on this flag instead of\r\ninferring restriction from placeholder text.",
"type": "boolean"
},
"creationSource": {
"description": "How the experience was created, as reported by hydration (e.g. \"build\").\r\nOmitted when hydration does not return a value.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.GameFavoriteResponse": {
"description": "Game favorite response model.",
"type": "object",
"properties": {
"isFavorited": {
"description": "Is it a favorite game.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.GameFavoritesCountResponse": {
"description": "Response model for favorited game count.",
"type": "object",
"properties": {
"favoritesCount": {
"format": "int64",
"description": "Favorites count.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.GameProductResponse": {
"description": "Response model for getting the game product information",
"type": "object",
"properties": {
"universeId": {
"format": "int64",
"description": "The game universe id",
"type": "integer"
},
"isForSale": {
"description": "The game purchasability",
"type": "boolean"
},
"productId": {
"format": "int64",
"description": "The game product id",
"type": "integer"
},
"price": {
"format": "int64",
"description": "The game price",
"type": "integer"
},
"sellerId": {
"format": "int64",
"description": "The game seller id\r\nUser ID for users, Agent ID for groups",
"type": "integer"
},
"fiatPurchaseData": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.PurchaseData"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.GameRecommendationsResponse": {
"description": "Game recommendations response model.",
"type": "object",
"properties": {
"games": {
"description": "The recommended games.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameResponseModel"
}
},
"nextPaginationKey": {
"description": "The pagination key for next page query.\r\nIt will be null if there is no more data.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.GameResponseModel": {
"description": "Response model for games.",
"type": "object",
"properties": {
"creatorId": {
"format": "int64",
"description": "Creator Id",
"type": "integer"
},
"creatorName": {
"description": "Creator name",
"type": "string"
},
"creatorType": {
"description": "Creator type",
"type": "string"
},
"creatorHasVerifiedBadge": {
"description": "Creator verified badge status",
"type": "boolean"
},
"totalUpVotes": {
"format": "int64",
"description": "Total up votes",
"type": "integer"
},
"totalDownVotes": {
"format": "int64",
"description": "Total down votes",
"type": "integer"
},
"universeId": {
"format": "int64",
"description": "Universe id",
"type": "integer"
},
"name": {
"description": "Game name",
"type": "string"
},
"placeId": {
"format": "int64",
"description": "Place Id",
"type": "integer"
},
"playerCount": {
"format": "int32",
"description": "Player count",
"type": "integer"
},
"imageToken": {
"description": "Place image token",
"type": "string"
},
"isSponsored": {
"description": "Is sponsored",
"type": "boolean"
},
"nativeAdData": {
"description": "Native ad data",
"type": "string"
},
"isShowSponsoredLabel": {
"description": "Show the sponsored label",
"type": "boolean"
},
"price": {
"format": "int64",
"description": "The game paid access price",
"type": "integer"
},
"analyticsIdentifier": {
"description": "Provide all necessary information which helps analytics for improvement, for example, the algorithm, dataset version, position, etc..",
"type": "string"
},
"gameDescription": {
"description": "Provide all necessary information which helps analytics for improvement, for example, the algorithm, dataset version, position, etc..",
"type": "string"
},
"genre": {
"description": "The game genre display name",
"type": "string"
},
"minimumAge": {
"format": "int32",
"description": "Age Recommendation minimum age.",
"type": "integer"
},
"ageRecommendationDisplayName": {
"description": "Age Recommendation display name.",
"type": "string"
},
"contentMetadata": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameContentMetadataResponseModel"
},
"canonicalUrlPath": {
"description": "Canonical URL path for the game page, e.g. /games/{placeId}/{canonical-slug}.\r\nIt must be the same as the canonical URL (rel-canonical meta tag) on the game's EDP.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.PlaceDetails": {
"description": "Response model for a place.",
"type": "object",
"properties": {
"placeId": {
"format": "int64",
"description": "Place Id",
"type": "integer"
},
"name": {
"description": "Place name",
"type": "string"
},
"description": {
"description": "Place description",
"type": "string"
},
"sourceName": {
"description": "Place name in source language",
"type": "string"
},
"sourceDescription": {
"description": "Place description in source language",
"type": "string"
},
"url": {
"description": "Url",
"type": "string"
},
"builder": {
"description": "Creator name",
"type": "string"
},
"builderId": {
"format": "int64",
"description": "Creator Id",
"type": "integer"
},
"hasVerifiedBadge": {
"description": "Builder verified badge status.",
"type": "boolean"
},
"isPlayable": {
"description": "Is playable",
"type": "boolean"
},
"reasonProhibited": {
"description": "Reason prohibited",
"type": "string"
},
"universeId": {
"format": "int64",
"description": "Universe id",
"type": "integer"
},
"universeRootPlaceId": {
"format": "int64",
"description": "UniverseRootPlaceId",
"type": "integer"
},
"price": {
"format": "int64",
"description": "Price",
"type": "integer"
},
"imageToken": {
"description": "Place image token",
"type": "string"
},
"fiatPurchaseData": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.PurchaseData"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.PlayabilityStatusResponse": {
"description": "Response model for getting a universe's playability status for a user",
"type": "object",
"properties": {
"playabilityStatus": {
"format": "int32",
"description": "The actual playability status of the universe including the reason if unplayable ['UnplayableOtherReason' = 0, 'Playable' = 1, 'GuestProhibited' = 2, 'GameUnapproved' = 3, 'IncorrectConfiguration' = 4, 'UniverseRootPlaceIsPrivate' = 5, 'InsufficientPermissionFriendsOnly' = 6, 'InsufficientPermissionGroupOnly' = 7, 'DeviceRestricted' = 8, 'UnderReview' = 9, 'PurchaseRequired' = 10, 'AccountRestricted' = 11, 'TemporarilyUnavailable' = 12, 'PlaceHasNoPublishedVersion' = 13, 'ComplianceBlocked' = 14, 'ContextualPlayabilityRegionalAvailability' = 15, 'ContextualPlayabilityRegionalCompliance' = 16, 'ContextualPlayabilityAgeRecommendationParentalControls' = 17, 'ContextualPlayabilityExperienceBlockedParentalControls' = 18, 'ContextualPlayabilityAgeGated' = 19, 'ContextualPlayabilityUnverifiedSeventeenPlusUser' = 20, 'FiatPurchaseRequired' = 21, 'FiatPurchaseDeviceRestricted' = 22, 'ContextualPlayabilityUnrated' = 23, 'ContextualPlayabilityAgeGatedByDescriptor' = 24, 'ContextualPlayabilityGeneral' = 25, 'ContextualPlayabilityAgeCheckRequired' = 26, 'ContextualPlayabilityRequireParentApproval' = 27, 'ContextualPlayabilityCoreGated' = 28, 'ContextualPlayabilityTrustedFriendRequired' = 29, 'PlusSubscriptionRequired' = 30, 'ContextualPlayabilityPlaytestDisabled' = 31, 'InsufficientPermissionEditorsOnly' = 32, 'InsufficientPermissionPlayTestersOnly' = 33]",
"enum": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33
],
"type": "integer"
},
"isPlayable": {
"description": "Whether or not the universe is playable for the user",
"type": "boolean"
},
"universeId": {
"format": "int64",
"description": "The universeId of the requested universe to help with batching requests",
"type": "integer"
},
"unplayableDisplayText": {
"description": "Localized display text explaining why unplayable",
"type": "string"
},
"playableUxTreatment": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.PlayableUxTreatment"
},
"upsellUxTreatment": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.UpsellUxTreatment"
},
"demoModeAvailable": {
"description": "Whether the game supports demo play for users who have not purchased it.\r\nOnly set when PlayabilityStatus is PurchaseRequired or FiatPurchaseRequired.",
"type": "boolean"
},
"privatePlaytestInfo": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.PrivatePlaytestInfoResponse"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.PlayableUxTreatment": {
"type": "object",
"properties": {
"treatment": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.PlayableUxTreatmentData"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.PlayableUxTreatmentData": {
"type": "object",
"properties": {
"titleText": {
"type": "string"
},
"bodyText": {
"type": "string"
},
"primaryActionText": {
"type": "string"
},
"secondaryActionText": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.PrivatePlaytestInfoResponse": {
"description": "Private playtest eligibility for the authenticated user.",
"type": "object",
"properties": {
"isPlayable": {
"description": "Whether the user is eligible to play as a private playtester.",
"type": "boolean"
},
"playabilityStatus": {
"format": "int32",
"description": "The private playtest eligibility status. ['UnplayableOtherReason' = 0, 'Playable' = 1, 'GuestProhibited' = 2, 'GameUnapproved' = 3, 'IncorrectConfiguration' = 4, 'UniverseRootPlaceIsPrivate' = 5, 'InsufficientPermissionFriendsOnly' = 6, 'InsufficientPermissionGroupOnly' = 7, 'DeviceRestricted' = 8, 'UnderReview' = 9, 'PurchaseRequired' = 10, 'AccountRestricted' = 11, 'TemporarilyUnavailable' = 12, 'PlaceHasNoPublishedVersion' = 13, 'ComplianceBlocked' = 14, 'ContextualPlayabilityRegionalAvailability' = 15, 'ContextualPlayabilityRegionalCompliance' = 16, 'ContextualPlayabilityAgeRecommendationParentalControls' = 17, 'ContextualPlayabilityExperienceBlockedParentalControls' = 18, 'ContextualPlayabilityAgeGated' = 19, 'ContextualPlayabilityUnverifiedSeventeenPlusUser' = 20, 'FiatPurchaseRequired' = 21, 'FiatPurchaseDeviceRestricted' = 22, 'ContextualPlayabilityUnrated' = 23, 'ContextualPlayabilityAgeGatedByDescriptor' = 24, 'ContextualPlayabilityGeneral' = 25, 'ContextualPlayabilityAgeCheckRequired' = 26, 'ContextualPlayabilityRequireParentApproval' = 27, 'ContextualPlayabilityCoreGated' = 28, 'ContextualPlayabilityTrustedFriendRequired' = 29, 'PlusSubscriptionRequired' = 30, 'ContextualPlayabilityPlaytestDisabled' = 31, 'InsufficientPermissionEditorsOnly' = 32, 'InsufficientPermissionPlayTestersOnly' = 33]",
"enum": [
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33
],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.PurchaseData": {
"type": "object",
"properties": {
"localizedFiatPrice": {
"description": "Fiat purchase price in a localized string for display on client.",
"type": "string"
},
"basePriceId": {
"description": "ID of base price, needed by clients to prepare purchase url.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.RefundPolicy": {
"type": "object",
"properties": {
"policyText": {
"description": "The display text with a placeholder for clients to inject a link, such as:\r\n \"Learn more about policy xyz {linkStart}Learn More{linkEnd}\"",
"type": "string"
},
"learnMoreBaseUrl": {
"description": "The base URL that the client should redirect to.",
"type": "string"
},
"locale": {
"description": "The Roblox selected language locale that the user has presently selected.",
"type": "string"
},
"articleId": {
"description": "Zendesk (or similar forum provider) article ID for the client to build a redirect URL.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.UpsellUxTreatment": {
"description": "Upsell UX treatment metadata appended to a playability response.",
"type": "object",
"properties": {
"treatment": {
"description": "Identifier of the client component to render.",
"type": "string"
},
"data": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.UpsellUxTreatmentData"
}
},
"additionalProperties": false
},
"Roblox.Games.Api.Models.Response.UpsellUxTreatmentData": {
"description": "Localized strings for an Roblox.Games.Api.Models.Response.UpsellUxTreatment.",
"type": "object",
"properties": {
"bodyText": {
"description": "Localized body text for the upsell.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Groups.Api.CommunityFeatureFreezeStatus": {
"description": "Response model representing the freeze status of a community feature.",
"type": "object",
"properties": {
"feature": {
"description": "The community feature.",
"type": "string"
},
"isDisabled": {
"description": "Whether the feature is currently disabled.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Groups.Api.GetCommunityFeatureFreezesResponse": {
"description": "Response model for the community feature freezes endpoint.",
"type": "object",
"properties": {
"features": {
"description": "The freeze status of each community feature.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Groups.Api.CommunityFeatureFreezeStatus"
}
}
},
"additionalProperties": false
},
"Roblox.Groups.Api.GetGroupFeaturesResponse": {
"description": "Response model for the group features endpoint.",
"type": "object",
"properties": {
"isLocked": {
"description": "Whether the group is currently locked.",
"type": "boolean"
},
"features": {
"description": "The freeze status of each feature for the group.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Groups.Api.GroupFeatureResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Groups.Api.GroupFeatureResponse": {
"description": "Response model representing the freeze status of a group feature.",
"type": "object",
"properties": {
"feature": {
"description": "The feature type. ['Payouts' = 0, 'ContentUpload' = 1, 'GroupOwnershipTransfer' = 2, 'GameOwnershipTransfer' = 3, 'ForumRead' = 4, 'ForumWrite' = 5]",
"enum": [
"Payouts",
"ContentUpload",
"GroupOwnershipTransfer",
"GameOwnershipTransfer",
"ForumRead",
"ForumWrite"
],
"type": "string"
},
"isFeatureBlocked": {
"description": "Whether the feature is currently frozen.",
"type": "boolean"
},
"expiration": {
"format": "date-time",
"description": "The UTC time at which the moderator-force expires, allowing the freeze to be deactivated upon request. Only present when the feature is forced frozen.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Groups.Api.SetFeaturesRequestModel": {
"description": "Request model for setting the desired status of group features.",
"required": ["Features"],
"type": "object",
"properties": {
"Features": {
"description": "Dictionary of features and their desired status.",
"type": "object",
"properties": {
"Payouts": {
"description": "The desired status of a group feature. ['On' = 0, 'Blocked' = 1]",
"enum": ["On", "Blocked"],
"type": "string"
},
"ContentUpload": {
"description": "The desired status of a group feature. ['On' = 0, 'Blocked' = 1]",
"enum": ["On", "Blocked"],
"type": "string"
},
"GroupOwnershipTransfer": {
"description": "The desired status of a group feature. ['On' = 0, 'Blocked' = 1]",
"enum": ["On", "Blocked"],
"type": "string"
},
"GameOwnershipTransfer": {
"description": "The desired status of a group feature. ['On' = 0, 'Blocked' = 1]",
"enum": ["On", "Blocked"],
"type": "string"
},
"ForumRead": {
"description": "The desired status of a group feature. ['On' = 0, 'Blocked' = 1]",
"enum": ["On", "Blocked"],
"type": "string"
},
"ForumWrite": {
"description": "The desired status of a group feature. ['On' = 0, 'Blocked' = 1]",
"enum": ["On", "Blocked"],
"type": "string"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
},
"Roblox.Groups.Api.SetFeaturesResponseModel": {
"description": "Response model for setting the desired status of group features.",
"required": ["Updated"],
"type": "object",
"properties": {
"Updated": {
"description": "Whether any features were updated.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Groups.Client.CommunityTierInfoResponse": {
"required": ["currentTier", "groupId"],
"type": "object",
"properties": {
"groupId": {
"format": "int64",
"type": "integer"
},
"currentTier": {
"format": "int32",
"type": "integer"
},
"previousTier": {
"format": "int32",
"type": "integer"
},
"tierUpdatedTime": {
"format": "date-time",
"type": "string"
},
"lastEvaluatedTime": {
"format": "date-time",
"type": "string"
},
"requirements": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Groups.Client.TierRequirement"
}
},
"capabilities": {
"$ref": "#/components/schemas/Roblox.Groups.Client.TierCapabilities"
}
},
"additionalProperties": false
},
"Roblox.Groups.Client.TierCapabilities": {
"required": ["isEligibleForUnrestrictedMessages"],
"type": "object",
"properties": {
"isEligibleForUnrestrictedMessages": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Groups.Client.TierEvaluationResultResponse": {
"required": ["passedSignals", "tierInfo"],
"type": "object",
"properties": {
"tierInfo": {
"$ref": "#/components/schemas/Roblox.Groups.Client.CommunityTierInfoResponse"
},
"passedSignals": {
"type": "array",
"items": {
"type": "string"
}
},
"requirements": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Groups.Client.TierRequirement"
}
}
},
"additionalProperties": false
},
"Roblox.Groups.Client.TierRequirement": {
"required": ["key", "satisfied"],
"type": "object",
"properties": {
"key": {
"format": "int32",
"description": " ['OwnerModerationStatusOk' = 1, 'OwnerAgeEstimationVerified' = 2, 'OwnerIdVerified' = 3, 'OwnerTwoStepVerified' = 4, 'CommunityMeetsPlayerRequirement' = 5]",
"enum": [1, 2, 3, 4, 5],
"type": "integer"
},
"satisfied": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.InGameContentTables.Client.GameLocation": {
"type": "object",
"properties": {
"path": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.AssetIdListModel": {
"description": "A model that contains a list of asset ids",
"type": "object",
"properties": {
"assetIds": {
"description": "The asset ids",
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.AssetsExplorerCategoryItemModel": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"displayName": {
"type": "string"
},
"filter": {
"type": "string"
},
"id": {
"format": "int64",
"type": "integer"
},
"type": {
"format": "int32",
"description": "Describes what type an AssetsExplorerCategoryItemModel contains ['AssetType' = 0, 'Bundle' = 1, 'Outfit' = 2, 'Set' = 3, 'Avatar' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"categoryType": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.AssetsExplorerCategoryModel": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"displayName": {
"type": "string"
},
"categoryType": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.AssetsExplorerCategoryItemModel"
}
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.CanViewInventoryResponse": {
"type": "object",
"properties": {
"canView": {
"description": "Boolean describing if the user's inventory can be viewed",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.CategoriesModel": {
"description": "Model class that contains the categories of the Inventory or Favorites page",
"type": "object",
"properties": {
"categories": {
"description": "Categories to show up in Inventory or Favorites page",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.AssetsExplorerCategoryModel"
}
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.CollectibleUserAssetModel": {
"description": "A model containing information about a Roblox.Platform.AssetOwnership.UserAsset",
"type": "object",
"properties": {
"userAssetId": {
"format": "int64",
"description": "The user asset id",
"type": "integer"
},
"serialNumber": {
"format": "int64",
"description": "The serial number of the user asset",
"type": "integer"
},
"assetId": {
"format": "int64",
"description": "The asset id of the user asset",
"type": "integer"
},
"name": {
"description": "The asset name of the asset",
"type": "string"
},
"recentAveragePrice": {
"format": "int64",
"description": "The recent average price of the asset",
"type": "integer"
},
"originalPrice": {
"format": "int64",
"description": "The original price of the asset",
"type": "integer"
},
"assetStock": {
"format": "int64",
"description": "The recent average price of the user asset",
"type": "integer"
},
"buildersClubMembershipType": {
"format": "int32",
"description": "The recent average price of the user asset ['None' = 0, 'BC' = 1, 'TBC' = 2, 'OBC' = 3, 'RobloxPremium' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"isOnHold": {
"description": "Whether the user asset has an active hold.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.CreatorModel": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"type": {
"format": "int32",
"description": " ['User' = 1, 'Group' = 2, 'Experience' = 3]",
"enum": [1, 2, 3],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.IItemModel": {
"description": "Model representing an inventory item",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The ID of the item",
"type": "integer",
"readOnly": true
},
"name": {
"description": "The name of the item",
"type": "string",
"readOnly": true
},
"type": {
"format": "int32",
"description": "The type of the item ['Asset' = 0, 'GamePass' = 1, 'Badge' = 2, 'Bundle' = 3, 'Avatar' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer",
"readOnly": true
},
"instanceId": {
"format": "int64",
"description": "The instance id of the item if applicable",
"type": "integer",
"readOnly": true
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.InventoryItemModel": {
"description": "A model containing information about an inventory item.",
"type": "object",
"properties": {
"expireAt": {
"format": "date-time",
"description": "Expiration timestamp for transient items",
"type": "string"
},
"userAssetId": {
"format": "int64",
"description": "The user asset id",
"type": "integer"
},
"assetId": {
"format": "int64",
"description": "The asset id of the user asset",
"type": "integer"
},
"assetName": {
"description": "The asset name of the user asset",
"type": "string"
},
"collectibleItemId": {
"description": "The id of the corresponding collectible item",
"type": "string"
},
"collectibleItemInstanceId": {
"description": "The id of the corresponding collectible item instance",
"type": "string"
},
"serialNumber": {
"format": "int64",
"description": "The serial number of the user asset",
"type": "integer"
},
"owner": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.UserModel"
},
"created": {
"format": "date-time",
"description": "The creation date of the user asset",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "The updated date of the user asset",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.PlaceModel": {
"type": "object",
"properties": {
"universeId": {
"format": "int64",
"type": "integer"
},
"placeId": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"creator": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.CreatorModel"
},
"priceInRobux": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.Models.UserModel": {
"description": "A model representing data about an Roblox.Platform.Membership.IUser",
"type": "object",
"properties": {
"userId": {
"format": "int64",
"description": "The user id",
"type": "integer"
},
"username": {
"description": "The username",
"type": "string"
},
"buildersClubMembershipType": {
"format": "int32",
"description": "The user's builders club membership type ['None' = 0, 'BC' = 1, 'TBC' = 2, 'OBC' = 3, 'RobloxPremium' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.V2.AssetOwnerResponse": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"collectibleItemInstanceId": {
"type": "string"
},
"serialNumber": {
"format": "int64",
"type": "integer"
},
"owner": {
"$ref": "#/components/schemas/Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Users.Client.AssociatedEntityType_"
},
"created": {
"format": "date-time",
"type": "string"
},
"updated": {
"format": "date-time",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.V2.CollectibleItemOwnerResponse": {
"type": "object",
"properties": {
"collectibleItemInstanceId": {
"type": "string"
},
"serialNumber": {
"format": "int64",
"type": "integer"
},
"owner": {
"$ref": "#/components/schemas/Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Users.Client.AssociatedEntityType_"
}
},
"additionalProperties": false
},
"Roblox.Inventory.Api.V2.UserAssetItemModelV2": {
"description": "The user asset item model for V2 controllers.",
"type": "object",
"properties": {
"assetId": {
"format": "int64",
"description": "The asset id of the user asset.",
"type": "integer"
},
"name": {
"description": "The name of asset with id Roblox.Inventory.Api.V2.UserAssetItemModelV2.AssetId.",
"type": "string"
},
"assetType": {
"format": "int32",
"description": "The asset type id of asset with id Roblox.Inventory.Api.V2.UserAssetItemModelV2.AssetId. ['Image' = 1, 'TShirt' = 2, 'Audio' = 3, 'Mesh' = 4, 'Lua' = 5, 'HTML' = 6, 'Text' = 7, 'Hat' = 8, 'Place' = 9, 'Model' = 10, 'Shirt' = 11, 'Pants' = 12, 'Decal' = 13, 'Avatar' = 16, 'Head' = 17, 'Face' = 18, 'Gear' = 19, 'Badge' = 21, 'GroupEmblem' = 22, 'Animation' = 24, 'Arms' = 25, 'Legs' = 26, 'Torso' = 27, 'RightArm' = 28, 'LeftArm' = 29, 'LeftLeg' = 30, 'RightLeg' = 31, 'Package' = 32, 'YouTubeVideo' = 33, 'GamePass' = 34, 'App' = 35, 'Code' = 37, 'Plugin' = 38, 'SolidModel' = 39, 'MeshPart' = 40, 'HairAccessory' = 41, 'FaceAccessory' = 42, 'NeckAccessory' = 43, 'ShoulderAccessory' = 44, 'FrontAccessory' = 45, 'BackAccessory' = 46, 'WaistAccessory' = 47, 'ClimbAnimation' = 48, 'DeathAnimation' = 49, 'FallAnimation' = 50, 'IdleAnimation' = 51, 'JumpAnimation' = 52, 'RunAnimation' = 53, 'SwimAnimation' = 54, 'WalkAnimation' = 55, 'PoseAnimation' = 56, 'LocalizationTableManifest' = 59, 'LocalizationTableTranslation' = 60, 'EmoteAnimation' = 61, 'Video' = 62, 'TexturePack' = 63, 'TShirtAccessory' = 64, 'ShirtAccessory' = 65, 'PantsAccessory' = 66, 'JacketAccessory' = 67, 'SweaterAccessory' = 68, 'ShortsAccessory' = 69, 'LeftShoeAccessory' = 70, 'RightShoeAccessory' = 71, 'DressSkirtAccessory' = 72, 'FontFamily' = 73, 'FontFace' = 74, 'MeshHiddenSurfaceRemoval' = 75, 'EyebrowAccessory' = 76, 'EyelashAccessory' = 77, 'MoodAnimation' = 78, 'DynamicHead' = 79, 'CodeSnippet' = 80, 'AdsVideo' = 81, 'OtaUpdate' = 82, 'Screenshot' = 83, 'RuntimePropertySet' = 84, 'StorePreviewVideo' = 85, 'GamePreviewVideo' = 86, 'CreatorExperienceConfig' = 87, 'FaceMakeup' = 88, 'LipMakeup' = 89, 'EyeMakeup' = 90, 'VoxelFragment' = 91, 'AvatarBackground' = 92, 'TextDocument' = 93, 'Post' = 94, 'AnimatedImage' = 95, 'ComputeFunction' = 96]",
"enum": [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21, 22,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
91, 92, 93, 94, 95, 96
],
"type": "integer"
},
"created": {
"format": "date-time",
"description": "The created date time of the user asset.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.ItemConfiguration.Api.Models.Request.PublishingPreferences.CreatePublishingPreferencesRequest": {
"type": "object",
"properties": {
"creatorUserId": {
"format": "int64",
"type": "integer"
},
"creatorGroupId": {
"format": "int64",
"type": "integer"
},
"publishingType": {
"format": "int32",
"description": "Publishing type for the collectible. Currently can be either Limited or NonLimited. ['Invalid' = 0, 'Limited' = 1, 'NonLimited' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"saleLocationType": {
"format": "int32",
"description": "Represents possible SaleLocation types of the Collectibles System. ['SALE_LOCATION_TYPE_INVALID' = 0, 'SALE_LOCATION_TYPE_SHOP_AND_ALL_EXPERIENCES' = 1, 'SALE_LOCATION_EXPERIENCES_AND_DEV_API_ONLY' = 2, 'SALE_LOCATION_TYPE_SHOP_ONLY' = 3, 'SALE_LOCATION_TYPE_SHOP_AND_EXPERIENCES_BY_ID' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"places": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
},
"priceInRobux": {
"format": "int64",
"type": "integer"
},
"priceOffset": {
"format": "int64",
"type": "integer"
},
"isFree": {
"type": "boolean"
},
"enableRegionalPricing": {
"type": "boolean"
},
"isRentalOptIn": {
"type": "boolean"
},
"autoPublishEnabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.ItemConfiguration.Api.Models.Request.PublishingPreferences.UpdatePublishingPreferencesRequest": {
"type": "object",
"properties": {
"creatorUserId": {
"format": "int64",
"type": "integer"
},
"creatorGroupId": {
"format": "int64",
"type": "integer"
},
"publishingType": {
"format": "int32",
"enum": [0, 1, 2],
"type": "integer"
},
"saleLocationType": {
"format": "int32",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"places": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
},
"priceInRobux": {
"format": "int64",
"type": "integer"
},
"priceOffset": {
"format": "int64",
"type": "integer"
},
"isFree": {
"type": "boolean"
},
"enableRegionalPricing": {
"type": "boolean"
},
"isRentalOptIn": {
"type": "boolean"
},
"autoPublishEnabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.ItemConfiguration.Api.Models.Response.PublishingPreferences.PublishingPreferencesResponse": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"creatorUserId": {
"format": "int64",
"type": "integer"
},
"creatorGroupId": {
"format": "int64",
"type": "integer"
},
"publishingType": {
"format": "int32",
"description": "Publishing type for the collectible. Currently can be either Limited or NonLimited. ['Invalid' = 0, 'Limited' = 1, 'NonLimited' = 2]",
"enum": [0, 1, 2],
"type": "integer"
},
"saleLocationType": {
"format": "int32",
"description": "Represents possible SaleLocation types of the Collectibles System. ['SALE_LOCATION_TYPE_INVALID' = 0, 'SALE_LOCATION_TYPE_SHOP_AND_ALL_EXPERIENCES' = 1, 'SALE_LOCATION_EXPERIENCES_AND_DEV_API_ONLY' = 2, 'SALE_LOCATION_TYPE_SHOP_ONLY' = 3, 'SALE_LOCATION_TYPE_SHOP_AND_EXPERIENCES_BY_ID' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
},
"places": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
},
"priceInRobux": {
"format": "int64",
"type": "integer"
},
"priceOffset": {
"format": "int64",
"type": "integer"
},
"isFree": {
"type": "boolean"
},
"enableRegionalPricing": {
"type": "boolean"
},
"isRentalOptIn": {
"type": "boolean"
},
"autoPublishEnabled": {
"type": "boolean"
},
"created": {
"format": "date-time",
"type": "string"
},
"updated": {
"format": "date-time",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.CountryRegion": {
"description": "Model for Country Regions",
"type": "object",
"properties": {
"code": {
"description": "code of country region",
"type": "string",
"readOnly": true
},
"name": {
"description": "native name of country region",
"type": "string",
"readOnly": true
},
"displayName": {
"description": "localized name of country region. Example \"Afghanistan\"",
"type": "string",
"readOnly": true
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.CountryRegionListResponse": {
"description": "Returns list of supported country/regions",
"type": "object",
"properties": {
"countryRegionList": {
"description": "List of supported country/regions. Will be empty on error.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Locale.Api.CountryRegion"
}
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.Language": {
"description": "Model for Language",
"type": "object",
"properties": {
"id": {
"format": "int32",
"description": "id of language",
"type": "integer"
},
"name": {
"description": "name of language",
"type": "string"
},
"nativeName": {
"description": "native name of language",
"type": "string"
},
"languageCode": {
"description": "language code of language",
"type": "string"
},
"isRightToLeft": {
"description": "whether or not the language is read right-to-left",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.SetShowRobloxTranslationsRequest": {
"description": "Request entity to set the ShowRobloxTranslations field for an account",
"type": "object",
"properties": {
"showRobloxTranslations": {
"description": "Value to set the ShowRobloxTranslations field to",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.SetSupportedLocaleForUserRequest": {
"description": "Request entity to set Supported Locale for user",
"type": "object",
"properties": {
"supportedLocaleCode": {
"description": "SupportedLocale code",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.SuccessResponse": {
"description": "Tells the operation is successful or not",
"type": "object",
"properties": {
"success": {
"description": "Returns true on success otherwise false",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.SupportedLocale": {
"description": "Model for Supported locale",
"type": "object",
"properties": {
"id": {
"format": "int32",
"description": "id of supported locale",
"type": "integer",
"readOnly": true
},
"locale": {
"description": "locale of supported locale. Example \"en-us\"",
"type": "string",
"readOnly": true
},
"name": {
"description": "Name of supported locale.",
"type": "string"
},
"nativeName": {
"description": "Name of supported locale in native language. Example \"English\"",
"type": "string",
"readOnly": true
},
"language": {
"$ref": "#/components/schemas/Roblox.Locale.Api.Language"
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.SupportedLocaleLocus": {
"description": "Model for Supported locale with user locus information",
"type": "object",
"properties": {
"locale": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SupportedLocale"
},
"isEnabledForFullExperience": {
"description": "Is locale enabled for full experience",
"type": "boolean"
},
"isEnabledForSignupAndLogin": {
"description": "Is locale enabled for signup and login",
"type": "boolean"
},
"isEnabledForInGameUgc": {
"description": "Is locale enabled for in game ugc",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.SupportedLocalesResponse": {
"description": "Returns list of supported locales",
"type": "object",
"properties": {
"supportedLocales": {
"description": "List of supported locales. Will be empty on error.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SupportedLocale"
}
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.UserLocaleResponse": {
"type": "object",
"properties": {
"supportedLocale": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SupportedLocale"
},
"nativeLanguage": {
"$ref": "#/components/schemas/Roblox.Locale.Api.Language"
}
},
"additionalProperties": false
},
"Roblox.Locale.Api.UserLocalizationLocusLocalesResponse": {
"description": "Returns available Roblox.Locale.Api.SupportedLocale models.",
"type": "object",
"properties": {
"signupAndLogin": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SupportedLocale"
},
"generalExperience": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SupportedLocale"
},
"ugc": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SupportedLocale"
},
"showRobloxTranslations": {
"description": "Whether Roblox-suggested translations should be shown to the user.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Localization.Client.LanguageFamily": {
"type": "object",
"properties": {
"id": {
"format": "int32",
"type": "integer"
},
"name": {
"type": "string"
},
"nativeName": {
"type": "string"
},
"languageCode": {
"type": "string"
},
"isRightToLeft": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Localization.Client.SupportedLocale": {
"type": "object",
"properties": {
"id": {
"format": "int32",
"type": "integer"
},
"locale": {
"enum": [
"en_us",
"es_es",
"fr_fr",
"id_id",
"it_it",
"ja_jp",
"ko_kr",
"ru_ru",
"th_th",
"tr_tr",
"vi_vn",
"pt_br",
"de_de",
"zh_cn",
"zh_tw",
"bg_bg",
"bn_bd",
"cs_cz",
"da_dk",
"el_gr",
"et_ee",
"fi_fi",
"hi_in",
"hr_hr",
"hu_hu",
"ka_ge",
"kk_kz",
"km_kh",
"lt_lt",
"lv_lv",
"ms_my",
"my_mm",
"nb_no",
"nl_nl",
"fil_ph",
"pl_pl",
"ro_ro",
"uk_ua",
"si_lk",
"sk_sk",
"sl_sl",
"sq_al",
"bs_ba",
"sr_rs",
"sv_se",
"zh_cjv",
"ar_001",
"en_gb",
"pt_pt",
"es_mx",
"fr_ca"
],
"type": "string"
},
"localeCode": {
"type": "string"
},
"name": {
"type": "string"
},
"nativeName": {
"type": "string"
},
"language": {
"$ref": "#/components/schemas/Roblox.Localization.Client.LanguageFamily"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.AssetEntry": {
"description": "A source asset (image) entry in a localization table, along with its per-locale asset\r\ntranslations. Unlike Roblox.LocalizationTables.Api.Entry, an asset entry is identified by its source asset\r\nid and has no key/context/source; each translation's Roblox.LocalizationTables.Api.Translation.TranslationText\r\nholds the translated asset id.",
"type": "object",
"properties": {
"sourceAssetId": {
"format": "int64",
"type": "integer"
},
"assetType": {
"format": "int32",
"type": "integer"
},
"assetClass": {
"format": "int32",
"type": "integer"
},
"assetProp": {
"format": "int32",
"type": "integer"
},
"translations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Translation"
}
},
"creator": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Translator"
},
"gameLocations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.InGameContentTables.Client.GameLocation"
}
},
"createdTime": {
"format": "date-time",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.AutoLocalizationMetadataResponse": {
"type": "object",
"properties": {
"isReactVersionEnabledForAutoLocalizationSettings": {
"description": "Is React Implementation of AutoLocalization Settings Enabled",
"type": "boolean"
},
"isTabbedUIEnabledForConfigureLocalizationPage": {
"description": "Is Tabbed UI Enabled for Configure Localization Page",
"type": "boolean"
},
"isAutomaticTranslationToggleUIEnabled": {
"description": "Is Toggle UI Enabled for Automatic Translations",
"type": "boolean"
},
"isAutomaticTranslationQuotaUIEnabled": {
"description": "Is Quota UI Enabled for Automatic Translations",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.CreateTableRequest": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"ownerType": {
"enum": ["User", "Group"],
"type": "string"
},
"ownerId": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.CreateTableResponse": {
"type": "object",
"properties": {
"id": {
"format": "uuid",
"type": "string"
},
"assetId": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.CursorEntryIdentifier": {
"description": "A model that contains an entry identifier and an associated cursor for paged lookups.",
"type": "object",
"properties": {
"cursor": {
"description": "The location to begin our query.",
"type": "string"
},
"identifier": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryIdentifier"
},
"count": {
"format": "int32",
"description": "The translation history count to get.",
"type": "integer"
},
"sortOrder": {
"description": "In which order the data is sorted.",
"enum": ["Asc", "Desc"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.Entry": {
"type": "object",
"properties": {
"identifier": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryIdentifier"
},
"metadata": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryMetadata"
},
"translations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Translation"
}
},
"createdTime": {
"format": "date-time",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.EntryIdentifier": {
"type": "object",
"properties": {
"key": {
"type": "string"
},
"context": {
"type": "string"
},
"source": {
"type": "string"
},
"entryFormat": {
"enum": ["Invalid", "Legacy", "Icu"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.EntryIdentifierWithTranslation": {
"type": "object",
"properties": {
"translation": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Translation"
},
"key": {
"type": "string"
},
"context": {
"type": "string"
},
"source": {
"type": "string"
},
"entryFormat": {
"enum": ["Invalid", "Legacy", "Icu"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.EntryMetadata": {
"type": "object",
"properties": {
"example": {
"type": "string"
},
"gameLocations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.InGameContentTables.Client.GameLocation"
}
},
"entryFormat": {
"enum": ["Invalid", "Legacy", "Icu"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.EntryOperationLimits": {
"type": "object",
"properties": {
"maxContextLength": {
"format": "int32",
"description": "Maximum character limit for entry context",
"type": "integer"
},
"maxKeyLength": {
"format": "int32",
"description": "Maximum character limit for entry key",
"type": "integer"
},
"maxSourceLength": {
"format": "int32",
"description": "Maximum character limit for entry source text",
"type": "integer"
},
"maxExampleLength": {
"format": "int32",
"description": "Maximum character limit for entry example",
"type": "integer"
},
"maxGameLocationPathLength": {
"format": "int32",
"description": "Maximum character limit for game location path",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.EntryTranslationFeedback": {
"type": "object",
"properties": {
"identifier": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryIdentifierWithTranslation"
},
"feedbackCount": {
"format": "int32",
"description": "The number of unique reporters that send feedback to the given entry identifier.",
"type": "integer"
},
"playerSuggestionText": {
"description": "A set of player translation suggestion in text for the given entry identifier.",
"type": "array",
"items": {
"type": "string"
}
},
"reasons": {
"description": "A set of translation feedback reasons for the given entry identifier.",
"type": "array",
"items": {
"description": "Enum for translation feedback reason.",
"enum": [
"None",
"Untranslated",
"Inaccurate",
"SpellingOrGrammar",
"Inappropriate"
],
"type": "string"
}
},
"robloxSuggestionText": {
"description": "Roblox translation suggestion in text for the given entry identifier.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.EntryTranslationHistoryPaged": {
"type": "object",
"properties": {
"identifier": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryIdentifier"
},
"history": {
"description": "A batch of TranslationHistory for the given entry identifier.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.TranslationHistory"
}
},
"nextCursor": {
"description": "The cursor to send up on the next request if more history data is required.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.Error": {
"type": "object",
"properties": {
"errorCode": {
"format": "int32",
"type": "integer"
},
"errorMessage": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.FailedEntry": {
"type": "object",
"properties": {
"error": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Error"
},
"identifier": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryIdentifier"
},
"metadata": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryMetadata"
},
"translations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Translation"
}
},
"createdTime": {
"format": "date-time",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.FailedEntryTranslationHistoryPaged": {
"type": "object",
"properties": {
"identifier": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryIdentifier"
},
"count": {
"format": "int32",
"type": "integer"
},
"error": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Error"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GameAutolocalizationInformationResponse": {
"type": "object",
"properties": {
"isAutolocalizationEnabled": {
"type": "boolean"
},
"isAutomaticEntriesSettingEnabled": {
"type": "boolean"
},
"isAutomaticEntriesDeletionEnabled": {
"type": "boolean"
},
"shouldUseLocalizationTable": {
"type": "boolean"
},
"autoLocalizationTableId": {
"format": "uuid",
"type": "string"
},
"sourceLanguage": {
"type": "string"
},
"assetId": {
"format": "int64",
"type": "integer"
},
"shouldUseImageLocalizationTable": {
"type": "boolean"
},
"isAutoLocalizationForImageEnabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GetLimitsResponse": {
"type": "object",
"properties": {
"entryOperationLimits": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryOperationLimits"
},
"tableOperationLimits": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.TableOperationLimits"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GetTableAssetEntriesPagedResponse": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.AssetEntry"
}
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GetTableEntriesPagedResponse": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Entry"
}
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GetTableEntriesTranslationFeedbackRequest": {
"description": "A request model for GetTableEntriesTranslationFeedback.",
"type": "object",
"properties": {
"sourceLocale": {
"description": "locale code of source language, we only accept language code at the moment.",
"type": "string"
},
"entries": {
"description": "entry identifier",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryIdentifierWithTranslation"
}
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GetTableEntriesTranslationFeedbackResponse": {
"description": "A response model for GetTableEntriesTranslationFeedback.",
"type": "object",
"properties": {
"tableId": {
"format": "uuid",
"description": "The entries' tableId.",
"type": "string"
},
"entries": {
"description": "The entries with their identifier, translation feedback details.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryTranslationFeedback"
}
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GetTableEntriesTranslationHistoryRequest": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"entries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.CursorEntryIdentifier"
}
},
"sourceType": {
"enum": ["Invalid", "Text", "AssetImage"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GetTableEntriesTranslationHistoryResponse": {
"description": "A response model for GetTableEntriesTranslationHistory.",
"type": "object",
"properties": {
"tableId": {
"format": "uuid",
"description": "The entries' tableId.",
"type": "string"
},
"locale": {
"description": "The locale of the translations.",
"type": "string"
},
"entries": {
"description": "The entries with their identifier, translation history, and next cursor.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryTranslationHistoryPaged"
}
},
"failedEntries": {
"description": "The failed entries.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.FailedEntryTranslationHistoryPaged"
}
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GetTableEntryCountResponse": {
"type": "object",
"properties": {
"id": {
"format": "uuid",
"type": "string"
},
"entryCount": {
"format": "int32",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.GetTableResponse": {
"type": "object",
"properties": {
"id": {
"format": "uuid",
"type": "string"
},
"name": {
"type": "string"
},
"ownerType": {
"description": "Enum for valid OwnerTypes.",
"enum": ["User", "Group"],
"type": "string"
},
"ownerId": {
"format": "int64",
"type": "integer"
},
"assetId": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.LocalizationTablesMetadataResponse": {
"type": "object",
"properties": {
"isBulkUploadFeatureEnabled": {
"description": "Is bulk upload feature enabled",
"type": "boolean"
},
"isCsvDownloadEnabled": {
"description": "Is CSV download feature enabled",
"type": "boolean"
},
"isAccessToTranslationMetaDataEnabled": {
"description": "Is access to translation metadata feature enabled",
"type": "boolean"
},
"isTranslationManagementRedirectionEnabled": {
"description": "Is access to translation metadata feature enabled",
"type": "boolean"
},
"isUntranslatedFilterEnabled": {
"description": "Is untranslated filter on UI is enabled",
"type": "boolean"
},
"isAutomaticTranslationFilterEnabled": {
"description": "Is filter for automatic translations on UI is enabled",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.ModifiedEntry": {
"type": "object",
"properties": {
"identifier": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryIdentifier"
},
"translations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Translation"
}
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.PatchEntry": {
"type": "object",
"properties": {
"identifier": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryIdentifier"
},
"metadata": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.EntryMetadata"
},
"translations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.PatchTranslation"
}
},
"delete": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.PatchTranslation": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"translationText": {
"type": "string"
},
"delete": {
"type": "boolean"
},
"changeAgent": {
"$ref": "#/components/schemas/Roblox.Localizationtables.Localizationtables.V1.ChangeAgent"
},
"updatedTime": {
"format": "date-time",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.RaiseEventForAutoScrapedEntriesCleanupRequest": {
"type": "object",
"properties": {
"maxAgeForFlush": {
"description": "The time range to remove entries from. Following ISO 8601 Durations format",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.SetAutolocalizationSettingsForGameRequest": {
"type": "object",
"properties": {
"isAutolocalizationEnabled": {
"type": "boolean"
},
"isAutomaticEntriesSettingEnabled": {
"type": "boolean"
},
"isAutomaticEntriesDeletionsEnabled": {
"type": "boolean"
},
"shouldUseLocalizationTable": {
"type": "boolean"
},
"shouldUseImageLocalizationTable": {
"type": "boolean"
},
"isAutoLocalizationForImageEnabled": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.SetAutolocalizationTableForGameRequest": {
"type": "object",
"properties": {
"tableId": {
"format": "uuid",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.TableOperationLimits": {
"type": "object",
"properties": {
"maxEntriesPerUpdate": {
"format": "int32",
"description": "Maximum number of entries for a patch request",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.Translation": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"translationText": {
"type": "string"
},
"translator": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Translator"
},
"updatedTime": {
"format": "date-time",
"type": "string"
},
"feedbackCount": {
"format": "int32",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.TranslationHistory": {
"description": "A model containing a translation, translator, and translation time.",
"type": "object",
"properties": {
"translationText": {
"description": "The translation provided by the translator.",
"type": "string"
},
"translator": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.Translator"
},
"created": {
"format": "date-time",
"description": "The time the translation was provided.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.Translator": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"agentType": {
"description": " ['User' = 0, 'Automation' = 1]",
"enum": ["User", "Automation"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.UpdateTableContentsRequest": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"entries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.PatchEntry"
}
}
},
"additionalProperties": false
},
"Roblox.LocalizationTables.Api.UpdateTableContentsResponse": {
"type": "object",
"properties": {
"failedEntriesAndTranslations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.FailedEntry"
}
},
"modifiedEntriesAndTranslations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.LocalizationTables.Api.ModifiedEntry"
}
}
},
"additionalProperties": false
},
"Roblox.Localizationtables.Localizationtables.V1.ChangeAgent": {
"type": "object",
"properties": {
"ChangeAgentType": {
"description": " ['Invalid' = 0, 'User' = 1, 'Automation' = 2, 'Default' = 3]",
"enum": ["Invalid", "User", "Automation", "Default"],
"type": "string"
},
"Id": {
"type": "string"
},
"OptionalIdCase": {
"description": " ['None' = 0, 'Id' = 2]",
"enum": ["None", "Id"],
"type": "string",
"readOnly": true
}
},
"additionalProperties": false
},
"Roblox.Platform.Avatar.BodyColorsModelV2": {
"type": "object",
"properties": {
"headColor3": {
"type": "string"
},
"torsoColor3": {
"type": "string"
},
"rightArmColor3": {
"type": "string"
},
"leftArmColor3": {
"type": "string"
},
"rightLegColor3": {
"type": "string"
},
"leftLegColor3": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Platform.UniverseSettings.UniverseAvatarAssetOverrideResponseModel": {
"type": "object",
"properties": {
"assetID": {
"format": "int64",
"type": "integer"
},
"assetTypeID": {
"format": "int32",
"type": "integer"
},
"isPlayerChoice": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Platform.UserPhoneNumberVerification.Models.PendingVerificationResponse": {
"type": "object",
"properties": {
"verificationChannel": {
"type": "string"
},
"data": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.AnnouncementsDetailsResponse": {
"description": "A message details response.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The message's ID.",
"type": "integer"
},
"sender": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.VerifiedSkinnyUserResponse"
},
"subject": {
"description": "The subject of the message.",
"type": "string"
},
"body": {
"description": "The body of the message.",
"type": "string"
},
"created": {
"format": "date-time",
"description": "When the message was created.",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "When the message was last updated.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.AnnouncementsMetadataResponse": {
"description": "A message details response.",
"type": "object",
"properties": {
"numOfAnnouncements": {
"format": "int32",
"description": "Number of incoming news",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.BatchMessagesRequest": {
"type": "object",
"properties": {
"messageIds": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.BatchMessagesResponse": {
"type": "object",
"properties": {
"failedMessages": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.FailedMessageResponse"
}
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.FailedMessageResponse": {
"type": "object",
"properties": {
"messageId": {
"format": "int64",
"type": "integer"
},
"errorMessage": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.GetAnnouncementsResponse": {
"type": "object",
"properties": {
"collection": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.AnnouncementsDetailsResponse"
}
},
"totalCollectionSize": {
"format": "int32",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.GetMessagesResponse": {
"type": "object",
"properties": {
"collection": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.MessageDetailsResponse"
}
},
"totalCollectionSize": {
"format": "int64",
"type": "integer"
},
"totalPages": {
"format": "int32",
"type": "integer"
},
"pageNumber": {
"format": "int32",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.MessageDetailsResponse": {
"description": "A message details response.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The message's ID.",
"type": "integer"
},
"sender": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.VerifiedSkinnyUserResponse"
},
"recipient": {
"$ref": "#/components/schemas/Roblox.PrivateMessages.Api.Models.VerifiedSkinnyUserResponse"
},
"subject": {
"description": "The subject of the message.",
"type": "string"
},
"body": {
"description": "The body of the message.",
"type": "string"
},
"created": {
"format": "date-time",
"description": "When the message was created.",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "When the message was last updated.",
"type": "string"
},
"isRead": {
"description": "Whether or not the message has been read.",
"type": "boolean"
},
"isSystemMessage": {
"description": "Whether or not the message is a system message.",
"type": "boolean"
},
"isReportAbuseDisplayed": {
"description": "Whether or not the abuse report link is displayed for the message.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.UnreadMessagesCountResponse": {
"type": "object",
"properties": {
"count": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.PrivateMessages.Api.Models.VerifiedSkinnyUserResponse": {
"description": "A response model representing user basic information and the user's verified badge status.",
"type": "object",
"properties": {
"hasVerifiedBadge": {
"description": "Whether the user has a verified badge.",
"type": "boolean"
},
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"displayName": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Publish.Api.UploadResponse": {
"description": "A response used when an upload has completed.",
"type": "object",
"properties": {
"targetId": {
"format": "int64",
"description": "The target Id of the uploaded item.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Thumbnails.Apis.Models.ThumbnailBatchRequest": {
"type": "object",
"properties": {
"requestId": {
"description": "The request id. (Generated client side, used to represent the items in the request)",
"type": "string"
},
"targetId": {
"format": "int64",
"description": "The thumbnail target id",
"type": "integer"
},
"token": {
"description": "Alternative ase token used to identify a thumbnail",
"type": "string"
},
"alias": {
"description": "Alternative string used to identify a thumbnail\ninstead of targetId",
"type": "string"
},
"type": {
"description": "The type of the thumbnails ['Avatar' = 1, 'AvatarHeadShot' = 2, 'GameIcon' = 3, 'BadgeIcon' = 4, 'GameThumbnail' = 5, 'GamePass' = 6, 'Asset' = 7, 'BundleThumbnail' = 8, 'Outfit' = 9, 'GroupIcon' = 10, 'DeveloperProduct' = 11, 'AvatarBust' = 12, 'AutoGeneratedAsset' = 13, 'PlaceIcon' = 14, 'AutoGeneratedGameIcon' = 15, 'ForceAutoGeneratedGameIcon' = 16, 'Look' = 17, 'CreatorContextAsset' = 18, 'Screenshot' = 19]",
"enum": [
"Avatar",
"AvatarHeadShot",
"GameIcon",
"BadgeIcon",
"GameThumbnail",
"GamePass",
"Asset",
"BundleThumbnail",
"Outfit",
"GroupIcon",
"DeveloperProduct",
"AvatarBust",
"AutoGeneratedAsset",
"PlaceIcon",
"AutoGeneratedGameIcon",
"ForceAutoGeneratedGameIcon",
"Look",
"CreatorContextAsset",
"Screenshot"
],
"type": "string"
},
"size": {
"description": "The thumbnail size",
"type": "string"
},
"format": {
"description": "The thumbnail format",
"type": "string"
},
"isCircular": {
"description": "Is the thumbnail circular shape",
"type": "boolean"
},
"accessContext": {
"description": "Access context for asset permission checks (only relevant for Asset thumbnail types)",
"type": "string"
},
"headShape": {
"description": "Head shape for dynamic head thumbnails (only relevant for Asset thumbnail types with dynamic head)",
"type": "string"
},
"includeBackground": {
"description": "Whether to include a background in avatar thumbnails (defaults to false)",
"type": "boolean"
},
"includeProfileFrame": {
"description": "Whether to composite the user's equipped profile frame into the thumbnail (defaults to false).\nWhen true the returned image has the frame baked in server-side.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.CanTradeResponse": {
"type": "object",
"properties": {
"canTrade": {
"description": "Returns true if you can trade with the given user.",
"type": "boolean"
},
"status": {
"format": "int32",
"description": "If you can't trade with a user, status explains why you can't trade with them. ['Unknown' = 0, 'CanTrade' = 1, 'CannotTradeWithSelf' = 2, 'SenderCannotTrade' = 3, 'ReceiverCannotTrade' = 4, 'SenderPrivacyTooStrict' = 5, 'UsersCannotTrade' = 6, 'TradeAccepterNeedsFriction' = 7, 'SenderAgeCheckRequired' = 8]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.CanTradeResponse": {
"description": "The response for the CanTrade endpoint.",
"type": "object",
"properties": {
"userId": {
"format": "int64",
"description": "The ID of the user.",
"type": "integer"
},
"canTrade": {
"description": "Whether the user can trade or not.",
"type": "boolean"
},
"tradeEligibility": {
"description": "The trade eligibility status of the user. ['Unknown' = 0, 'Eligible' = 1, 'IneligibleTradeSystemDisabled' = 2, 'IneligibleCannotTradeWithRoblox' = 3, 'IneligibleUserNotFound' = 4, 'IneligibleMissingPremiumMembership' = 5, 'IneligibleLegalOrRegulatoryRestrictions' = 6, 'IneligibleFreeTradesLimitReached' = 7, 'IneligibleAgeCheckRequired' = 8]",
"enum": [
"Unknown",
"Eligible",
"IneligibleTradeSystemDisabled",
"IneligibleCannotTradeWithRoblox",
"IneligibleUserNotFound",
"IneligibleMissingPremiumMembership",
"IneligibleLegalOrRegulatoryRestrictions",
"IneligibleFreeTradesLimitReached",
"IneligibleAgeCheckRequired"
],
"type": "string"
},
"freeTradesAllowance": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.FreeTradesAllowanceResponse"
},
"currencyTransferEligibility": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.CurrencyTransferEligibilityResponse"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.CanTradeWithResponse": {
"description": "The response for the CanTradeWith endpoint.",
"type": "object",
"properties": {
"userId": {
"format": "int64",
"description": "The ID of the user.",
"type": "integer"
},
"targetUserId": {
"format": "int64",
"description": "The ID of the target user.",
"type": "integer"
},
"canTrade": {
"description": "Whether the user can trade with the target user or not.",
"type": "boolean"
},
"mutualTradeEligibility": {
"description": "The mutual trade eligibility status between the two users. ['Unknown' = 0, 'Eligible' = 1, 'CallingUserIneligible' = 2, 'TargetUserIneligible' = 3, 'CannotTradeWithSelf' = 4, 'CallingUserPrivacySettingsRestricted' = 5, 'CallingUserAgeCheckRequired' = 6]",
"enum": [
"Unknown",
"Eligible",
"CallingUserIneligible",
"TargetUserIneligible",
"CannotTradeWithSelf",
"CallingUserPrivacySettingsRestricted",
"CallingUserAgeCheckRequired"
],
"type": "string"
},
"currencyTransferEligibility": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.CurrencyTransferEligibilityResponse"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.CurrencyTransferEligibilityResponse": {
"type": "object",
"properties": {
"canSend": {
"type": "boolean"
},
"canRequest": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.FreeTradesAllowanceResponse": {
"type": "object",
"properties": {
"limit": {
"format": "int32",
"type": "integer"
},
"remaining": {
"format": "int32",
"type": "integer"
},
"window": {
"description": " ['Day' = 1, 'Week' = 2, 'Month' = 3, 'Year' = 4, 'Lifetime' = 5]",
"default": "month",
"enum": ["day", "week", "month", "year", "lifetime"],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.GetUserTradableItemsResponse": {
"description": "The response for the GetUserTradableItems endpoint.",
"type": "object",
"properties": {
"userId": {
"format": "int64",
"description": "The ID of the user.",
"type": "integer"
},
"items": {
"description": "The items that the user can trade.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradableItem"
}
},
"nextPageCursor": {
"description": "The cursor for the next page of items.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.ItemTarget": {
"description": "The underlying of a tradable item.",
"type": "object",
"properties": {
"itemType": {
"description": "The type of the underlying. ['Unknown' = 0, 'Asset' = 1, 'Bundle' = 2]",
"enum": ["Unknown", "Asset", "Bundle"],
"type": "string"
},
"targetId": {
"description": "The id of the underlying.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.NewTradeResponse": {
"description": "Represents a newly created trade.",
"type": "object",
"properties": {
"tradeId": {
"format": "int64",
"description": "The ID of the trade.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.TradableItem": {
"description": "A tradable item.",
"type": "object",
"properties": {
"collectibleItemId": {
"description": "The collectible item id.",
"type": "string"
},
"itemTarget": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.ItemTarget"
},
"itemName": {
"description": "The name of the item.",
"type": "string"
},
"originalPrice": {
"format": "int64",
"description": "The original price of the item.",
"type": "integer"
},
"recentAveragePrice": {
"format": "int64",
"description": "The recent average price of the item.",
"type": "integer"
},
"assetStock": {
"format": "int64",
"description": "Total quantity of the item.",
"type": "integer"
},
"instances": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradableItemInstance"
}
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.TradableItemInstance": {
"description": "A tradable item instance.",
"type": "object",
"properties": {
"collectibleItemInstanceId": {
"description": "The collectible item instance id.",
"type": "string"
},
"itemTarget": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.ItemTarget"
},
"itemName": {
"description": "The name of the item.",
"type": "string"
},
"serialNumber": {
"format": "int64",
"description": "The serial number of the item if it is LimitedUnique.",
"type": "integer"
},
"originalPrice": {
"format": "int64",
"description": "The original price of the item.",
"type": "integer"
},
"recentAveragePrice": {
"format": "int64",
"description": "The recent average price of the item.",
"type": "integer"
},
"assetStock": {
"format": "int64",
"description": "Total quantity of the item.",
"type": "integer"
},
"isOnHold": {
"description": "Whether the item is on hold.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.TradeDetailsResponse": {
"description": "The response for the TradeDetailsV2 endpoint.",
"type": "object",
"properties": {
"tradeId": {
"format": "int64",
"description": "The ID of the trade.",
"type": "integer"
},
"status": {
"description": "The status of the trade. ['Unknown' = 1, 'Open' = 2, 'Pending' = 3, 'Completed' = 4, 'Expired' = 5, 'Declined' = 6, 'RejectedDueToError' = 7, 'Countered' = 8, 'Processing' = 9, 'InterventionRequired' = 10, 'TwoStepVerificationRequired' = 11]",
"enum": [
"Unknown",
"Open",
"Pending",
"Completed",
"Expired",
"Declined",
"RejectedDueToError",
"Countered",
"Processing",
"InterventionRequired",
"TwoStepVerificationRequired"
],
"type": "string"
},
"participantAOffer": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradeOffer"
},
"participantBOffer": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradeOffer"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.TradeOffer": {
"description": "Represents a trade offer.",
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Users.SkinnyUserResponse"
},
"robux": {
"format": "int64",
"description": "The amount of Robux in the trade offer.",
"type": "integer"
},
"items": {
"description": "The items in the trade offer.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradableItemInstance"
}
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.TradeOfferRequest": {
"description": "Represents a trade offer.",
"type": "object",
"properties": {
"userId": {
"format": "int64",
"description": "The user ID of the offer.",
"type": "integer"
},
"robux": {
"format": "int64",
"description": "The amount of Robux in the trade offer.",
"type": "integer"
},
"collectibleItemInstanceIds": {
"description": "List of items in the trade offer.",
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.Models.V2.TradeRequest": {
"description": "Represents a trade request. The calling user must be either participant A or B in the trade.",
"type": "object",
"properties": {
"senderOffer": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradeOfferRequest"
},
"recipientOffer": {
"$ref": "#/components/schemas/Roblox.Trades.Api.Models.V2.TradeOfferRequest"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.NewTradeResponse": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The trade id.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.TradeCountResponse": {
"type": "object",
"properties": {
"count": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.TradeDetailResponse": {
"type": "object",
"properties": {
"offers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeOfferResponse"
}
},
"id": {
"format": "int64",
"type": "integer"
},
"user": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Users.SkinnyUserResponse"
},
"created": {
"format": "date-time",
"type": "string"
},
"expiration": {
"format": "date-time",
"type": "string"
},
"isActive": {
"type": "boolean"
},
"status": {
"description": " ['Unknown' = 1, 'Open' = 2, 'Pending' = 3, 'Completed' = 4, 'Expired' = 5, 'Declined' = 6, 'RejectedDueToError' = 7, 'Countered' = 8, 'Processing' = 9, 'InterventionRequired' = 10, 'TwoStepVerificationRequired' = 11]",
"enum": [
"Unknown",
"Open",
"Pending",
"Completed",
"Expired",
"Declined",
"RejectedDueToError",
"Countered",
"Processing",
"InterventionRequired",
"TwoStepVerificationRequired"
],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.TradeMetadata": {
"type": "object",
"properties": {
"maxItemsPerSide": {
"format": "int32",
"type": "integer"
},
"minValueRatio": {
"format": "float",
"type": "number"
},
"tradeSystemMaxRobuxPercent": {
"format": "float",
"type": "number"
},
"tradeSystemRobuxFee": {
"format": "double",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.TradeOfferRequest": {
"type": "object",
"properties": {
"userId": {
"format": "int64",
"type": "integer"
},
"userAssetIds": {
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
},
"robux": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.TradeOfferResponse": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Users.SkinnyUserResponse"
},
"userAssets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Trades.Api.UserAssetResponse"
}
},
"robux": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.TradeRequest": {
"type": "object",
"properties": {
"offers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeOfferRequest"
}
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.TradeResponse": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"user": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Users.SkinnyUserResponse"
},
"created": {
"format": "date-time",
"type": "string"
},
"expiration": {
"format": "date-time",
"type": "string"
},
"isActive": {
"type": "boolean"
},
"status": {
"description": " ['Unknown' = 1, 'Open' = 2, 'Pending' = 3, 'Completed' = 4, 'Expired' = 5, 'Declined' = 6, 'RejectedDueToError' = 7, 'Countered' = 8, 'Processing' = 9, 'InterventionRequired' = 10, 'TwoStepVerificationRequired' = 11]",
"enum": [
"Unknown",
"Open",
"Pending",
"Completed",
"Expired",
"Declined",
"RejectedDueToError",
"Countered",
"Processing",
"InterventionRequired",
"TwoStepVerificationRequired"
],
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Trades.Api.UserAssetResponse": {
"description": "A model containing information about a UserAsset.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The user asset id",
"type": "integer"
},
"serialNumber": {
"format": "int64",
"description": "The serial number of the user asset",
"type": "integer"
},
"assetId": {
"format": "int64",
"description": "The asset id of the user asset",
"type": "integer"
},
"name": {
"description": "The asset name of the asset",
"type": "string"
},
"recentAveragePrice": {
"format": "int64",
"description": "The recent average price of the asset",
"type": "integer"
},
"originalPrice": {
"format": "int64",
"description": "The original price of the asset",
"type": "integer"
},
"assetStock": {
"format": "int64",
"description": "The asset stock.",
"type": "integer"
},
"membershipType": {
"format": "int32",
"description": "The minimum MembershipType required to own the userAsset. ['None' = 0, 'BC' = 1, 'TBC' = 2, 'OBC' = 3, 'RobloxPremium' = 4]",
"enum": [0, 1, 2, 3, 4],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.TranslationRoles.Api.Assignee": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"type": {
"description": " ['User' = 0, 'Group' = 1, 'GroupRole' = 2]",
"enum": ["user", "group", "groupRole"],
"type": "string"
}
}
},
"Roblox.TranslationRoles.Api.GetGameLocalizationRoleAssignmentsForUserResponse": {
"description": "Response model containing a list of games and associated role assignment info for the requested user and role.",
"type": "object",
"properties": {
"games": {
"description": "List of games with associated role assignment info.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameLocalization.Client.GameLocalizationRoles.GameLocalizationRoleAssignment"
}
},
"previousPageCursor": {
"description": "Cursor which can be used for navigating to previous page.",
"type": "string"
},
"nextPageCursor": {
"description": "Cursor which can be used for navigating to next page.",
"type": "string"
}
}
},
"Roblox.TranslationRoles.Api.UpdateRoleRequest": {
"description": "The request body for update role endpoints",
"type": "object",
"properties": {
"assigneeId": {
"format": "int64",
"description": "The id of the assignee",
"type": "integer"
},
"assigneeType": {
"description": "The type of the assignee ['User' = 0, 'Group' = 1, 'GroupRole' = 2]",
"enum": ["user", "group", "groupRole"],
"type": "string"
},
"role": {
"description": "The role to be assigned or revoked ['Translator' = 0]",
"enum": ["translator"],
"type": "string"
},
"revoke": {
"description": "To assign or to revoke",
"type": "boolean"
}
}
},
"Roblox.TwoStepVerification.Api.ClearRecoveryCodesRequest": {
"description": "Request information needed to clear existing recovery codes.",
"type": "object",
"properties": {
"password": {
"description": "The user's password.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.DisableSecurityKeyRequest": {
"description": "Request information needed to disable a list of security keys.",
"type": "object",
"properties": {
"credentialNicknames": {
"description": "An array of nicknames of credentials to be deleted.",
"type": "array",
"items": {
"type": "string"
}
},
"credentialIDs": {
"description": "An array of IDs of credentials to be deleted.\r\nPreferred over nicknames.",
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.DisableTwoStepVerificationRequest": {
"description": "Request information needed to disable two step verification.",
"type": "object",
"properties": {
"password": {
"description": "The user's password.",
"type": "string"
},
"reauthenticationToken": {
"description": "A re-authentication token redeemable for any password check.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.EnableAuthenticatorResponse": {
"description": "Response parameters for initiating enabling authenticator-based two step verification.",
"type": "object",
"properties": {
"setupToken": {
"description": "The setup token for turning on authenticator.",
"type": "string"
},
"qrCodeImageUrl": {
"description": "The Url to the QR code image to scan into the authenticator app.",
"type": "string"
},
"manualEntryKey": {
"description": "The manual entry key to input into the authenticator app.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.EnableSecurityKeyResponse": {
"description": "Response parameters for initiating enabling security key-based two step verification.",
"type": "object",
"properties": {
"creationOptions": {
"description": "The credential registration options for the hardware key.",
"type": "string"
},
"sessionId": {
"description": "The session of the registration attempt.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.EnableTwoStepVerificationRequest": {
"description": "Request parameters for enabling two step verification.",
"type": "object",
"properties": {
"password": {
"description": "The user's password.",
"type": "string"
},
"secureAuthenticationIntent": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.Models.Request.SecureAuthenticationIntentModel"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.EnableVerifyAuthenticatorRequest": {
"description": "Request parameters for authenticator enabling-verify.",
"type": "object",
"properties": {
"setupToken": {
"description": "The setup token from the enable authenticator request.",
"type": "string"
},
"code": {
"description": "The code from the authenticator app.",
"type": "string"
},
"password": {
"description": "The user's password.",
"type": "string"
},
"secureAuthenticationIntent": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.Models.Request.SecureAuthenticationIntentModel"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.EnableVerifyAuthenticatorResponse": {
"description": "Response parameters for finishing enabling authenticator-based two-step verification.",
"type": "object",
"properties": {
"recoveryCodes": {
"description": "Recovery codes automatically generated for the user (when applicable; the user should\r\nnot already have a set of recovery codes).",
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.EnableVerifySecurityKeyRequest": {
"description": "Request information needed to complete the registration of a security key.",
"type": "object",
"properties": {
"sessionId": {
"description": "The session of the registration attempt.",
"type": "string"
},
"credentialNickname": {
"description": "The nickname of the new credential.",
"type": "string"
},
"attestationResponse": {
"description": "The hardware key's response.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.ListSecurityKeyResponse": {
"description": "Response parameters for listing all credentials under a user.",
"type": "object",
"properties": {
"credentials": {
"description": "An array of credentials for a user.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.SecurityKeyCredential"
}
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.MetadataResponse": {
"description": "Two step verification system metadata.",
"type": "object",
"properties": {
"twoStepVerificationEnabled": {
"description": "Whether or not two step verification is globally enabled.",
"type": "boolean"
},
"authenticatorQrCodeSize": {
"description": "Authenticator QR code image dimensions.",
"type": "string"
},
"emailCodeLength": {
"format": "int32",
"description": "Number of characters in an email-based two step verification code.",
"type": "integer"
},
"authenticatorCodeLength": {
"format": "int32",
"description": "Number of characters in an authenticator-based two step verification code.",
"type": "integer",
"readOnly": true
},
"authenticatorHelpSiteAddress": {
"description": "Address of the help site provided to users to help them with authenticator.",
"type": "string"
},
"isPasswordRequiredForEnablingAuthenticator": {
"description": "Whether or not a password is required for enabling authenticator.",
"type": "boolean"
},
"isPasswordRequiredForEnablingEmailTwoStepVerification": {
"description": "Whether or not a password is required for enabling email 2sv.",
"type": "boolean"
},
"isUsingTwoStepWebviewComponent": {
"description": "Whether or not we're using the new 2sv webview component or the manual pop up",
"type": "boolean"
},
"isTwoStepEnabledRequiredForEmailPasswordRequirement": {
"description": "Whether or not a 2sv method has to be enabled to require password when enabling email two step verification.",
"type": "boolean"
},
"isTwoStepEnabledRequiredForAuthenticatorPasswordRequirement": {
"description": "Whether or not a 2sv method has to be enabled to require password when enabling authenticator.",
"type": "boolean"
},
"isSingleMethodEnforcementEnabled": {
"description": "Whether or not the frontend should enforce single method logic.",
"type": "boolean"
},
"isSmsTwoStepVerificationAvailable": {
"description": "Whether or not sms two step verification is available for the user.",
"type": "boolean"
},
"isSecurityKeyTwoStepVerificationAvailable": {
"description": "Whether or not security key two step verification is available for the user.",
"type": "boolean"
},
"isAuthenticatorWithVerifiedPhoneEnabled": {
"description": "Whether or not someone can enable authenticator with just a verified phone number.",
"type": "boolean"
},
"isPasswordRequiredForEnablingSecurityKey": {
"description": "Whether or not a password is required for enabling Security Key 2SV.",
"type": "boolean"
},
"isPasswordRequiredForEnablingSms2SV": {
"description": "Whether or not a password is required for enabling SMS 2SV.",
"type": "boolean"
},
"isPasswordRequiredForChangingRecoveryCodes": {
"description": "Whether or not a password is required for making updates to recovery codes.",
"type": "boolean"
},
"isPasswordRequiredForDisablingAuthenticator": {
"description": "Whether or not a password is required for disabling authenticator.",
"type": "boolean"
},
"isPasswordRequiredForDisablingEmailTwoStepVerification": {
"description": "Whether or not a password is required for disabling email 2sv.",
"type": "boolean"
},
"isPasswordRequiredForDisablingSms2SV": {
"description": "Whether or not a password is required for disabling SMS 2SV.",
"type": "boolean"
},
"isRecoveryCodeGenerationForAuthenticatorSetupEnabled": {
"description": "Whether recovery code generation is attempted upon completion of authenticator setup.",
"type": "boolean"
},
"isSecurityKeyOnAllPlatformsEnabled": {
"description": "Whether security keys on all platforms is enabled.",
"type": "boolean"
},
"receiveWarningsOnDisableTwoStep": {
"description": "Whether users should receive additional warnings when disabling 2SV.",
"type": "boolean"
},
"isAndroidSecurityKeyEnabled": {
"description": "Whether Android security keys is enabled.",
"type": "boolean"
},
"isSettingsTabRedesignEnabled": {
"description": "Whether the settings tab redesign is enabled.",
"type": "boolean"
},
"twoStepCopyTextEnrollmentStatus": {
"format": "int32",
"description": "The enum representing which experiment group the user is in.",
"type": "integer"
},
"isEppUIEnabled": {
"description": "Whether the EPP UI is enabled.",
"type": "boolean"
},
"isEppRecoveryCodesEnabled": {
"description": "Whether the EPP recovery codes UI is enabled.",
"type": "boolean"
},
"maskedUserEmail": {
"description": "The masked email for the authenticated user. Typically used in Email 2SV challenges after\r\nthe challenge has been verified to match the target user.",
"type": "string"
},
"isUserU13": {
"description": "Whether the user is O13.",
"type": "boolean"
},
"isDelayedUiEnabled": {
"description": "Whether the delayed UI is enabled.",
"type": "boolean"
},
"is2svRecoveryEnabled": {
"description": "Whether to expose 2SV recovery through the 2SV challenge modal.",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.Models.Request.SecureAuthenticationIntentModel": {
"description": "Model describing secure auth intent.",
"type": "object",
"properties": {
"clientPublicKey": {
"type": "string"
},
"clientEpochTimestamp": {
"format": "int64",
"type": "integer"
},
"saiSignature": {
"type": "string"
},
"serverNonce": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.RecoveryCodesStatusResponse": {
"description": "The response for getting the status of recovery codes for a user.",
"type": "object",
"properties": {
"activeCount": {
"format": "int32",
"description": "The number of unused recovery codes the user has available.",
"type": "integer"
},
"created": {
"format": "date-time",
"description": "The date time the recovery codes were generated at.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.RegenerateRecoveryCodesRequest": {
"description": "Request information needed to regenerate recovery codes.",
"type": "object",
"properties": {
"password": {
"description": "The user's password.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.RegenerateRecoveryCodesResponse": {
"description": "The response for regenerating recovery codes.",
"type": "object",
"properties": {
"recoveryCodes": {
"description": "The collection of generated recovery codes.",
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.RetractDialogRequest": {
"description": "Request parameters for retracting a Cross Device dialog from state ACTIVE to PENDING.",
"type": "object",
"properties": {
"challengeId": {
"description": "The two step verification challenge ID.",
"type": "string"
},
"actionType": {
"format": "int32",
"description": "The Roblox.TwoStepVerification.Client.TwoStepVerificationActionType associated with the challenge. ['Unknown' = 0, 'Login' = 1, 'RobuxSpend' = 2, 'ItemTrade' = 3, 'Resale' = 4, 'PasswordReset' = 5, 'RevertAccount' = 6, 'Generic' = 7, 'GenericWithRecoveryCodes' = 8]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.RetractDialogResponse": {
"description": "Result for a successful attempt to retract a Cross Device state from ACTIVE to PENDING.",
"type": "object",
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.RetryApprovalRequest": {
"description": "Request parameters for retrying a Cross Device two step verification approval.",
"type": "object",
"properties": {
"challengeId": {
"description": "The two step verification challenge ID.",
"type": "string"
},
"actionType": {
"format": "int32",
"description": "The Roblox.TwoStepVerification.Client.TwoStepVerificationActionType associated with the challenge. ['Unknown' = 0, 'Login' = 1, 'RobuxSpend' = 2, 'ItemTrade' = 3, 'Resale' = 4, 'PasswordReset' = 5, 'RevertAccount' = 6, 'Generic' = 7, 'GenericWithRecoveryCodes' = 8]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.RetryApprovalResponse": {
"description": "Result for a successful Cross Device approval retry, an empty JSON.",
"type": "object",
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.SecurityKeyCredential": {
"description": "Credential information that includes its nickname and any additional metadata.",
"type": "object",
"properties": {
"nickname": {
"description": "Nickname the user has chosen for this credential.",
"type": "string"
},
"credentialID": {
"description": "Foreign key reference for this credential in the security-key-credentials database",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.SendCodeRequest": {
"description": "Request parameters for sending a two step verification code.",
"type": "object",
"properties": {
"challengeId": {
"description": "The two step verification challenge ID.",
"type": "string"
},
"actionType": {
"format": "int32",
"description": "The Roblox.TwoStepVerification.Client.TwoStepVerificationActionType associated with the challenge. ['Unknown' = 0, 'Login' = 1, 'RobuxSpend' = 2, 'ItemTrade' = 3, 'Resale' = 4, 'PasswordReset' = 5, 'RevertAccount' = 6, 'Generic' = 7, 'GenericWithRecoveryCodes' = 8]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.UserConfiguration": {
"description": "The users two step verification configuration.",
"type": "object",
"properties": {
"primaryMediaType": {
"format": "int32",
"description": "The preferred two step verification method for the user.",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"methods": {
"description": "The two step verification methods associated with the user.",
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.TwoStepVerification.Api.UserConfigurationMethod"
}
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.UserConfigurationMethod": {
"description": "A user configuration method option.",
"type": "object",
"properties": {
"mediaType": {
"format": "int32",
"description": "The Roblox.TwoStepVerification.Client.TwoStepVerificationMediaType for the method. ['Email' = 0, 'SMS' = 1, 'Authenticator' = 2, 'RecoveryCode' = 3, 'SecurityKey' = 4, 'CrossDevice' = 5, 'Password' = 6, 'Passkey' = 7]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7],
"type": "integer"
},
"enabled": {
"description": "Whether or not the method is enabled.",
"type": "boolean"
},
"updated": {
"format": "date-time",
"description": "The last time this method was updated for the user.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.VerifyApprovalRequest": {
"description": "Request parameters for verifying a Cross Device two step verification approval. Does not use verification code.",
"type": "object",
"properties": {
"challengeId": {
"description": "The two step verification challenge ID.",
"type": "string"
},
"actionType": {
"format": "int32",
"description": "The Roblox.TwoStepVerification.Client.TwoStepVerificationActionType associated with the challenge. ['Unknown' = 0, 'Login' = 1, 'RobuxSpend' = 2, 'ItemTrade' = 3, 'Resale' = 4, 'PasswordReset' = 5, 'RevertAccount' = 6, 'Generic' = 7, 'GenericWithRecoveryCodes' = 8]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.VerifyApprovalResponse": {
"description": "Result for a successful Cross Device approval verification.",
"type": "object",
"properties": {
"verificationToken": {
"description": "The verification token.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.VerifyCodeRequest": {
"description": "Request parameters for verifying a two step verification code.",
"type": "object",
"properties": {
"challengeId": {
"description": "The two step verification challenge ID.",
"type": "string"
},
"actionType": {
"format": "int32",
"description": "The Roblox.TwoStepVerification.Client.TwoStepVerificationActionType associated with the challenge. ['Unknown' = 0, 'Login' = 1, 'RobuxSpend' = 2, 'ItemTrade' = 3, 'Resale' = 4, 'PasswordReset' = 5, 'RevertAccount' = 6, 'Generic' = 7, 'GenericWithRecoveryCodes' = 8]",
"enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
"type": "integer"
},
"code": {
"description": "The two step verification code.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.VerifyCodeResponse": {
"description": "Result for a successful verification.",
"type": "object",
"properties": {
"verificationToken": {
"description": "The verification token.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.VerifyStartPasskeyResponse": {
"description": "Result for a successful verification.",
"type": "object",
"properties": {
"authenticationOptions": {
"description": "The authentication options for the passkey.",
"type": "string"
},
"sessionId": {
"description": "The session of the authentication attempt.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.TwoStepVerification.Api.VerifyStartSecurityKeyResponse": {
"description": "Result for a successful verification.",
"type": "object",
"properties": {
"authenticationOptions": {
"description": "The authentication options for the hardware key.",
"type": "string"
},
"sessionId": {
"description": "The session of the authentication attempt.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.UniversePluginPermissionAuthority.Models.UniversePluginPermissions": {
"type": "object",
"properties": {
"IsThirdPartyTeleportAllowed": {
"type": "boolean"
},
"IsThirdPartyAssetAllowed": {
"type": "boolean"
},
"IsThirdPartyPurchaseAllowed": {
"type": "boolean"
},
"IsClientTeleportAllowed": {
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.AuthenticatedGetUserResponse": {
"description": "A response model representing absolute minimal authenticating user information.\nNo new attributes should be added to this response since it is in the critical path of app launch and we want to minimize dependencies.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The user Id.",
"type": "integer"
},
"name": {
"description": "The user name.",
"type": "string"
},
"displayName": {
"description": "The user DisplayName.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.BirthdateRequest": {
"description": "The birthdate request",
"type": "object",
"properties": {
"birthMonth": {
"format": "int32",
"description": "The birth month",
"type": "integer"
},
"birthDay": {
"format": "int32",
"description": "The birth day",
"type": "integer"
},
"birthYear": {
"format": "int32",
"description": "The birth year",
"type": "integer"
},
"password": {
"description": "Password",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.BirthdateResponse": {
"description": "The birthdate response",
"type": "object",
"properties": {
"birthMonth": {
"format": "int32",
"description": "The birth month",
"type": "integer"
},
"birthDay": {
"format": "int32",
"description": "The birth day",
"type": "integer"
},
"birthYear": {
"format": "int32",
"description": "The birth year",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.DescriptionRequest": {
"description": "The description request",
"type": "object",
"properties": {
"description": {
"description": "The description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.DescriptionResponse": {
"description": "The description response",
"type": "object",
"properties": {
"description": {
"description": "The description",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.GenderRequest": {
"description": "The gender request",
"type": "object",
"properties": {
"gender": {
"format": "int32",
"description": "The gender ['Unknown' = 1, 'Male' = 2, 'Female' = 3]",
"enum": [1, 2, 3],
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.GenderResponse": {
"description": "The gender response",
"type": "object",
"properties": {
"gender": {
"format": "int32",
"description": "The gender",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.GetUserResponse": {
"description": "A response model representing user information.",
"type": "object",
"properties": {
"description": {
"description": "The user description.",
"type": "string"
},
"created": {
"format": "date-time",
"description": "When the user signed up.",
"type": "string"
},
"isBanned": {
"description": "Whether the user is banned",
"type": "boolean"
},
"externalAppDisplayName": {
"description": "Unused, legacy attribute. For now always null to not disturb existing client code that might rely on its existence.",
"type": "string"
},
"hasVerifiedBadge": {
"description": "The user's verified badge status.",
"type": "boolean"
},
"id": {
"format": "int64",
"description": "The user Id.",
"type": "integer"
},
"name": {
"description": "The user name.",
"type": "string"
},
"displayName": {
"description": "The user DisplayName.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.MultiGetByUserIdRequest": {
"description": "Request model for getting users by ids.",
"type": "object",
"properties": {
"userIds": {
"description": "The user ids.",
"maxItems": 200,
"type": "array",
"items": {
"format": "int64",
"type": "integer"
}
},
"excludeBannedUsers": {
"description": "Whether the response should exclude banned users",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.MultiGetByUsernameRequest": {
"description": "Request model for getting users by usernames.",
"type": "object",
"properties": {
"usernames": {
"description": "The usernames.",
"type": "array",
"items": {
"type": "string"
}
},
"excludeBannedUsers": {
"description": "Whether the response should exclude banned users",
"type": "boolean"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.MultiGetUserByNameResponse": {
"description": "A response model specific to multi-get user by name.",
"type": "object",
"properties": {
"requestedUsername": {
"description": "The username the user was requested with.",
"type": "string"
},
"hasVerifiedBadge": {
"description": "The user's verified badge status.",
"type": "boolean"
},
"id": {
"format": "int64",
"description": "The user Id.",
"type": "integer"
},
"name": {
"description": "The user name.",
"type": "string"
},
"displayName": {
"description": "The user DisplayName.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.MultiGetUserResponse": {
"description": "A response model specific to multi-get user.
\n\n Note: Currently the MultiGet responses don't have all the data that the single gets have, to reduce payload size!\n We might want to revisit this decision in the future.\n
",
"type": "object",
"properties": {
"hasVerifiedBadge": {
"description": "The user's verified badge status.",
"type": "boolean"
},
"id": {
"format": "int64",
"description": "The user Id.",
"type": "integer"
},
"name": {
"description": "The user name.",
"type": "string"
},
"displayName": {
"description": "The user DisplayName.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.SearchGetUserResponse": {
"description": "A user response model specific to getting a user from user search.",
"type": "object",
"properties": {
"previousUsernames": {
"description": "Previous usernames for a user.",
"type": "array",
"items": {
"type": "string"
}
},
"hasVerifiedBadge": {
"description": "The user's verified badge status.",
"type": "boolean"
},
"id": {
"format": "int64",
"description": "The user Id.",
"type": "integer"
},
"name": {
"description": "The user name.",
"type": "string"
},
"displayName": {
"description": "The user DisplayName.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.SetDisplayNameRequest": {
"description": "Request model for changing a display name.",
"type": "object",
"properties": {
"newDisplayName": {
"description": "The users new display name.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.UserAgeBracketResponse": {
"description": "A user age bracket response model.",
"type": "object",
"properties": {
"ageBracket": {
"format": "int32",
"description": "The age bracket of the user.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.UserCountryCodeResponse": {
"description": "A user country code response model.",
"type": "object",
"properties": {
"countryCode": {
"description": "The country code of the user.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Users.Api.UserRolesResponse": {
"description": "A user roles response model.",
"type": "object",
"properties": {
"roles": {
"description": "The roles of the user.",
"type": "array",
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"Roblox.Users.Api.UsernameHistoryResponse": {
"type": "object",
"properties": {
"name": {
"description": "A past username belonging to a particular userId",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.Assets.BatchAssetRequestItem": {
"type": "object",
"properties": {
"assetName": {
"type": "string"
},
"assetType": {
"type": "string"
},
"clientInsert": {
"type": "boolean"
},
"placeId": {
"format": "int64",
"type": "integer"
},
"requestId": {
"type": "string"
},
"scriptInsert": {
"type": "boolean"
},
"serverPlaceId": {
"format": "int64",
"type": "integer"
},
"universeId": {
"format": "int64",
"type": "integer"
},
"accept": {
"type": "string"
},
"encoding": {
"type": "string"
},
"hash": {
"type": "string"
},
"userAssetId": {
"format": "int64",
"type": "integer"
},
"assetId": {
"format": "int64",
"type": "integer"
},
"version": {
"format": "int32",
"type": "integer"
},
"assetVersionId": {
"format": "int64",
"type": "integer"
},
"modulePlaceId": {
"format": "int64",
"type": "integer"
},
"assetFormat": {
"type": "string"
},
"roblox-assetFormat": {
"type": "string"
},
"assetResolutionMode": {
"type": "string"
},
"accessContext": {
"type": "string"
},
"usageContext": {
"type": "string"
},
"contentRepresentationPriorityList": {
"type": "string"
},
"doNotFallbackToBaselineRepresentation": {
"type": "boolean"
},
"xcachesplit": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Avatar.ScaleModel": {
"type": "object",
"properties": {
"height": {
"format": "double",
"type": "number"
},
"width": {
"format": "double",
"type": "number"
},
"head": {
"format": "double",
"type": "number"
},
"depth": {
"format": "double",
"type": "number"
},
"proportion": {
"format": "double",
"type": "number"
},
"bodyType": {
"format": "double",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Badges.BadgeAwardStatisticsResponse": {
"type": "object",
"properties": {
"pastDayAwardedCount": {
"format": "int64",
"type": "integer"
},
"awardedCount": {
"format": "int64",
"type": "integer"
},
"winRatePercentage": {
"format": "double",
"type": "number"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Badges.BadgeResponseV2": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"displayName": {
"type": "string"
},
"displayDescription": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"iconImageId": {
"format": "int64",
"type": "integer"
},
"displayIconImageId": {
"format": "int64",
"type": "integer"
},
"awarder": {
"$ref": "#/components/schemas/Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Platform.Badges.BadgeAwarderType_"
},
"statistics": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Badges.BadgeAwardStatisticsResponse"
},
"created": {
"format": "date-time",
"type": "string"
},
"updated": {
"format": "date-time",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Economy.CurrencyResponse": {
"type": "object",
"properties": {
"robux": {
"format": "int64",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Games.GameFavoriteResponseModel": {
"description": "Response model representing a user's favorited game.",
"type": "object",
"properties": {
"price": {
"format": "int64",
"description": "The game paid access price in robux.\r\nGiven that there is no actual owner for this product surface,\r\nwe will keep existing behavior where we display offsale for games priced in fiat currency.",
"type": "integer"
},
"contentMetadata": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameContentMetadataResponseModel"
},
"id": {
"format": "int64",
"description": "The game (universe) Id.",
"type": "integer"
},
"name": {
"description": "The game name.",
"type": "string"
},
"description": {
"description": "The game description.",
"type": "string"
},
"creator": {
"$ref": "#/components/schemas/Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Platform.Core.CreatorType_"
},
"rootPlace": {
"$ref": "#/components/schemas/Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Platform.Assets.AssetType_"
},
"created": {
"format": "date-time",
"description": "When the game was created.",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "When the game was last updated.",
"type": "string"
},
"placeVisits": {
"format": "int64",
"description": "The number of place visits for this game.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Games.GameMediaItemResponseV2": {
"description": "Response model for getting the game media item",
"type": "object",
"properties": {
"assetTypeId": {
"format": "int64",
"description": "The media item type id",
"type": "integer"
},
"assetType": {
"description": "The media item type, Image or YouTubeVideo",
"type": "string"
},
"imageId": {
"format": "int64",
"description": "The media item image id",
"type": "integer"
},
"videoHash": {
"description": "The media item video hash",
"type": "string"
},
"videoTitle": {
"description": "The video title for video items.",
"type": "string"
},
"approved": {
"description": "The media item is approved or not",
"type": "boolean"
},
"altText": {
"description": "The media item alt text",
"type": "string"
},
"videoId": {
"description": "The video asset ID",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Games.GameResponseV2": {
"description": "A response model representing a game.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The game (universe) Id.",
"type": "integer"
},
"name": {
"description": "The game name.",
"type": "string"
},
"description": {
"description": "The game description.",
"type": "string"
},
"creator": {
"$ref": "#/components/schemas/Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Platform.Core.CreatorType_"
},
"rootPlace": {
"$ref": "#/components/schemas/Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Platform.Assets.AssetType_"
},
"created": {
"format": "date-time",
"description": "When the game was created.",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "When the game was last updated.",
"type": "string"
},
"placeVisits": {
"format": "int64",
"description": "The number of place visits for this game.",
"type": "integer"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Plugins.PluginResponse": {
"description": "Represents information about a plugin.",
"type": "object",
"properties": {
"id": {
"format": "int64",
"description": "The plugin Id.",
"type": "integer"
},
"name": {
"description": "The plugin name.",
"type": "string"
},
"description": {
"description": "The plugin description.",
"type": "string"
},
"commentsEnabled": {
"description": "Whether or not the plugin allows comments to be posted.",
"type": "boolean"
},
"versionId": {
"format": "int64",
"description": "plugin version id",
"type": "integer"
},
"created": {
"format": "date-time",
"description": "The time the plugin was created.",
"type": "string"
},
"updated": {
"format": "date-time",
"description": "The last time the plugin was updated.",
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Platform.Assets.AssetType_": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"type": {
"format": "int32",
"description": " ['Image' = 1, 'TShirt' = 2, 'Audio' = 3, 'Mesh' = 4, 'Lua' = 5, 'HTML' = 6, 'Text' = 7, 'Hat' = 8, 'Place' = 9, 'Model' = 10, 'Shirt' = 11, 'Pants' = 12, 'Decal' = 13, 'Avatar' = 16, 'Head' = 17, 'Face' = 18, 'Gear' = 19, 'Badge' = 21, 'GroupEmblem' = 22, 'Animation' = 24, 'Arms' = 25, 'Legs' = 26, 'Torso' = 27, 'RightArm' = 28, 'LeftArm' = 29, 'LeftLeg' = 30, 'RightLeg' = 31, 'Package' = 32, 'YouTubeVideo' = 33, 'GamePass' = 34, 'App' = 35, 'Code' = 37, 'Plugin' = 38, 'SolidModel' = 39, 'MeshPart' = 40, 'HairAccessory' = 41, 'FaceAccessory' = 42, 'NeckAccessory' = 43, 'ShoulderAccessory' = 44, 'FrontAccessory' = 45, 'BackAccessory' = 46, 'WaistAccessory' = 47, 'ClimbAnimation' = 48, 'DeathAnimation' = 49, 'FallAnimation' = 50, 'IdleAnimation' = 51, 'JumpAnimation' = 52, 'RunAnimation' = 53, 'SwimAnimation' = 54, 'WalkAnimation' = 55, 'PoseAnimation' = 56, 'LocalizationTableManifest' = 59, 'LocalizationTableTranslation' = 60, 'EmoteAnimation' = 61, 'Video' = 62, 'TexturePack' = 63, 'TShirtAccessory' = 64, 'ShirtAccessory' = 65, 'PantsAccessory' = 66, 'JacketAccessory' = 67, 'SweaterAccessory' = 68, 'ShortsAccessory' = 69, 'LeftShoeAccessory' = 70, 'RightShoeAccessory' = 71, 'DressSkirtAccessory' = 72, 'FontFamily' = 73, 'FontFace' = 74, 'MeshHiddenSurfaceRemoval' = 75, 'EyebrowAccessory' = 76, 'EyelashAccessory' = 77, 'MoodAnimation' = 78, 'DynamicHead' = 79, 'CodeSnippet' = 80, 'AdsVideo' = 81, 'OtaUpdate' = 82, 'Screenshot' = 83, 'RuntimePropertySet' = 84, 'StorePreviewVideo' = 85, 'GamePreviewVideo' = 86, 'CreatorExperienceConfig' = 87, 'FaceMakeup' = 88, 'LipMakeup' = 89, 'EyeMakeup' = 90, 'VoxelFragment' = 91, 'AvatarBackground' = 92, 'TextDocument' = 93, 'Post' = 94]",
"enum": [
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 21, 22,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
91, 92, 93, 94
],
"type": "integer"
},
"name": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Platform.Badges.BadgeAwarderType_": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"type": {
"format": "int32",
"description": " ['Place' = 1]",
"enum": [1],
"type": "integer"
},
"name": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Platform.Core.CreatorType_": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"type": {
"format": "int32",
"description": " ['User' = 0, 'Group' = 1]",
"enum": [0, 1],
"type": "integer"
},
"name": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Users.Client.AssociatedEntityType_": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"type": {
"format": "int32",
"description": " ['User' = 1, 'Group' = 2]",
"enum": [1, 2],
"type": "integer"
},
"name": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Users.LegacyUserResponse": {
"type": "object",
"properties": {
"userId": {
"format": "int64",
"type": "integer"
},
"username": {
"type": "string"
},
"displayName": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.Responses.Users.SkinnyUserResponse": {
"type": "object",
"properties": {
"id": {
"format": "int64",
"type": "integer"
},
"name": {
"type": "string"
},
"displayName": {
"type": "string"
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.ApiEmptyResponseModel": {
"type": "object",
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.GameTemplateModel_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.GameTemplateModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.GroupModel_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.GroupModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.UniverseIdPermissionsModel_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseIdPermissionsModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.UniverseModel_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.UniverseTeamCreateSettingsModel_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseTeamCreateSettingsModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Catalog.Api.CatalogSearchDetailedResponseItemV2_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.CatalogSearchDetailedResponseItemV2"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.FriendStatusResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Friends.Api.FriendStatusResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetBadgeIconResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetBadgeIconResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetDeveloperProductIconResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetDeveloperProductIconResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetGameIconResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetGameIconResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetGamePassIconResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetGamePassIconResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.GetGameThumbnailsResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GetGameThumbnailsResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageOrLocaleSettings_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.LanguageOrLocaleSettings"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageOrLocale_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.LanguageOrLocale"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.LanguageWithLocales_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.LanguageWithLocales"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.NameDescription_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.NameDescription"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.GameInternationalization.Api.UniverseDisplayInfoAutomaticTranslationSettings_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.GameInternationalization.Api.UniverseDisplayInfoAutomaticTranslationSettings"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Games.Api.Models.Response.GameDetailResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameDetailResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Games.Api.Models.Response.GameProductResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameProductResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Locale.Api.SupportedLocaleLocus_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Locale.Api.SupportedLocaleLocus"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.TranslationRoles.Api.Assignee_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.TranslationRoles.Api.Assignee"
}
}
}
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Users.Api.MultiGetUserByNameResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Users.Api.MultiGetUserByNameResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Users.Api.MultiGetUserResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Users.Api.MultiGetUserResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Games.GameMediaItemResponseV2_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Games.GameMediaItemResponseV2"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Plugins.PluginResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Plugins.PluginResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Users.SkinnyUserResponse_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Users.SkinnyUserResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.Models.IPlaceModel_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.IPlaceModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.Models.UniverseModel_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Api.Develop.Models.UniverseModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Badges.Api.BadgeResponse_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Badges.Api.BadgeResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Catalog.Api.BundleDetailsModel_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.BundleDetailsModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Catalog.Api.CatalogSearchDetailedResponseItem_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.CatalogSearchDetailedResponseItem"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Catalog.Api.OwnedBundleModel_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Catalog.Api.OwnedBundleModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Friends.Api.FriendRequestResponse_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Friends.Api.FriendRequestResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Friends.Api.Models.Response.TrustedFriendRequestResponse_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.TrustedFriendRequestResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.CollectibleUserAssetModel_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.CollectibleUserAssetModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.IItemModel_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.IItemModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.InventoryItemModel_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.InventoryItemModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.Models.PlaceModel_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.Models.PlaceModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.V2.AssetOwnerResponse_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.V2.AssetOwnerResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.V2.CollectibleItemOwnerResponse_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.V2.CollectibleItemOwnerResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Inventory.Api.V2.UserAssetItemModelV2_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Inventory.Api.V2.UserAssetItemModelV2"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Trades.Api.TradeResponse_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Trades.Api.TradeResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Users.Api.SearchGetUserResponse_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Users.Api.SearchGetUserResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Users.Api.UsernameHistoryResponse_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Users.Api.UsernameHistoryResponse"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Web.Responses.Games.GameFavoriteResponseModel_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Games.GameFavoriteResponseModel"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Web.Responses.Games.GameResponseV2_": {
"type": "object",
"properties": {
"previousPageCursor": {
"type": "string"
},
"nextPageCursor": {
"type": "string"
},
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Roblox.Web.Responses.Games.GameResponseV2"
}
}
},
"additionalProperties": false
},
"Roblox.Web.WebAPI.Models.ApiSuccessResponse": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
}
},
"additionalProperties": false
},
"RpnOperandDto": {
"type": "object",
"properties": {
"attributeReference": {
"type": "string",
"nullable": true
},
"literalValue": {
"allOf": [
{
"$ref": "#/components/schemas/LiteralValueDto"
}
],
"description": "Literal constant for an RPN operand.",
"nullable": true
}
},
"additionalProperties": false,
"description": "RPN operand: attribute reference or literal value."
},
"RpnTokenDto": {
"type": "object",
"properties": {
"operator": {
"type": "string",
"nullable": true
},
"operand": {
"allOf": [
{
"$ref": "#/components/schemas/RpnOperandDto"
}
],
"description": "RPN operand: attribute reference or literal value.",
"nullable": true
}
},
"additionalProperties": false,
"description": "One RPN token: either a logical/comparison ConditionalRuleOperator or an operand object."
},
"RsvpStatus": {
"enum": ["none", "going", "maybeGoing", "notGoing"],
"type": "string",
"description": "The type of RSVP statuses."
},
"RuleDeltaPayload": {
"type": "object",
"properties": {
"before": {
"nullable": true
},
"after": {
"nullable": true
}
},
"additionalProperties": false
},
"RulesOrderDeltaPayload": {
"type": "object",
"properties": {
"before": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"after": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
}
},
"additionalProperties": false
},
"SaveType": {
"enum": [0, 1, 2],
"type": "integer",
"format": "int32"
},
"SavesSortCategory": {
"enum": [
"Name",
"Creator",
"Ratings",
"TargetType",
"DateSaved",
"LastModified",
"Price"
],
"type": "string",
"description": "The category to sort the saves by.",
"x-enumNames": [
"Name",
"Creator",
"Ratings",
"TargetType",
"DateSaved",
"LastModified",
"Price"
],
"x-enum-varnames": [
"Name",
"Creator",
"Ratings",
"TargetType",
"DateSaved",
"LastModified",
"Price"
]
},
"ScheduleExperimentRequest": {
"type": "object",
"properties": {
"scheduledStartTime": {
"type": "string",
"description": "UTC time at which the experiment should be auto-started.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request body for\r\n`POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:schedule`."
},
"ScheduleExperimentResponse": {
"type": "object",
"properties": {
"operation": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentOperation"
}
],
"description": "The async operation that scheduled the experiment.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for\r\n`POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:schedule`."
},
"SearchAudioTypeModel": {
"enum": ["Music", "SoundEffect", "Unknown"],
"type": "string",
"description": "Represents audio type values that will be properly displayed in Swagger UI.",
"x-enumNames": ["Music", "SoundEffect", "Unknown"],
"x-enum-varnames": ["Music", "SoundEffect", "Unknown"]
},
"SearchCategoryType": {
"enum": [
"Audio",
"Model",
"Decal",
"Plugin",
"MeshPart",
"Video",
"FontFamily"
],
"type": "string",
"description": "This represents a \"subset\" of Toolbox.Service.CategoryType options and represent the full set\nof \"categories\" (or asset types) that can be searched upon from the toolbox search API.",
"x-enumNames": [
"Audio",
"Model",
"Decal",
"Plugin",
"MeshPart",
"Video",
"FontFamily"
],
"x-enum-varnames": [
"Audio",
"Model",
"Decal",
"Plugin",
"MeshPart",
"Video",
"FontFamily"
]
},
"SearchCreatorStoreAssetsRequest": {
"type": "object",
"properties": {
"searchCategoryType": {
"allOf": [
{
"$ref": "#/components/schemas/SearchCategoryType"
}
],
"description": "The asset type to search within. Optional when Toolbox.Service.SearchCreatorStoreAssetsRequest.CategoryPath\nresolves to an asset type; otherwise required.",
"nullable": true
},
"query": {
"type": "string",
"description": "The search terms used to filter the results. Only one of 'query' and 'image' can be present in a query.",
"nullable": true
},
"image": {
"type": "string",
"description": "The image file to search by. The image must be base64 encoded to be used in the search. Only one of 'query' and 'image' can be present in a query.",
"format": "byte",
"nullable": true
},
"userId": {
"maximum": 9223372036854776000,
"minimum": 1,
"type": "integer",
"description": "The User ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.",
"format": "int64",
"nullable": true
},
"groupId": {
"maximum": 9223372036854776000,
"minimum": 1,
"type": "integer",
"description": "The Group ID of the creator. Only one of 'userId' and 'groupId' can be present in a query.",
"format": "int64",
"nullable": true
},
"pageToken": {
"type": "string",
"description": "The identifier for the desired search results page. Only one of 'pageNumber' and 'pageToken' can be present in a query.",
"nullable": true
},
"pageNumber": {
"maximum": 2147483647,
"minimum": 0,
"type": "integer",
"description": "The page number to retrieve, starting from 0. Only one of 'pageNumber' and 'pageToken' can be present in a query.",
"format": "int32",
"nullable": true
},
"maxPageSize": {
"maximum": 100,
"minimum": 1,
"type": "integer",
"description": "The number of assets to be returned. Cannot be larger than 100.",
"format": "int32"
},
"sortDirection": {
"allOf": [
{
"$ref": "#/components/schemas/SortDirection"
}
],
"description": "The sort direction of the search results.",
"x-enumNames": ["None", "Ascending", "Descending"],
"x-enum-varnames": ["None", "Ascending", "Descending"]
},
"sortCategory": {
"allOf": [
{
"$ref": "#/components/schemas/SortCategory"
}
],
"description": "The category to sort the search results by.",
"x-enumNames": [
"Relevance",
"Trending",
"Top",
"AudioDuration",
"CreateTime",
"UpdatedTime",
"Ratings"
],
"x-enum-varnames": [
"Relevance",
"Trending",
"Top",
"AudioDuration",
"CreateTime",
"UpdatedTime",
"Ratings"
]
},
"includeOnlyVerifiedCreators": {
"type": "boolean",
"description": "Whether the results should only include assets created by verified creators."
},
"minPriceCents": {
"maximum": 2147483647,
"minimum": 0,
"type": "integer",
"description": "The minimum price of the asset in cents. If included, must be greater than or equal to 0.",
"format": "int64",
"nullable": true
},
"maxPriceCents": {
"maximum": 2147483647,
"minimum": 0,
"type": "integer",
"description": "The maximum price of the asset in cents. If included, must be greater than or equal to 0.",
"format": "int64",
"nullable": true
},
"facets": {
"type": "array",
"items": {
"type": "string"
},
"description": "Additional keywords to query by.",
"nullable": true
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "The tags to filter by.",
"nullable": true
},
"categoryPath": {
"type": "string",
"description": "The category path to filter by.",
"nullable": true
},
"swimlane": {
"type": "string",
"description": "Optional swimlane identifier (e.g. \"trending\", \"essential\", \"priced\").",
"nullable": true
},
"searchView": {
"allOf": [
{
"$ref": "#/components/schemas/SearchView"
}
],
"description": "Indicates which fields will be populated in the response.",
"x-enumNames": ["IDs", "Core", "Full"],
"x-enum-varnames": ["IDs", "Core", "Full"]
},
"audioSearchFilters": {
"allOf": [
{
"$ref": "#/components/schemas/AudioSearchFilters"
}
],
"description": "Audio-specific search filters.",
"nullable": true
},
"modelSearchFilters": {
"allOf": [
{
"$ref": "#/components/schemas/ModelSearchFilters"
}
],
"description": "Model-specific search filters.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request model for searching Creator Store assets.",
"nullable": true
},
"SearchCreatorStoreAssetsResponse": {
"required": ["creatorStoreAssets", "totalResults"],
"type": "object",
"properties": {
"nextPageToken": {
"type": "string",
"description": "The page token to view the next page of results.",
"nullable": true
},
"queryFacets": {
"allOf": [
{
"$ref": "#/components/schemas/QueryFacets"
}
],
"description": "The applied and available facets of a query.",
"nullable": true
},
"creatorStoreAssets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/CreatorStoreAsset"
},
"description": "The list of creator store assets returned by the search query.",
"nullable": true
},
"totalResults": {
"type": "integer",
"description": "The total number of results for the given search query.",
"format": "int64"
},
"queryCorrection": {
"allOf": [
{
"$ref": "#/components/schemas/QueryCorrection"
}
],
"description": "Query correction information, if a correction was available for the search query.",
"nullable": true
},
"filteredKeyword": {
"type": "string",
"description": "The filtered keyword that was used to search for assets, if applicable.",
"nullable": true
}
},
"additionalProperties": false,
"description": "The response for the SearchCreatorStoreAssets endpoint.",
"nullable": true
},
"SearchView": {
"enum": ["IDs", "Core", "Full"],
"type": "string",
"description": "This view controls which fields are populated in the search response. A lighter\nview will result in faster response times and higher reliability.",
"x-enumNames": ["IDs", "Core", "Full"],
"x-enum-varnames": ["IDs", "Core", "Full"]
},
"Secret": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The user-specified secret name. Examples: \"aws\", \"gcp\", \"discord\".\n\nStatic when getting the public key for a universe.\n\nMust be alphanumeric or underscore, 1-64 characters, not starting with a number.",
"nullable": true
},
"secret": {
"type": "string",
"description": "The binary secret content. Examples: API key content (text), private keys.\n\nWhen created, the secret must be encrypted using LibSodium sealed box and encoded in base64 with the universe's public key.\n\nContains the public key when getting the public key for a universe.",
"format": "byte",
"nullable": true
},
"key_id": {
"type": "string",
"description": "Encryption key identifier. Identifies the key that was used to encrypt the secret content.",
"nullable": true
},
"domain": {
"type": "string",
"description": "The domain wildcard that restricts the purpose of the key. \n\nYou can restrict the URLs callable via HttpService to a specific domain, e.g. \"api.example.com\" or \"*.myservice.org\".\n\nAn empty or null domain means that the secret is a private key and cannot be transformed with addPrefix/addSuffix or sent as a header or URL.\n\nIn order to make the secret accessible for all domains, use \"*\"",
"nullable": true
},
"create_time": {
"type": "string",
"description": "Date and time when the secret was originally created.",
"nullable": true
},
"update_time": {
"type": "string",
"description": "Date and time when the secret was last updated",
"nullable": true
}
},
"additionalProperties": false,
"description": "Universe-specific secret, identified by `id`, and belonging to a specific `environment`."
},
"SecretPaginatedList": {
"type": "object",
"properties": {
"secrets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Secret"
},
"description": "Gets the actual list of items to return",
"nullable": true
},
"nextPageCursor": {
"type": "string",
"description": "Gets the cursor where the pagination stopped after fetching `data`.\n`null` if there is no more data available.",
"nullable": true
},
"previousPageCursor": {
"type": "string",
"description": "Gets the cursor pointing at the previous page. `null` when it's\nthe first page.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Wrapper for the paginated collection output.\nComplies with the REST conventions, containing\nnext/previous page, and a data field containing the actual list.\n \nNeeded only to simplify JSON serialization, and can technically\nbe AutoMapper-ed from the EaaS or any other data provider."
},
"SecretsStoreService.ProblemDetails": {
"type": "object",
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "string",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
}
},
"additionalProperties": {}
},
"ServerCategoricalSignalConfiguration": {
"type": "object",
"properties": {
"serverAttribute": {
"$ref": "#/components/schemas/MatchmakingAttributeReference"
},
"comparisonType": {
"$ref": "#/components/schemas/MatchmakingCategoricalAttributeComparisonType"
},
"playerAttribute": {
"$ref": "#/components/schemas/MatchmakingAttributeReference"
},
"constantValue": {
"type": "string",
"description": "The constant value for this signal to be compared to.",
"nullable": true
}
},
"additionalProperties": false,
"description": "The server categorical signal configuration."
},
"ServerManagementService.GameServer": {
"type": "object",
"properties": {
"placeId": {
"type": "string",
"description": "The place ID this game server belongs to.",
"nullable": true
},
"placeVersion": {
"type": "string",
"description": "The place version this game server belongs to.",
"nullable": true
},
"jobId": {
"type": "string",
"description": "The unique ID for this server.",
"nullable": true
},
"engineVersion": {
"type": "string",
"description": "The RCC Version the server is running",
"nullable": true
},
"createTime": {
"type": "string",
"description": "The time this server was created.",
"format": "date-time"
},
"uptime": {
"type": "string",
"description": "How long this server has been running.",
"format": "date-span",
"example": "1.02:03:04"
},
"memoryUsageBytes": {
"type": "integer",
"description": "The Memory Usage of the server in bytes.",
"format": "int64"
},
"frameRate": {
"type": "number",
"description": "The Server Frame Rate.",
"format": "float",
"nullable": true
},
"occupancy": {
"type": "integer",
"description": "The current number of users in the server.",
"format": "int32"
},
"maxOccupancy": {
"type": "integer",
"description": "The maximum number of users in the server.",
"format": "int32"
},
"type": {
"allOf": [
{
"$ref": "#/components/schemas/ServerType"
}
],
"description": "The Type of Server."
},
"full": {
"type": "boolean",
"description": "Whether the server is at max occupancy."
},
"shutDown": {
"type": "boolean",
"description": "Whether the server has been shutdown."
},
"status": {
"allOf": [
{
"$ref": "#/components/schemas/ServerStatus"
}
],
"description": "Creator-visible server status."
},
"terminationTime": {
"type": "string",
"description": "The time the server terminated. Null while ServerManagementService.V2.Models.GameServer.ShutDown is false.",
"format": "date-time",
"nullable": true
},
"playerIds": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"description": "The list of PlayerIds in the server",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for listing a Game Server"
},
"ServerManagementService.ListGameServersResponse": {
"type": "object",
"properties": {
"gameServers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ServerManagementService.GameServer"
},
"description": "The GameServers from the specified PlaceVersion.",
"nullable": true
},
"nextPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the next\r\npage. If this field is omitted, there are no subsequent pages.",
"nullable": true
},
"previousPageToken": {
"type": "string",
"description": "A token that you can send as a `pageToken` parameter to retrieve the previous\r\npage (reverse cursor). If this field is omitted, there are no prior pages.",
"nullable": true
},
"totalCount": {
"type": "integer",
"description": "Total matching rows across all pages. Combined active+shutdown queries return the sum of\r\neach source total when both are known; omitted when a source failed or omitted its total.",
"format": "int32",
"nullable": true
},
"shutdownServersFetchError": {
"type": "boolean",
"description": "True when this page includes active rows but shutdown rows could not be fetched.\r\nResults may be a partial slice of the globally ordered combined stream.",
"nullable": true
},
"activeServersFetchError": {
"type": "boolean",
"description": "True when this page includes shutdown rows but active rows could not be fetched.\r\nResults may be a partial slice of the globally ordered combined stream.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response model for listing game servers."
},
"ServerManagementService.ProblemDetails": {
"type": "object",
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "integer",
"format": "int32",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
}
},
"additionalProperties": {}
},
"ServerNumericalSignalConfiguration": {
"type": "object",
"properties": {
"serverAttribute": {
"$ref": "#/components/schemas/MatchmakingAttributeReference"
},
"comparisonType": {
"$ref": "#/components/schemas/MatchmakingNumericalAttributeComparisonType"
},
"maxRelevantDifference": {
"type": "number",
"description": "The maximum relevant difference for this signal.",
"format": "double",
"nullable": true
},
"constantValue": {
"type": "number",
"description": "The constant value for this signal to be compared to.",
"format": "double",
"nullable": true
},
"playerAttribute": {
"$ref": "#/components/schemas/MatchmakingAttributeReference"
}
},
"additionalProperties": false,
"description": "The server numerical signal configuration."
},
"ServerStatus": {
"enum": [
"active",
"shut_down",
"restarted",
"roblox_restarted",
"crashed",
"out_of_memory",
"moderated",
"pending",
"unspecified"
],
"type": "string",
"description": "Server status that is visible to creators.\r\nThis is derived from the shutdown reason for shutdown rows; it is always \"Active\" for currently live servers."
},
"ServerType": {
"enum": [0, 1, 2, 3, 4, 5],
"type": "integer",
"description": "Defines the different types of servers",
"format": "int32"
},
"SetMatchmakingScoringConfigurationResponse": {
"type": "object",
"properties": {
"scoringConfiguration": {
"$ref": "#/components/schemas/MatchmakingScoringConfiguration"
}
},
"additionalProperties": false,
"description": "Response to set the matchmaking scoring configuration."
},
"SetPlaceMatchmakingScoringConfigurationRequest": {
"type": "object",
"properties": {
"placeId": {
"type": "integer",
"description": "The place ID of the desired scoring configuration to set.",
"format": "int64"
},
"scoringConfigurationId": {
"type": "string",
"description": "The ID of the scoring configuration.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request to set the matchmaking scoring configuration for a place."
},
"SetStartPlaceOverrideRequestBody": {
"type": "object",
"properties": {
"dataStoreLocation": {
"$ref": "#/components/schemas/DataStoreLocation"
}
},
"additionalProperties": false,
"description": "Request body for setting the start place override for a universe. The universe is\r\nidentified by the route, so it is not part of the body."
},
"SetStartPlaceOverrideResponse": {
"type": "object",
"additionalProperties": false,
"description": "Response for setting the start place override for a universe."
},
"ShutdownAllGameInstancesResponse": {
"type": "object",
"properties": {
"placeId": {
"type": "integer",
"description": "The place ID to shut down.",
"format": "int64"
},
"replaceInstances": {
"type": "boolean",
"description": "Whether to replace instances or not."
}
},
"additionalProperties": false,
"description": "Shutdown All Game Instances response."
},
"ShutdownGameInstancesRequest": {
"type": "object",
"properties": {
"placeId": {
"type": "integer",
"description": "The place ID to shut down.",
"format": "int64"
},
"privateServerId": {
"type": "integer",
"description": "The private server ID.",
"format": "int64",
"nullable": true
},
"gameId": {
"type": "string",
"description": "The game ID.",
"format": "uuid",
"nullable": true
}
},
"additionalProperties": false,
"description": "Shutdown Game Instance request."
},
"ShutdownGameInstancesResponse": {
"type": "object",
"properties": {
"placeId": {
"type": "integer",
"description": "The place ID to shut down.",
"format": "int64"
},
"privateServerId": {
"type": "integer",
"description": "The private server ID.",
"format": "int64",
"nullable": true
},
"gameId": {
"type": "string",
"description": "The game ID.",
"format": "uuid",
"nullable": true
}
},
"additionalProperties": false,
"description": "Shutdown Game Instance response."
},
"SingleConfigExperimentVariant": {
"type": "object",
"properties": {
"variantMeta": {
"allOf": [
{
"$ref": "#/components/schemas/VariantMeta"
}
],
"description": "Metadata common to all variants.",
"nullable": true
},
"configEntry": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentConfigEntry"
}
],
"description": "The config entry value for this variant. Required for non-`IsBaseline` variants.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Variant definition for an in-game-config experiment (CreatorConfigsPublicApi.Models.Experimentation.InGameConfigExperimentConfiguration)."
},
"SnapshotDataStoresRequest": {
"type": "object",
"properties": {},
"description": "Takes a new snapshot for the given experience."
},
"SnapshotDataStoresResponse": {
"type": "object",
"properties": {
"newSnapshotTaken": {
"example": true,
"type": "boolean",
"description": "Whether a new snapshot was taken by this operation.\n(Only one snapshot can be taken per experience per UTC day.)"
},
"latestSnapshotTime": {
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The time of the latest snapshot after the operation (regardless of\nwhether a new snapshot was created). This time is always returned in UTC.",
"format": "date-time"
}
},
"description": "Returns whether a new snapshot was taken and the time of the latest snapshot\nafter the operation (regardless of whether a new snapshot was taken).",
"x-oneOf": {
"NewSnapshotTaken": ["newSnapshotTaken"]
}
},
"SocialLink": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "An optional title for the social media link. Not used on the Creator Hub."
},
"uri": {
"type": "string",
"description": "The URI for the social media link. Must match the expected format for the type of link. For example, the title for a `twitchSocialLink` object must be of the format `https://twitch.tv/your-channel`."
}
},
"description": "A social media link for the asset. Maximum of three per asset. Object name can be any of: - `facebookSocialLink`
- `twitterSocialLink`
- `youtubeSocialLink`
- `twitchSocialLink`
- `discordSocialLink`
- `githubSocialLink`
- `robloxSocialLink`
- `guildedSocialLink`
- `devForumSocialLink`
For syntax, see the sample request under [Update Asset](#PATCH-v1-assets-_assetId_)."
},
"SocialLinkModel": {
"type": "object",
"properties": {
"linkType": {
"allOf": [
{
"$ref": "#/components/schemas/LinkType"
}
],
"description": "Gets or sets the link type.",
"x-enumNames": [
"Invalid",
"Facebook",
"Twitter",
"Youtube",
"Twitch",
"Discord",
"Github",
"Guilded",
"Roblox",
"Devforum",
"TryInExperience"
],
"x-enum-varnames": [
"Invalid",
"Facebook",
"Twitter",
"Youtube",
"Twitch",
"Discord",
"Github",
"Guilded",
"Roblox",
"Devforum",
"TryInExperience"
]
},
"url": {
"type": "string",
"description": "Gets or sets the Url.",
"nullable": true
},
"title": {
"type": "string",
"description": "Gets or sets the title.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Model for a Social Link.",
"nullable": true
},
"SortCategory": {
"enum": [
"Relevance",
"Trending",
"Top",
"AudioDuration",
"CreateTime",
"UpdatedTime",
"Ratings"
],
"type": "string",
"description": "The category to sort the search results by.",
"x-enumNames": [
"Relevance",
"Trending",
"Top",
"AudioDuration",
"CreateTime",
"UpdatedTime",
"Ratings"
],
"x-enum-varnames": [
"Relevance",
"Trending",
"Top",
"AudioDuration",
"CreateTime",
"UpdatedTime",
"Ratings"
]
},
"SortDirection": {
"enum": ["None", "Ascending", "Descending"],
"type": "string",
"description": "Represents the direction in which to sort the results",
"x-enumNames": ["None", "Ascending", "Descending"],
"x-enum-varnames": ["None", "Ascending", "Descending"]
},
"SoundEffect": {
"type": "object",
"allOf": [
{
"$ref": "#/components/schemas/Audio"
}
],
"properties": {
"category": {
"type": "string",
"description": "The sound effect category.",
"nullable": true
},
"subcategory": {
"type": "string",
"description": "The sound effect subcategory.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Representation of a sound effect asset.",
"nullable": true
},
"StartExperimentResponse": {
"type": "object",
"properties": {
"operation": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentOperation"
}
],
"description": "The async operation that started the experiment.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for\r\n`POST /v1/experimentation/universes/{universeId}/experiments/{experimentId}:start`."
},
"State": {
"type": "string",
"description": "Whether the asset is active or archived. Unspecified isn't used.",
"enum": ["Unspecified", "Active", "Archived"]
},
"Status": {
"type": "object",
"properties": {
"code": {
"type": "integer",
"description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].",
"format": "int32"
},
"message": {
"type": "string",
"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client."
},
"details": {
"type": "array",
"items": {
"$ref": "#/components/schemas/GoogleProtobufAny"
},
"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use."
}
},
"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors)."
},
"StringExclusiveStartKeyCursor": {
"type": "object",
"properties": {
"discriminator": {
"type": "string",
"nullable": true
},
"count": {
"type": "integer",
"format": "int32"
},
"key": {
"type": "string",
"nullable": true
},
"sortOrder": {
"allOf": [
{
"$ref": "#/components/schemas/PrivateServersApi.SortOrder"
}
]
},
"pagingDirection": {
"allOf": [
{
"$ref": "#/components/schemas/CursorPagingDirection"
}
]
},
"pageNumber": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"StructuredStackFrame": {
"type": "object",
"properties": {
"line": {
"type": "integer",
"description": "The line number where the error occurred.",
"format": "int32"
},
"function": {
"type": "string",
"description": "The name of the function in which the error occurred.",
"nullable": true
},
"scriptPath": {
"type": "string",
"description": "The data model path to the script where the error occurred.",
"nullable": true
},
"scriptUniqueId": {
"type": "string",
"description": "The unique id for the script where the error occurred.\r\nWill be null for frames where the code was from ```loadScript``` or ```require(assetId)```.\r\nIf ServerManagementService.V2.Models.StructuredStackFrame.IsDynamic is true, this will be a dynamic id that does not refer to a script in the studio Data Model.",
"nullable": true
},
"isDynamic": {
"type": "boolean",
"description": "Identifies whether the ServerManagementService.V2.Models.StructuredStackFrame.ScriptUniqueId refers to a script that exists in the Studio Data Model.\r\nIf this is true, then the script that generated the error was copied at runtime.\r\nThis includes Starter scripts (e.g. StarterGui, StarterPack, StarterPlayerScripts, StarterCharacterScripts).",
"nullable": true
}
},
"additionalProperties": false,
"description": "Part of the ServerManagementService.V2.Models.GameServerLog and ServerManagementService.V2.Models.ClientLog response objects.\r\nRepresenting the metadata for a single frame in a structured stack trace."
},
"SubjectType": {
"enum": ["Invalid", "User", "Group", "GroupRoleset", "All", "Universe"],
"type": "string"
},
"Subscription": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/subscription-products/some-subscription-product-id/subscriptions/some-subscription-id",
"type": "string",
"description": "The resource path of the subscription.\n\nFormat:\n`universes/{universe_id}/subscription-products/{subscription_product_id}/subscriptions/{subscription_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the subscription was created.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the subscription was last updated.",
"format": "date-time"
},
"active": {
"readOnly": true,
"example": true,
"type": "boolean",
"description": "Whether the subscription is active.\n\nThis is equivalent to whether `state` is equal to SUBSCRIBED_WILL_RENEW,\nSUBSCRIBED_WILL_NOT_RENEW, or SUBSCRIBED_RENEWAL_PAYMENT_PENDING."
},
"willRenew": {
"readOnly": true,
"example": true,
"type": "boolean",
"description": "Whether the subscription will renew.\n\nThis is equivalent to whether `state` is equal to SUBSCRIBED_WILL_RENEW or\nSUBSCRIBED_RENEWAL_PAYMENT_PENDING."
},
"lastBillingTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the subscription was last billed.",
"format": "date-time"
},
"nextRenewTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the subscription will next be automatically renewed.",
"format": "date-time"
},
"expireTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the subscription will, or did, expire.",
"format": "date-time"
},
"state": {
"readOnly": true,
"example": "STATE_UNSPECIFIED",
"enum": [
"STATE_UNSPECIFIED",
"SUBSCRIBED_WILL_RENEW",
"SUBSCRIBED_WILL_NOT_RENEW",
"SUBSCRIBED_RENEWAL_PAYMENT_PENDING",
"EXPIRED"
],
"type": "string",
"description": "The state of the subscription.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | STATE_UNSPECIFIED | The subscription state is unspecified. |\n | SUBSCRIBED_WILL_RENEW | The subscription is active and will be automatically renewed at `next_renew_time`. |\n | SUBSCRIBED_WILL_NOT_RENEW | The subscription is active but will not be automatically renewed. |\n | SUBSCRIBED_RENEWAL_PAYMENT_PENDING | The subscription is active and within the renewal grace period pending payment confirmation. |\n | EXPIRED | The subscription has expired. See `expiration_details` for more information. |",
"format": "enum"
},
"expirationDetails": {
"$ref": "#/components/schemas/Subscription_ExpirationDetails",
"description": "Information about the expiration of the subscription."
},
"purchasePlatform": {
"readOnly": true,
"example": "PURCHASE_PLATFORM_UNSPECIFIED",
"enum": ["PURCHASE_PLATFORM_UNSPECIFIED", "DESKTOP", "MOBILE"],
"type": "string",
"description": "The platform on which the subscription was purchased.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | PURCHASE_PLATFORM_UNSPECIFIED | The purchase platform is unspecified. |\n | DESKTOP | The subscription was purchased on the Roblox website. |\n | MOBILE | The subscription was purchased on the Roblox mobile app. |",
"format": "enum"
},
"paymentProvider": {
"readOnly": true,
"example": "PAYMENT_PROVIDER_UNSPECIFIED",
"enum": [
"PAYMENT_PROVIDER_UNSPECIFIED",
"STRIPE",
"APPLE",
"GOOGLE",
"ROBLOX_CREDIT",
"ROBUX"
],
"type": "string",
"description": "The payment provider used to purchase the subscription.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | PAYMENT_PROVIDER_UNSPECIFIED | The payment provider is unspecified. |\n | STRIPE | The subscription was purchased using Stripe. |\n | APPLE | The subscription was purchased using Apple. |\n | GOOGLE | The subscription was purchased using Google. |\n | ROBLOX_CREDIT | The subscription was purchased using Roblox Credit. |\n | ROBUX | The subscription was purchased using Robux. |",
"format": "enum"
},
"user": {
"example": "users/123",
"type": "string",
"description": "The user who subscribed to the subscription.",
"x-immutable": true
}
},
"description": "Represents a user's subscription to a subscription product. The\nsubscription ID is the same as the user ID of the user who subscribed.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/subscription-products/{subscription_product_id}/subscriptions/{subscription_id}"
],
"plural": "subscriptions",
"singular": "subscription"
},
"x-resource": true,
"x-oneOf": {
"subscriber": ["user"]
}
},
"Subscription_ExpirationDetails": {
"type": "object",
"properties": {
"reason": {
"example": "EXPIRATION_REASON_UNSPECIFIED",
"enum": [
"EXPIRATION_REASON_UNSPECIFIED",
"PRODUCT_INACTIVE",
"PRODUCT_DELETED",
"SUBSCRIBER_CANCELLED",
"SUBSCRIBER_REFUNDED",
"LAPSED"
],
"type": "string",
"description": "The reason the subscription expired.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | EXPIRATION_REASON_UNSPECIFIED | The expiration reason is unspecified. |\n | PRODUCT_INACTIVE | The subscription product is inactive. |\n | PRODUCT_DELETED | The subscription product is deleted. |\n | SUBSCRIBER_CANCELLED | The subscriber cancelled the subscription. |\n | SUBSCRIBER_REFUNDED | The subscriber requested a refund. |\n | LAPSED | The subscriber’s payment was not received. |",
"format": "enum"
}
},
"description": "Information about the expiration of a subscription."
},
"SuccessResponse": {
"required": ["success"],
"type": "object",
"properties": {
"success": {
"type": "boolean",
"description": "Whether or not the request was successfully executed."
}
},
"additionalProperties": false,
"description": "Standard success response model."
},
"TargetingCriteria": {
"type": "object",
"properties": {
"rule": {
"allOf": [
{
"$ref": "#/components/schemas/ConditionalRuleDefinition"
}
],
"description": "RPN rule that decides whether an evaluator (user, request, etc.) is eligible for the\r\nexperiment. `null` means no targeting (every otherwise-eligible user is in scope).",
"nullable": true
}
},
"additionalProperties": false,
"description": "Eligibility criteria scoping which users an experiment can apply to."
},
"ThumbnailPersonalizationApi.ModerationStatus": {
"enum": ["Reviewing", "Rejected", "Approved", "Unspecified"],
"type": "string",
"description": "The moderation status of a homepage thumbnail's image asset."
},
"ThumbnailPersonalizedConfig": {
"required": [
"createdUtc",
"id",
"personalizedConfigStatus",
"thumbnails"
],
"type": "object",
"properties": {
"id": {
"minLength": 1,
"type": "string",
"description": "The unique identifier of the personalization configuration."
},
"personalizedConfigStatus": {
"allOf": [
{
"$ref": "#/components/schemas/PersonalizedConfigStatus"
}
],
"description": "The lifecycle status of the personalization configuration."
},
"createdUtc": {
"type": "string",
"description": "The UTC date and time when the configuration was created.",
"format": "date-time"
},
"thumbnails": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PersonalizedThumbnail"
},
"description": "The homepage thumbnails included in the configuration."
},
"lastServedUtc": {
"type": "string",
"description": "The UTC date and time when the configuration last served a thumbnail, when available.",
"format": "date-time",
"nullable": true
}
},
"additionalProperties": false,
"description": "A thumbnail personalization configuration."
},
"ThumbnailResponse": {
"type": "object",
"properties": {
"mediaId": {
"type": "integer",
"format": "int64"
},
"rank": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false
},
"ToolboxService.Asset": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The unique identifier of the asset.",
"format": "int64"
},
"name": {
"type": "string",
"description": "The name of the asset.",
"nullable": true
},
"description": {
"type": "string",
"description": "The description of the asset.",
"nullable": true
},
"assetTypeId": {
"type": "integer",
"description": "The type that the asset belongs to.",
"format": "int32",
"nullable": true
},
"socialLinks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SocialLinkModel"
},
"description": "The social links associated with the asset.",
"nullable": true
},
"previewAssets": {
"allOf": [
{
"$ref": "#/components/schemas/PreviewAssetsModel"
}
],
"description": "The asset's preview asset ids grouped by asset type.",
"nullable": true
},
"createTime": {
"type": "string",
"description": "The time the asset was created.",
"format": "date-time",
"nullable": true
},
"updateTime": {
"type": "string",
"description": "The time the asset was last updated.",
"format": "date-time",
"nullable": true
},
"creatingUniverseId": {
"type": "integer",
"description": "Universe ID if the asset was created within a specific universe.",
"format": "int64",
"nullable": true
},
"categoryPath": {
"type": "string",
"description": "Category Path of the asset, if it exists.\ne.g. \"3d__characters\"",
"nullable": true
}
},
"additionalProperties": false,
"description": "Representation of an asset.",
"nullable": true
},
"ToolboxService.CreatorStoreProduct": {
"required": ["purchasable", "purchasePrice"],
"type": "object",
"properties": {
"purchasePrice": {
"allOf": [
{
"$ref": "#/components/schemas/ToolboxService.Money"
}
],
"description": "The price of the asset, including the currency code.",
"nullable": true
},
"purchasable": {
"type": "boolean",
"description": "Whether or not the asset can be purchased in the Creator Store."
}
},
"additionalProperties": false,
"description": "The asset's creator store product information.",
"nullable": true
},
"ToolboxService.Decimal": {
"type": "object",
"properties": {
"significand": {
"type": "integer",
"format": "int64"
},
"exponent": {
"type": "integer",
"format": "int32"
}
},
"additionalProperties": false,
"nullable": true
},
"ToolboxService.Money": {
"type": "object",
"properties": {
"currencyCode": {
"type": "string",
"nullable": true
},
"quantity": {
"allOf": [
{
"$ref": "#/components/schemas/ToolboxService.Decimal"
}
],
"nullable": true
}
},
"additionalProperties": false,
"nullable": true
},
"TranslateTextRequest": {
"required": ["text"],
"type": "object",
"properties": {
"text": {
"example": "Hello",
"type": "string",
"description": "The text to be translated."
},
"sourceLanguageCode": {
"example": "en-us",
"type": "string",
"description": "The IETF BCP-47 language code representing the language of the\ninput text.\n\nIf not provided, the system automatically detects the\nsource language.\n\nSupported language codes include:\n\n- English (en-us)\n- French (fr-fr)\n- Vietnamese (vi-vn)\n- Thai (th-th)\n- Turkish (tr-tr)\n- Russian (ru-ru)\n- Spanish (es-es)\n- Portuguese (pt-br)\n- Korean (ko-kr)\n- Japanese (ja-jp)\n- Chinese Simplified (zh-cn)\n- Chinese Traditional (zh-tw)\n- German (de-de)\n- Polish (pl-pl)\n- Italian (it-it)\n- Indonesian (id-id)"
},
"targetLanguageCodes": {
"example": "fr-fr, vi-vn, ja-jp",
"type": "array",
"items": {
"type": "string"
},
"description": "A list of target language codes in IETF BCP-47 format for translation.\n\nSupported language codes include:\n\n- English (en-us)\n- French (fr-fr)\n- Vietnamese (vi-vn)\n- Thai (th-th)\n- Turkish (tr-tr)\n- Russian (ru-ru)\n- Spanish (es-es)\n- Portuguese (pt-br)\n- Korean (ko-kr)\n- Japanese (ja-jp)\n- Chinese Simplified (zh-cn)\n- Chinese Traditional (zh-tw)\n- German (de-de)\n- Polish (pl-pl)\n- Italian (it-it)\n- Indonesian (id-id)"
}
},
"description": "Contains the text to be translated, the source language (optional), and a\nlist of target languages for translation."
},
"TranslateTextResponse": {
"type": "object",
"properties": {
"sourceLanguageCode": {
"type": "string",
"description": "The IETF BCP-47 language code representing the detected or user-specified\nlanguage of the source text."
},
"translations": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "A map containing the requested translations. The key is the IETF BCP-47\nlanguage code, and the value is the translated text for that language.\nThe map contains all requested translations."
}
},
"description": "Contains the detected or specified source language code and a map of\nrequested translations, where each key is a language code and the value is\nthe translated text."
},
"TranslationRolesApi.Roblox.Web.WebAPI.ApiEmptyResponseModel": {
"type": "object"
},
"TranslationRolesApi.Roblox.Web.WebAPI.Models.ApiArrayResponse_System.String_": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"UnassignRoleGroupMembershipRequest": {
"required": ["role"],
"type": "object",
"properties": {
"role": {
"example": "groups/123/roles/456",
"type": "string",
"description": "The resource path of the role to unassign.\n\nFormat: `groups/{group_id}/roles/{group_role_id}`"
}
},
"description": "Unassigns a role from the specified group membership."
},
"UndeleteDataStoreRequest": {
"type": "object",
"properties": {},
"description": "Restore the data store"
},
"Universe": {
"required": ["templateRootPlace"],
"type": "object",
"properties": {
"path": {
"example": "universes/123",
"type": "string",
"description": "The resource path of the universe.\n\nFormat: `universes/{universe_id}`"
},
"createTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the universe was created.",
"format": "date-time"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the universe was last updated.",
"format": "date-time"
},
"displayName": {
"readOnly": true,
"example": "ROBLOX Battle [OPEN]",
"type": "string",
"description": "The name of the universe.\n\nThis field can be updated by updating the root place's name."
},
"description": {
"readOnly": true,
"example": "OPEN SOURCE! \n Feel free to check out how we made this game and ask us about it!",
"type": "string",
"description": "The description of the universe.\n\nThis field can be updated by updating the root place's description."
},
"user": {
"readOnly": true,
"type": "string",
"description": "The universe is user-owned."
},
"group": {
"type": "string",
"description": "The universe is group-owned.",
"x-immutable": true
},
"visibility": {
"readOnly": true,
"example": "VISIBILITY_UNSPECIFIED",
"enum": ["VISIBILITY_UNSPECIFIED", "PUBLIC", "PRIVATE"],
"type": "string",
"description": "Whether or not the universe is publicly accessible.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | VISIBILITY_UNSPECIFIED | Updates using this value will throw an error on the backend. |\n | PUBLIC | The universe is public. |\n | PRIVATE | The universe is private. If a universe's visibility is set to PRIVATE, all active players will immediately be removed from all running servers. |",
"format": "enum"
},
"facebookSocialLink": {
"$ref": "#/components/schemas/Universe_SocialLink",
"description": "The Facebook social link."
},
"twitterSocialLink": {
"$ref": "#/components/schemas/Universe_SocialLink",
"description": "The Twitter social link."
},
"youtubeSocialLink": {
"$ref": "#/components/schemas/Universe_SocialLink",
"description": "The Youtube social link."
},
"twitchSocialLink": {
"$ref": "#/components/schemas/Universe_SocialLink",
"description": "The Twitch social link."
},
"discordSocialLink": {
"$ref": "#/components/schemas/Universe_SocialLink",
"description": "The Discord social link."
},
"robloxGroupSocialLink": {
"$ref": "#/components/schemas/Universe_SocialLink",
"description": "The Roblox group social link."
},
"guildedSocialLink": {
"$ref": "#/components/schemas/Universe_SocialLink",
"description": "The Guilded social link."
},
"voiceChatEnabled": {
"example": true,
"type": "boolean",
"description": "Whether or not voice chat is enabled for users in the Experience.\n\nUpdating this value will not affect active servers."
},
"ageRating": {
"readOnly": true,
"example": "AGE_RATING_UNSPECIFIED",
"enum": [
"AGE_RATING_UNSPECIFIED",
"AGE_RATING_ALL",
"AGE_RATING_9_PLUS",
"AGE_RATING_13_PLUS",
"AGE_RATING_17_PLUS"
],
"type": "string",
"description": "The age rating of this universe.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | AGE_RATING_UNSPECIFIED | The age rating is not set. |\n | AGE_RATING_ALL | Supported for all users. |\n | AGE_RATING_9_PLUS | Supported for users aged 9 and up. |\n | AGE_RATING_13_PLUS | Supported for users aged 13 and up. |\n | AGE_RATING_17_PLUS | Supported for users aged 17 and up. |",
"format": "enum"
},
"privateServerPriceRobux": {
"type": "integer",
"description": "Represents the price in Robux of private servers.\n\nIf unset, private servers are not supported for this universe.\n\nCan only be disabled when using a field mask.\n\nSetting to null will disable all active private servers.\n\nChanging the price will cancel all private server subscriptions.",
"format": "int32"
},
"desktopEnabled": {
"example": true,
"type": "boolean",
"description": "Whether or not players can join the Experience via Desktop."
},
"mobileEnabled": {
"example": true,
"type": "boolean",
"description": "Whether or not players can join the Experience via Mobile."
},
"tabletEnabled": {
"example": true,
"type": "boolean",
"description": "Whether or not players can join the Experience via Tablet."
},
"consoleEnabled": {
"example": true,
"type": "boolean",
"description": "Whether or not players can join the Experience via Console."
},
"vrEnabled": {
"example": true,
"type": "boolean",
"description": "Whether or not players can join the Experience via VR."
},
"rootPlace": {
"readOnly": true,
"type": "string",
"description": "The resource path of the root place of this universe\nFormat: universes/{universe_id}/places/{place_id}"
},
"templateRootPlace": {
"writeOnly": true,
"example": "universes/{universe_id}/places/{place_id}",
"type": "string",
"description": "The resource path of the template place, used for CreateUniverse.\nThe root place of the newly-created universe will be a clone of this\ntemplate. A list of the valid template places can be obtained from\nListTemplatePlaces. Format: universes/{universe_id}/places/{place_id}",
"x-immutable": true
}
},
"description": "Represents a Roblox experience.",
"x-aep-resource": {
"patterns": ["universes/{universe_id}"],
"plural": "universes",
"singular": "universe"
},
"x-resource": true,
"x-oneOf": {
"ConsoleEnabled": ["consoleEnabled"],
"DesktopEnabled": ["desktopEnabled"],
"MobileEnabled": ["mobileEnabled"],
"PrivateServerPriceRobux": ["privateServerPriceRobux"],
"TabletEnabled": ["tabletEnabled"],
"VoiceChatEnabled": ["voiceChatEnabled"],
"VrEnabled": ["vrEnabled"],
"owner": ["user", "group"]
}
},
"UniverseExperimentMetric": {
"enum": [
"UNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME",
"UNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER",
"UNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION",
"UNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION",
"UNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE",
"UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER",
"UNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER"
],
"type": "string",
"description": "Metric tracked for a universe experiment.\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME\n\nUNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER",
"x-enum-varnames": [
"AverageSessionTime",
"PlaytimePerUser",
"Day1Retention",
"Day7Retention",
"PayerConversionRate",
"AverageRevenuePerUser",
"AverageRevenuePerPayingUser"
]
},
"UniverseMetricConfiguration": {
"type": "object",
"properties": {
"goalMetric": {
"allOf": [
{
"$ref": "#/components/schemas/UniverseExperimentMetric"
}
],
"description": "Goal metric.\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME\n\nUNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER",
"x-enum-varnames": [
"AverageSessionTime",
"PlaytimePerUser",
"Day1Retention",
"Day7Retention",
"PayerConversionRate",
"AverageRevenuePerUser",
"AverageRevenuePerPayingUser"
]
},
"learningMetrics": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UniverseExperimentMetric"
},
"description": "Learning (observation-only) metrics.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Metric configuration for an experiment."
},
"Universe_SocialLink": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The title of the social link."
},
"uri": {
"type": "string",
"description": "The uri of the social link."
}
},
"description": "A social link that may be associated with the universe.\n\nCan only be removed when using a field mask."
},
"UpdateCustomMatchmakingSignalRequest": {
"type": "object",
"properties": {
"scoringConfigurationId": {
"type": "string",
"description": "The ID of the scoring configuration.",
"nullable": true
},
"signalConfiguration": {
"$ref": "#/components/schemas/CustomSignalConfiguration"
}
},
"additionalProperties": false,
"description": "Request to update a custom matchmaking signal."
},
"UpdateCustomMatchmakingSignalResponse": {
"type": "object",
"properties": {
"scoringConfiguration": {
"$ref": "#/components/schemas/MatchmakingScoringConfiguration"
}
},
"additionalProperties": false,
"description": "Response to update a custom matchmaking signal."
},
"UpdateDraftRequest": {
"type": "object",
"properties": {
"draftHash": {
"type": "string",
"description": "The previous draft hash for concurrency control. If provided, the update will fail if it doesn't match.",
"nullable": true
},
"entries": {
"type": "object",
"additionalProperties": {
"nullable": true
},
"description": "On PATCH, keys not included are unchanged; set a key to null to delete a branch or entry per merge rules.\r\nOn PUT `draft:overwrite`, this map is the authoritative final entry set: any key present on the latest published configuration but omitted here is removed, and any conditional branch omitted for a key that remains is removed.",
"nullable": true
},
"conditionalRules": {
"allOf": [
{
"$ref": "#/components/schemas/ConditionalRulesPayload"
}
],
"description": "Optional conditional rules. On PATCH, merges with the current draft rules when this payload is non-empty (any rule id or `rulesOrder` entry).\r\nOmit the property or send an empty object `{}` to leave rules unchanged (draft rules, or latest published rules if the draft has none yet).\r\nOn PUT `draft:overwrite`, when this property is present,\r\nCreatorConfigsPublicApi.Models.ConditionalRulesPayload.Rules is the full intended rule set after publish: rules that exist on the latest published configuration but are omitted are removed.\r\nWhen omitted on overwrite, all published conditional rules are cleared (entries must not reference conditionals unless you provide this object).",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request model for draft updates: PATCH uses a partial merge; PUT `draft:overwrite` treats the body as the full intended configuration after publish."
},
"UpdateEntryRequest": {
"required": ["value"],
"type": "object",
"properties": {
"value": {
"type": "integer",
"description": "The value to update the entry. If the input value exceeds the maximum value supported by int64, which is 9,223,372,036,854,775,807, the request fails with a 400 Bad Request error.",
"format": "int64"
}
},
"description": "Updates the entry provided with a new value."
},
"UpdateExperimentData": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Experiment display name.",
"nullable": true
},
"description": {
"type": "string",
"description": "Experiment description.",
"nullable": true
},
"experimentConfiguration": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentConfiguration"
}
],
"description": "Experiment configuration (variants + product-type-specific data).",
"nullable": true
},
"exposurePercent": {
"type": "integer",
"description": "Exposure percent in range 0-100.",
"format": "int32"
},
"targetingCriteria": {
"allOf": [
{
"$ref": "#/components/schemas/TargetingCriteria"
}
],
"description": "Targeting criteria scoping which users are eligible for the experiment.",
"nullable": true
},
"durationSeconds": {
"type": "integer",
"description": "Experiment duration in whole seconds.",
"format": "int64"
},
"universeGoalMetric": {
"allOf": [
{
"$ref": "#/components/schemas/UniverseExperimentMetric"
}
],
"description": "Goal metric for the experiment.\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_SESSION_TIME\n\nUNIVERSE_EXPERIMENT_METRIC_PLAYTIME_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_1_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_DAY_7_RETENTION\n\nUNIVERSE_EXPERIMENT_METRIC_PAYER_CONVERSION_RATE\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_USER\n\nUNIVERSE_EXPERIMENT_METRIC_AVERAGE_REVENUE_PER_PAYING_USER",
"x-enum-varnames": [
"AverageSessionTime",
"PlaytimePerUser",
"Day1Retention",
"Day7Retention",
"PayerConversionRate",
"AverageRevenuePerUser",
"AverageRevenuePerPayingUser"
]
}
},
"additionalProperties": false,
"description": "Request body for\r\n`PATCH /v1/experimentation/universes/{universeId}/experiments/{experimentId}`.\r\nMirrors CreatorConfigsPublicApi.Models.Experimentation.CreateExperimentData; updating is modeled as a full replace of these fields."
},
"UpdateExperimentResponse": {
"type": "object",
"properties": {
"operation": {
"allOf": [
{
"$ref": "#/components/schemas/ExperimentOperation"
}
],
"description": "Resulting async operation describing the update call.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Response body for PATCH /v1/universes/{universeId}/experiment/{experimentId}."
},
"UpdateGameEventConfigRequest": {
"type": "object",
"properties": {
"recurrence": {
"type": "string",
"description": "New cron recurrence expression. Null = no change. Validated server-side.",
"nullable": true
},
"recurrenceEndTime": {
"type": "string",
"format": "date-time",
"nullable": true
},
"notificationAudience": {
"allOf": [
{
"$ref": "#/components/schemas/EventNotificationAudience"
}
],
"nullable": true
}
},
"additionalProperties": false,
"description": "Optional config block on the v3 PATCH body. Null sub-fields = no change."
},
"UpdateGameEventRequest": {
"type": "object",
"properties": {
"title": {
"type": "string",
"nullable": true
},
"subtitle": {
"type": "string",
"nullable": true
},
"description": {
"type": "string",
"nullable": true
},
"startTime": {
"type": "string",
"format": "date-time",
"nullable": true
},
"endTime": {
"type": "string",
"format": "date-time",
"nullable": true
},
"visibility": {
"allOf": [
{
"$ref": "#/components/schemas/EventVisibility"
}
],
"description": "Must be `Public` or `Private`; other values are rejected. Null = no change.",
"nullable": true
},
"placeId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"categories": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EventRankedCategory"
},
"nullable": true
},
"thumbnails": {
"type": "array",
"items": {
"$ref": "#/components/schemas/EventMedia"
},
"nullable": true
},
"config": {
"allOf": [
{
"$ref": "#/components/schemas/UpdateGameEventConfigRequest"
}
],
"description": "Optional config block on the v3 PATCH body. Null sub-fields = no change.",
"nullable": true
},
"featuringStatus": {
"allOf": [
{
"$ref": "#/components/schemas/FeaturingStatus"
}
],
"nullable": true
},
"tagline": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request body for `PATCH /v3/game-events/{eventId}`.\r\nEvery field is optional; null = \"no change\". An empty body is a no-op and returns the current resource."
},
"UpdateGroupInvitationRequestModel": {
"required": ["status"],
"type": "object",
"properties": {
"status": {
"$ref": "#/components/schemas/GroupInvitationStatus"
}
},
"additionalProperties": false,
"description": "Request for accepting or declining a group invitation."
},
"UpdateInstanceMetadata": {
"type": "object",
"properties": {},
"description": "Represents metadata about the long-running operation corresponding to a\nUpdateInstance request.\n\nThis is the type of the `Operation.metadata` field in the response to\n`GetOperation` requests for UpdateInstance operations."
},
"UpdateMatchmakingPlayerAttributeDefinitionRequest": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"description": "Id of the attribute to update.",
"nullable": true
},
"defaultValue": {
"$ref": "#/components/schemas/MatchmakingAttributeValue"
},
"attributeValueLocation": {
"$ref": "#/components/schemas/MatchmakingAttributeValueLocation"
}
},
"additionalProperties": false,
"description": "Request model for updating a PlayerAttributeDefinition."
},
"UpdateMatchmakingPlayerAttributeDefinitionResponse": {
"type": "object",
"properties": {
"playerAttributeDefinition": {
"$ref": "#/components/schemas/MatchmakingPlayerAttributeDefinition"
}
},
"additionalProperties": false,
"description": "The response for updating a matchmaking player attribute definition."
},
"UpdateMatchmakingScoringConfigurationRequest": {
"type": "object",
"properties": {
"scoringConfigurationId": {
"type": "string",
"description": "The ID of the scoring configuration to be updated.",
"nullable": true
},
"name": {
"type": "string",
"description": "Name of the scoring configuration.",
"nullable": true
},
"matchmakingSignalWeights": {
"type": "object",
"properties": {
"Invalid": {
"type": "number",
"format": "double"
},
"Occupancy": {
"type": "number",
"format": "double"
},
"Age": {
"type": "number",
"format": "double"
},
"Language": {
"type": "number",
"format": "double"
},
"Latency": {
"type": "number",
"format": "double"
},
"PreferredPlayers": {
"type": "number",
"format": "double"
},
"VoiceChat": {
"type": "number",
"format": "double"
},
"DeviceType": {
"type": "number",
"format": "double"
},
"PlayHistory": {
"type": "number",
"format": "double"
},
"TextChat": {
"type": "number",
"format": "double"
}
},
"additionalProperties": false,
"description": "The desired set of weights for each matchmaking signal.",
"nullable": true
},
"customSignalWeights": {
"type": "object",
"additionalProperties": {
"type": "number",
"format": "double",
"nullable": true
},
"description": "The desired set of weights for custom signals. It is a map from custom signal name to its weight.",
"nullable": true
}
},
"additionalProperties": false,
"description": "Request to update a custom matchmaking signal."
},
"UpdateMatchmakingScoringConfigurationResponse": {
"type": "object",
"properties": {
"scoringConfiguration": {
"$ref": "#/components/schemas/MatchmakingScoringConfiguration"
}
},
"additionalProperties": false,
"description": "Response to update a matchmaking scoring configuration."
},
"UpdateMatchmakingServerAttributeDefinitionRequest": {
"type": "object",
"properties": {
"attributeId": {
"type": "string",
"description": "Id of the attribute to update.",
"nullable": true
},
"defaultValue": {
"$ref": "#/components/schemas/MatchmakingServerAttributeDefaultValue"
}
},
"additionalProperties": false,
"description": "Request model to update an exising ServerAttributeDefinition."
},
"UpdateMatchmakingServerAttributeDefinitionResponse": {
"type": "object",
"properties": {
"playerAttributeDefinition": {
"$ref": "#/components/schemas/MatchmakingServerAttributeDefinition"
}
},
"additionalProperties": false,
"description": "The response for updating a matchmaking server attribute definition."
},
"UpdatePlaceVersionNotesRequest": {
"type": "object",
"properties": {
"title": {
"type": "string",
"nullable": true
},
"description": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"UpdatePlaceVersionNotesResponse": {
"type": "object",
"properties": {
"placeVersion": {
"allOf": [
{
"$ref": "#/components/schemas/PlaceVersion"
}
],
"nullable": true
}
},
"additionalProperties": false
},
"UpdateThumbnailPersonalizationRequest": {
"required": ["homepageThumbnailIds", "id"],
"type": "object",
"properties": {
"homepageThumbnailIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "The homepage thumbnail identifiers to include in the configuration. Up to five are supported."
},
"id": {
"minLength": 1,
"type": "string",
"description": "The identifier of the active personalization configuration to update."
}
},
"additionalProperties": false,
"description": "The request to update a thumbnail personalization configuration."
},
"UploadStatus": {
"enum": [1, 2],
"type": "integer",
"description": "The aggregate processing status of a set of homepage thumbnail uploads.",
"format": "int32"
},
"UploadThumbnailStatus": {
"type": "object",
"properties": {
"homepageThumbnailId": {
"type": "string",
"description": "The unique identifier of the created homepage thumbnail.",
"nullable": true
},
"assetId": {
"type": "integer",
"description": "The identifier of the uploaded image asset.",
"format": "int64"
},
"moderationStatus": {
"allOf": [
{
"$ref": "#/components/schemas/ThumbnailPersonalizationApi.ModerationStatus"
}
],
"description": "The moderation status of the uploaded image asset."
}
},
"additionalProperties": false,
"description": "The result of a completed homepage thumbnail upload operation."
},
"UploadThumbnailsResponse": {
"required": ["fileToOperationIdDict"],
"type": "object",
"properties": {
"fileToOperationIdDict": {
"type": "object",
"additionalProperties": {
"type": "string",
"nullable": true
},
"description": "A mapping from each uploaded file name to the operation ID used to track its processing."
}
},
"additionalProperties": false,
"description": "The operations created for uploaded homepage thumbnail files."
},
"UploadThumbnailsStatusResponse": {
"required": ["uploadStatus", "uploadThumbnailStatusDict"],
"type": "object",
"properties": {
"uploadStatus": {
"allOf": [
{
"$ref": "#/components/schemas/UploadStatus"
}
],
"description": "The aggregate status of the requested upload operations."
},
"uploadThumbnailStatusDict": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/UploadThumbnailStatus"
},
"description": "A mapping from each completed operation ID to its uploaded thumbnail details."
}
},
"additionalProperties": false,
"description": "The processing status of homepage thumbnail upload operations."
},
"UserGameVoteRequest": {
"type": "object",
"properties": {
"vote": {
"type": "boolean",
"nullable": true
}
},
"additionalProperties": false
},
"UserGameVoteResponse": {
"type": "object",
"properties": {
"canVote": {
"type": "boolean"
},
"userVote": {
"type": "boolean",
"nullable": true
},
"reasonForNotVoteable": {
"type": "string",
"nullable": true
}
},
"additionalProperties": false
},
"UserNotification": {
"type": "object",
"properties": {
"path": {
"example": "users/123/notifications/01234567-ABCD-1234-ABCD-0123456789AB",
"type": "string",
"description": "The resource path of the user notification.\n\nFormat: `users/{user_id}/notifications/{user_notification_id}`"
},
"id": {
"readOnly": true,
"example": "a6746f2e-2cc6-11ee-be56-0242ac120002",
"type": "string",
"description": "A unique UUID of the user notification."
},
"source": {
"$ref": "#/components/schemas/UserNotification_Source",
"description": "The source of the notification."
},
"payload": {
"$ref": "#/components/schemas/UserNotification_Payload",
"description": "The notification payload."
}
},
"description": "Represents a notification sent to a user.",
"x-aep-resource": {
"patterns": ["users/{user_id}/notifications/{user_notification_id}"],
"plural": "user-notifications",
"singular": "user-notification"
},
"x-resource": true
},
"UserNotification_Payload": {
"type": "object",
"properties": {
"type": {
"writeOnly": true,
"example": "TYPE_UNSPECIFIED",
"enum": ["TYPE_UNSPECIFIED", "MOMENT"],
"type": "string",
"description": "The type of notification.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | TYPE_UNSPECIFIED | The default value. This value is unused. |\n | MOMENT | A notification type representing a moment. |",
"format": "enum"
},
"messageId": {
"writeOnly": true,
"example": "5dd7024b-68e3-ac4d-8232-4217f86ca244",
"type": "string",
"description": "An ID that represents a customizable notification message template\nthat you create in Creator Dashboard.\n\nThe message can contain customizable parameters that you can specify\nvalues for. For example, `Your {egg_name} just hatched` has an\n`egg_name` parameter. See the `parameters` field for more\ninformation."
},
"parameters": {
"writeOnly": true,
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/UserNotification_Payload_ParameterValue"
},
"description": "A map of parameters used to render a notification message template.\n\nFor example, given a template of `Your {egg_name} just hatched.` with\nparameters of `[{\"egg_name\": {\"string_value\": \"royal egg\"}}]`, the\nrendered notification message is: `Your royal egg just hatched.`"
},
"joinExperience": {
"$ref": "#/components/schemas/UserNotification_Payload_JoinExperience",
"description": "Call-to-action that represents joining an experience."
},
"analyticsData": {
"$ref": "#/components/schemas/UserNotification_Payload_AnalyticsData",
"description": "Data for how analytics are reported."
}
},
"description": "Details about the notification.",
"x-oneOf": {
"callToAction": ["joinExperience"]
}
},
"UserNotification_Payload_AnalyticsData": {
"type": "object",
"properties": {
"category": {
"writeOnly": true,
"example": "Bronze egg hatched",
"type": "string",
"description": "Category of the notification, used to group analytics data.\n\nFor example, \"Golden egg hatched\", \"Bronze egg hatched\", \"Volcano\neruptions\"."
}
},
"description": "Data for how analytics are reported."
},
"UserNotification_Payload_JoinExperience": {
"type": "object",
"properties": {
"launchData": {
"writeOnly": true,
"example": "Launch Data",
"type": "string",
"description": "Arbitrary data that is available to an experience\nwhen a user joins the experience with the notification.\n\nThis value is limited to a maximum of 200 bytes."
}
},
"description": "A call-to-action that represents joining an experience."
},
"UserNotification_Payload_ParameterValue": {
"type": "object",
"properties": {
"stringValue": {
"example": "bronze egg",
"type": "string",
"description": "A string value."
},
"int64Value": {
"example": 10101010,
"type": "integer",
"description": "An int64 value.",
"format": "int64"
}
},
"description": "A parameter value that a template uses to render a notification message.",
"x-oneOf": {
"value": ["stringValue", "int64Value"]
}
},
"UserNotification_Source": {
"type": "object",
"properties": {
"universe": {
"writeOnly": true,
"example": "universes/96623001",
"type": "string",
"description": "The universe from which the user notification is sent."
}
},
"description": "The source of the notification.",
"x-oneOf": {
"source": ["universe"]
}
},
"UserPresence": {
"type": "object",
"properties": {
"userPresenceType": {
"allOf": [
{
"$ref": "#/components/schemas/PresenceType"
}
]
},
"lastLocation": {
"type": "string",
"nullable": true
},
"placeId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"rootPlaceId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"gameId": {
"type": "string",
"format": "uuid",
"nullable": true
},
"universeId": {
"type": "integer",
"format": "int64",
"nullable": true
},
"userId": {
"type": "integer",
"format": "int64"
}
},
"additionalProperties": false
},
"UserPresenceRequest": {
"type": "object",
"properties": {
"userIds": {
"type": "array",
"items": {
"type": "integer",
"format": "int64"
},
"nullable": true
}
},
"additionalProperties": false
},
"UserPresencesResponse": {
"type": "object",
"properties": {
"userPresences": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserPresence"
},
"nullable": true
}
},
"additionalProperties": false
},
"UserRestriction": {
"type": "object",
"properties": {
"path": {
"example": "universes/123/user-restrictions/123",
"type": "string",
"description": "The resource path of the user restriction.\n\nFormats:\n* `universes/{universe_id}/user-restrictions/{user_restriction_id}`\n* `universes/{universe_id}/places/{place_id}/user-restrictions/{user_restriction_id}`"
},
"updateTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The timestamp when the user restriction was last updated.",
"format": "date-time"
},
"user": {
"readOnly": true,
"example": "users/156",
"type": "string",
"description": "The affected user."
},
"gameJoinRestriction": {
"$ref": "#/components/schemas/UserRestriction_GameJoinRestriction",
"description": "The user is banned from the parent universe or place."
}
},
"description": "Represents a restriction on a user.",
"x-aep-resource": {
"patterns": [
"universes/{universe_id}/user-restrictions/{user_restriction_id}",
"universes/{universe_id}/places/{place_id}/user-restrictions/{user_restriction_id}"
],
"plural": "user-restrictions",
"singular": "user-restriction"
},
"x-resource": true
},
"UserRestrictionLog": {
"type": "object",
"properties": {
"user": {
"example": "users/156",
"type": "string",
"description": "The user to which this restriction update is applied."
},
"place": {
"example": "places/456",
"type": "string",
"description": "The place in which a user restriction was explicitly updated.\nThis field is empty if the log captures a state change applied on the\nuniverse level."
},
"moderator": {
"$ref": "#/components/schemas/UserRestrictionLog_Moderator",
"description": "The moderator who issued the state change."
},
"createTime": {
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "When the change happened.",
"format": "date-time"
},
"active": {
"example": true,
"type": "boolean",
"description": "Whether the restriction was active after the action\nrepresented by this log."
},
"startTime": {
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The start time of the restriction.",
"format": "date-time"
},
"duration": {
"example": "3s",
"type": "string",
"description": "The duration of the restriction.\n\nIf not specified, the restriction is permanent.",
"format": "duration"
},
"privateReason": {
"example": "some private reason",
"type": "string",
"description": "The reason the restriction was created.\n\nThis field *is not* displayed to the user."
},
"displayReason": {
"example": "some display reason",
"type": "string",
"description": "The user-facing reason the restriction was created.\n\nThis field *is* displayed to the user."
},
"restrictionType": {
"$ref": "#/components/schemas/UserRestrictionLog_RestrictionType",
"description": "The type of restriction for this log."
},
"excludeAltAccounts": {
"example": true,
"type": "boolean",
"description": "When true, the restriction will not be be propagated to alt accounts.\n\nDefaults to false."
}
},
"description": "An entity capturing a state change on a type of restriction."
},
"UserRestrictionLog_Moderator": {
"type": "object",
"properties": {
"robloxUser": {
"example": "users/156",
"type": "string",
"description": "A moderator identified by the User resource."
},
"gameServerScript": {
"$ref": "#/components/schemas/UserRestrictionLog_Moderator_GameServerScript",
"description": "A moderator identified as a Lua script on game server."
}
},
"description": "An entity capturing the author of a state change.",
"x-oneOf": {
"kind": ["robloxUser", "gameServerScript"]
}
},
"UserRestrictionLog_Moderator_GameServerScript": {
"type": "object",
"properties": {},
"description": "Represents a user-written Lua script executed on game server."
},
"UserRestrictionLog_RestrictionType": {
"type": "object",
"properties": {
"gameJoinRestriction": {
"$ref": "#/components/schemas/UserRestrictionLog_RestrictionType_GameJoinRestriction",
"description": "Represents game join restriction as one of the restriction type."
}
},
"description": "The type of restriction.",
"x-oneOf": {
"kind": ["gameJoinRestriction"]
}
},
"UserRestrictionLog_RestrictionType_GameJoinRestriction": {
"type": "object",
"properties": {},
"description": "Represents game join restriction."
},
"UserRestriction_GameJoinRestriction": {
"type": "object",
"properties": {
"active": {
"example": true,
"type": "boolean",
"description": "By default, this is false since a user's access to an experience\nis not restricted to begin with.\n\nIf this is set to true at the experience level, this becomes true\nautomatically at the place level for all places in the experience."
},
"startTime": {
"readOnly": true,
"example": "2023-07-05T12:34:56Z",
"type": "string",
"description": "The start time of the restriction.",
"format": "date-time"
},
"duration": {
"example": "3s",
"type": "string",
"description": "The duration of the restriction.\n\nIf not specified, the restriction is permanent. If specified, the range\nmust be from 1 second to 315,576,000,000 seconds, inclusive. Durations\nwith sub-second precision are not permitted.",
"format": "duration"
},
"privateReason": {
"example": "some private reason",
"type": "string",
"description": "The reason the restriction was created.\n\nThis field *is not* displayed to the user. 1,000 character maximum."
},
"displayReason": {
"example": "some display reason",
"type": "string",
"description": "The user-facing reason the restriction was created.\n\nThis field *is* displayed to the user. 400 character maximum."
},
"excludeAltAccounts": {
"example": true,
"type": "boolean",
"description": "When true, the restriction will not be be propagated to alt accounts.\n\nDefaults to false."
},
"inherited": {
"readOnly": true,
"example": true,
"type": "boolean",
"description": "This is true when the restriction doesn't directly apply to the parent\nresource, but to some other ancestor resource.\n\nFor example, if a user restriction exists on universes/123, then any\nplaces within that universe from which the user was not explicitly\nrestricted will have an inherited restriction and this field will be\n`true`."
}
},
"description": "A restriction means the affected user will not be able to join the parent\nuniverse or place, and will be kicked if currently joined."
},
"VariantMeta": {
"type": "object",
"properties": {
"variantId": {
"type": "string",
"description": "Unique identifier for the variant. Only assigned once the experiment starts running;\r\nempty or null for draft variants.",
"nullable": true
},
"label": {
"type": "string",
"description": "Human-readable label for the variant, e.g. `Control`, `Treatment A`. Non-empty,\r\nat most 50 characters; must start with a letter and contain only letters, digits, spaces,\r\nunderscores, or hyphens.",
"nullable": true
},
"isBaseline": {
"type": "boolean",
"description": "True iff this variant is the baseline. Exactly one variant must be the baseline."
},
"weight": {
"type": "integer",
"description": "Relative traffic weight for this variant. The platform normalizes across all variants,\r\nso weights do not have to sum to 100.",
"format": "int32"
}
},
"additionalProperties": false,
"description": "Metadata shared by every experiment variant."
},
"VerifiedBadgeUserResponse": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"name": {
"type": "string",
"nullable": true
},
"displayName": {
"type": "string",
"nullable": true
},
"hasVerifiedBadge": {
"type": "boolean"
}
},
"additionalProperties": false
},
"VirtualEventsApi.ProblemDetails": {
"type": "object",
"properties": {
"type": {
"type": "string",
"nullable": true
},
"title": {
"type": "string",
"nullable": true
},
"status": {
"type": "integer",
"format": "int32",
"nullable": true
},
"detail": {
"type": "string",
"nullable": true
},
"instance": {
"type": "string",
"nullable": true
}
},
"additionalProperties": {}
},
"VotingModel": {
"type": "object",
"properties": {
"showVotes": {
"type": "boolean",
"description": "Gets or sets show votes."
},
"upVotes": {
"type": "integer",
"description": "Gets or sets success.",
"format": "int64"
},
"downVotes": {
"type": "integer",
"description": "Gets or sets down votes.",
"format": "int64"
},
"canVote": {
"type": "boolean",
"description": "Gets or sets can vote."
},
"userVote": {
"type": "boolean",
"description": "Gets or sets user vote.",
"nullable": true
},
"hasVoted": {
"type": "boolean",
"description": "Gets UserVote.",
"readOnly": true
},
"voteCount": {
"type": "integer",
"description": "The total number of votes",
"format": "int64"
},
"upVotePercent": {
"type": "integer",
"description": "The percentage of total votes that have been UpVotes",
"format": "int32"
}
},
"additionalProperties": false,
"description": "model for voting.",
"nullable": true
},
"internal_public_v1.AdFormat": {
"type": "object",
"properties": {
"format": {
"description": "The ad format name.",
"type": "string"
},
"height": {
"description": "The format height in pixels.",
"type": "integer"
},
"width": {
"description": "The format width in pixels.",
"type": "integer"
}
}
},
"internal_public_v1.AdvertisableUniverse": {
"type": "object",
"properties": {
"universeId": {
"description": "The identifier of an experience the caller can advertise, as a decimal string.\nResolve its name via the Open Cloud Universe API.",
"type": "string"
}
}
},
"internal_public_v1.BatchGetStatusRequest": {
"type": "object",
"required": ["campaignIds"],
"properties": {
"campaignIds": {
"description": "The campaign IDs to look up. Required. At most 100 per request.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"internal_public_v1.BatchGetStatusResponse": {
"type": "object",
"properties": {
"failures": {
"description": "The IDs that could not be resolved. Omitted when every ID resolved.",
"type": "array",
"items": {
"$ref": "#/components/schemas/internal_public_v1.CampaignIDFailure"
}
},
"statuses": {
"description": "One entry per successfully resolved campaign.",
"type": "array",
"items": {
"$ref": "#/components/schemas/internal_public_v1.CampaignStatus"
}
}
}
},
"internal_public_v1.Bid": {
"type": "object",
"properties": {
"strategy": {
"description": "The bidding strategy. v1 campaigns are always `AUTOMATED`.",
"type": "string",
"enum": ["AUTOMATED"]
}
}
},
"internal_public_v1.BillingAccount": {
"type": "object",
"properties": {
"createTime": {
"description": "The time the account was created, as an RFC 3339 UTC timestamp.",
"type": "string"
},
"displayName": {
"description": "The human-readable name of the account.",
"type": "string"
},
"id": {
"description": "The unique identifier of the billing account. Use it as the {id} path parameter.",
"type": "string"
},
"organizationId": {
"description": "The identifier of the organization that owns the account.",
"type": "string"
},
"status": {
"description": "The current state of the account. Can be `ACTIVE`, `DISABLED`, or `ARCHIVED`.",
"type": "string",
"enum": ["ACTIVE", "DISABLED", "ARCHIVED"]
},
"timeZone": {
"description": "The IANA time zone the account's reporting dates and budget schedules are\ninterpreted in. Example: `America/Los_Angeles`.",
"type": "string"
},
"type": {
"description": "The account category. External advertisers are always SELF_SERVICE; MANAGED and\nINTERNAL are Roblox-operated accounts. Can be `SELF_SERVICE`, `MANAGED`, or `INTERNAL`.",
"type": "string",
"enum": ["SELF_SERVICE", "MANAGED", "INTERNAL"]
},
"updateTime": {
"description": "The time the account was last updated, as an RFC 3339 UTC timestamp.",
"type": "string"
}
}
},
"internal_public_v1.Budget": {
"type": "object",
"properties": {
"amountMicros": {
"description": "The budget amount in micro-USD, as a decimal string (for example, `5000000` =\n$5.00). Money is sent and returned as a string so large values keep full\nprecision in every client. On a request it must be a numeric string of micro-USD.",
"type": "string"
},
"scheduledAmountMicros": {
"description": "The queued lower budget for a pending decrease, in micro-USD as a decimal string\n(same format as amountMicros). A budget increase takes effect immediately, but a\ndecrease on a running campaign is applied at the next midnight in the account's\ntime zone; until then the campaign keeps serving on amountMicros (the current,\nhigher budget). Omitted when no decrease is pending.",
"type": "string"
},
"scheduledEffectiveTime": {
"description": "The time a pending budget decrease takes effect, as an RFC 3339 UTC timestamp.\nOmitted when no decrease is pending.",
"type": "string"
},
"type": {
"description": "The budget cadence. Fixed when the campaign is created. Can be `DAILY` or `LIFETIME`.",
"type": "string",
"enum": ["DAILY", "LIFETIME"]
}
}
},
"internal_public_v1.Campaign": {
"type": "object",
"properties": {
"bid": {
"$ref": "#/components/schemas/internal_public_v1.Bid"
},
"billingAccountId": {
"description": "The billing account that owns and funds the campaign.",
"type": "string"
},
"budget": {
"$ref": "#/components/schemas/internal_public_v1.Budget"
},
"createTime": {
"description": "The time the campaign was created, as an RFC 3339 UTC timestamp.",
"type": "string"
},
"creativeAssetIds": {
"description": "The Open Cloud image asset IDs the campaign advertises, as decimal strings.",
"type": "array",
"items": {
"type": "string"
}
},
"deliveryStatus": {
"description": "The current serving state, derived by the system (read-only). Can be `SERVING`,\n`IN_REVIEW`, `NOT_SERVING`, or `REJECTED`.",
"type": "string",
"enum": ["SERVING", "IN_REVIEW", "NOT_SERVING", "REJECTED"]
},
"deliveryStatusReasons": {
"description": "The reasons behind the current deliveryStatus, such as why a campaign is not\nserving or was rejected, or `LEARNING` while a serving campaign ramps up. Omitted\nwhen there are none.",
"type": "array",
"items": {
"type": "string",
"enum": [
"SCHEDULED",
"AUTO_PAUSED",
"PAUSED",
"INACTIVE",
"COMPLETED",
"EXPIRED",
"CANCELLED",
"MODERATED",
"CLICK_BAIT",
"GAME_FILTERED",
"PRIVATE",
"PLACE_JOIN_RESTRICTED",
"LEARNING"
]
}
},
"id": {
"description": "The server-assigned unique identifier of the campaign.",
"type": "string"
},
"name": {
"description": "The display name of the campaign.",
"type": "string"
},
"objective": {
"description": "The advertising goal of the campaign. `PLAYS` for campaigns created via this API; campaigns from other surfaces may report `AWARENESS`, `REACH`, `ENGAGED_PLAYS`, `VIDEO_VIEWS`, or `ROBUX_SPEND`.",
"type": "string",
"enum": [
"PLAYS",
"AWARENESS",
"REACH",
"ENGAGED_PLAYS",
"VIDEO_VIEWS",
"ROBUX_SPEND"
]
},
"paymentType": {
"description": "How the campaign is paid for. Fixed when the campaign is created. Can be\n`CREDIT_CARD`, `ADS_CREDIT`, or `INVOICE`.",
"type": "string",
"enum": ["CREDIT_CARD", "ADS_CREDIT", "INVOICE"]
},
"schedule": {
"$ref": "#/components/schemas/internal_public_v1.Schedule"
},
"status": {
"description": "The lifecycle state you control through update requests. Can be `ACTIVE`,\n`PAUSED`, or `CANCELLED`. `CANCELLED` is permanent.",
"type": "string",
"enum": ["ACTIVE", "PAUSED", "CANCELLED"]
},
"targetUniverseId": {
"description": "The identifier of the experience the campaign advertises.",
"type": "string"
},
"targeting": {
"$ref": "#/components/schemas/internal_public_v1.Targeting"
},
"updateTime": {
"description": "The time the campaign was last updated, as an RFC 3339 UTC timestamp.",
"type": "string"
}
}
},
"internal_public_v1.CampaignIDFailure": {
"type": "object",
"properties": {
"id": {
"description": "The campaign ID that could not be resolved.",
"type": "string"
},
"reason": {
"description": "Why the ID could not be resolved. `NOT_FOUND` means the campaign does not exist\nor is not owned by the caller.",
"type": "string",
"enum": ["NOT_FOUND"]
}
}
},
"internal_public_v1.CampaignOptionsResponse": {
"type": "object",
"properties": {
"adFormats": {
"description": "The supported creative formats and their pixel dimensions.",
"type": "array",
"items": {
"$ref": "#/components/schemas/internal_public_v1.AdFormat"
}
},
"eligibility": {
"description": "The eligibility result for the requested experience. Present only when\nuniverseId was supplied in the request.",
"allOf": [
{
"$ref": "#/components/schemas/internal_public_v1.UniverseEligibility"
}
]
},
"objectives": {
"description": "The campaign objectives you can create. Values can be `PLAYS` or the\ndeprecated `ENGAGEMENT` (both create the same campaign).",
"type": "array",
"items": {
"type": "string",
"enum": ["PLAYS", "ENGAGEMENT"]
}
},
"paymentTypes": {
"description": "The payment types available for the caller's account. Values can be\n`CREDIT_CARD`, `ADS_CREDIT`, or `INVOICE`.",
"type": "array",
"items": {
"type": "string",
"enum": ["CREDIT_CARD", "ADS_CREDIT", "INVOICE"]
}
},
"targetingDimensions": {
"$ref": "#/components/schemas/internal_public_v1.TargetingDimensions"
}
}
},
"internal_public_v1.CampaignStatus": {
"type": "object",
"properties": {
"deliveryStatus": {
"description": "The current serving state. Can be `SERVING`, `IN_REVIEW`, `NOT_SERVING`, or `REJECTED`.",
"type": "string",
"enum": ["SERVING", "IN_REVIEW", "NOT_SERVING", "REJECTED"]
},
"deliveryStatusReasons": {
"description": "The reasons behind the current deliveryStatus. Omitted when there are none.",
"type": "array",
"items": {
"type": "string",
"enum": [
"SCHEDULED",
"AUTO_PAUSED",
"PAUSED",
"INACTIVE",
"COMPLETED",
"EXPIRED",
"CANCELLED",
"MODERATED",
"CLICK_BAIT",
"GAME_FILTERED",
"PRIVATE",
"PLACE_JOIN_RESTRICTED",
"LEARNING"
]
}
},
"id": {
"description": "The campaign identifier.",
"type": "string"
},
"status": {
"description": "The lifecycle state. Can be `ACTIVE`, `PAUSED`, or `CANCELLED`.",
"type": "string",
"enum": ["ACTIVE", "PAUSED", "CANCELLED"]
}
}
},
"internal_public_v1.CreateCampaignRequest": {
"type": "object",
"required": [
"budget",
"creativeAssetIds",
"name",
"objective",
"paymentType",
"schedule",
"targetUniverseId"
],
"properties": {
"bid": {
"description": "Optional bidding strategy. Only `AUTOMATED` is accepted in v1; may be omitted.",
"allOf": [
{
"$ref": "#/components/schemas/internal_public_v1.Bid"
}
]
},
"budget": {
"$ref": "#/components/schemas/internal_public_v1.Budget"
},
"creativeAssetIds": {
"description": "The Open Cloud image asset IDs to advertise, as decimal strings. Required. The\nassets must already exist and be usable by the caller.",
"type": "array",
"items": {
"type": "string"
}
},
"name": {
"description": "The display name of the campaign. Required.",
"type": "string"
},
"objective": {
"description": "The advertising goal. Required. Can be `PLAYS` (the deprecated `ENGAGEMENT`\nis also accepted during the transition; both create the same campaign).",
"type": "string",
"enum": ["PLAYS", "ENGAGEMENT"]
},
"paymentType": {
"description": "How the campaign is paid for. Required. Can be `CREDIT_CARD`, `ADS_CREDIT`, or\n`INVOICE`, subject to what the billing account supports.",
"type": "string",
"enum": ["CREDIT_CARD", "ADS_CREDIT", "INVOICE"]
},
"schedule": {
"$ref": "#/components/schemas/internal_public_v1.Schedule"
},
"targetUniverseId": {
"description": "The identifier of the experience to advertise. Required.",
"type": "string"
},
"targeting": {
"description": "Optional audience targeting. Omit it, or send an empty object, to reach all audiences.",
"allOf": [
{
"$ref": "#/components/schemas/internal_public_v1.Targeting"
}
]
}
}
},
"internal_public_v1.Creative": {
"type": "object",
"properties": {
"assetId": {
"description": "The Open Cloud image asset ID backing this creative, as a decimal string.",
"type": "string"
},
"assetName": {
"description": "The display name of the underlying asset.",
"type": "string"
},
"assetType": {
"description": "The media type of the asset. Only `IMAGE` is supported in v1.",
"type": "string",
"enum": ["IMAGE"]
},
"createTime": {
"description": "The time the creative was added to the library, as an RFC 3339 UTC timestamp.",
"type": "string"
},
"height": {
"description": "The height of the asset in pixels. Omitted when unknown.",
"type": "integer"
},
"id": {
"description": "The identifier of the creative library entry. This is distinct from assetId.",
"type": "string"
},
"isArchived": {
"description": "Whether the creative has been archived (soft-deleted).",
"type": "boolean"
},
"moderationStatus": {
"description": "The content-review outcome for the asset. Can be `PENDING_REVIEW`, `APPROVED`, or `REJECTED`.",
"type": "string",
"enum": ["PENDING_REVIEW", "APPROVED", "REJECTED"]
},
"source": {
"description": "How the asset was produced. Can be `UPLOAD` or `IN_HOUSE_GEN_AI`.",
"type": "string",
"enum": ["UPLOAD", "IN_HOUSE_GEN_AI"]
},
"universeId": {
"description": "The identifier of the experience the creative is associated with, if any, as a\ndecimal string. Omitted when not associated with an experience.",
"type": "string"
},
"updateTime": {
"description": "The time the creative was last updated, as an RFC 3339 UTC timestamp.",
"type": "string"
},
"width": {
"description": "The width of the asset in pixels. Omitted when unknown.",
"type": "integer"
}
}
},
"internal_public_v1.ErrorEnvelope": {
"type": "object",
"properties": {
"detail": {
"description": "A human-readable explanation of this specific failure.",
"type": "string"
},
"errors": {
"description": "The individual errors. There is at least one entry; each has a code and message.",
"type": "array",
"items": {
"$ref": "#/components/schemas/internal_public_v1.PublicError"
}
},
"status": {
"description": "The HTTP status code, repeated here for convenience.",
"type": "integer"
},
"title": {
"description": "A short summary of the error class.",
"type": "string"
}
}
},
"internal_public_v1.ListAdvertisableUniversesResponse": {
"type": "object",
"properties": {
"advertisableUniverses": {
"description": "The complete set of experiences the caller can advertise. This endpoint is not\npaginated; the full list is returned in one response.",
"type": "array",
"items": {
"$ref": "#/components/schemas/internal_public_v1.AdvertisableUniverse"
}
}
}
},
"internal_public_v1.ListBillingAccountsResponse": {
"type": "object",
"properties": {
"billingAccounts": {
"description": "The page of billing accounts.",
"type": "array",
"items": {
"$ref": "#/components/schemas/internal_public_v1.BillingAccount"
}
},
"nextPageToken": {
"description": "The cursor for the next page. Pass it as pageToken to fetch the next page.\nAbsent on the last page.",
"type": "string"
}
}
},
"internal_public_v1.ListCampaignsResponse": {
"type": "object",
"properties": {
"campaigns": {
"description": "The page of campaigns.",
"type": "array",
"items": {
"$ref": "#/components/schemas/internal_public_v1.Campaign"
}
},
"nextPageToken": {
"description": "The cursor for the next page. Pass it as pageToken to fetch the next page.\nAbsent on the last page.",
"type": "string"
}
}
},
"internal_public_v1.ListCreativesResponse": {
"type": "object",
"properties": {
"creatives": {
"description": "The page of creatives.",
"type": "array",
"items": {
"$ref": "#/components/schemas/internal_public_v1.Creative"
}
},
"nextPageToken": {
"description": "The cursor for the next page. Pass it as pageToken to fetch the next page.\nAbsent on the last page.",
"type": "string"
}
}
},
"internal_public_v1.PublicError": {
"type": "object",
"properties": {
"code": {
"description": "A stable, machine-readable error code (for example, `INVALID_ARGUMENT`,\n`NOT_FOUND`, `PERMISSION_DENIED`, or `RATE_LIMITED`).",
"type": "string"
},
"message": {
"description": "A human-readable description of the error.",
"type": "string"
}
}
},
"internal_public_v1.Schedule": {
"type": "object",
"properties": {
"durationInDays": {
"description": "How long the campaign runs from startTime, in days. Must not exceed 3650 (about\n10 years).",
"type": "integer"
},
"endTime": {
"description": "Not accepted in v1 and never returned; supplying it returns 400. Use\ndurationInDays to set when the campaign ends. Reserved for a future objective.",
"type": "string"
},
"startTime": {
"description": "The time the campaign starts serving, as an RFC 3339 UTC timestamp. On a create\nrequest it must not be in the past.",
"type": "string"
}
}
},
"internal_public_v1.Targeting": {
"type": "object",
"properties": {
"ageGroups": {
"description": "The age brackets to deliver to. Empty means all ages. Values can be `AGE_13_17`,\n`AGE_18_24`, or `AGE_25_PLUS`.",
"type": "array",
"items": {
"type": "string",
"enum": ["AGE_13_17", "AGE_18_24", "AGE_25_PLUS"]
}
},
"countries": {
"description": "The ISO 3166-1 alpha-2 country codes to deliver to (for example, `US`). Empty\nmeans all countries.",
"type": "array",
"items": {
"type": "string"
}
},
"devices": {
"description": "The device types to deliver to. Empty means all devices. Values can be `PHONE`,\n`TABLET`, `DESKTOP`, or `CONSOLE`.",
"type": "array",
"items": {
"type": "string",
"enum": ["PHONE", "TABLET", "DESKTOP", "CONSOLE"]
}
}
}
},
"internal_public_v1.TargetingDimensions": {
"type": "object",
"properties": {
"ageGroups": {
"description": "The selectable age brackets. Values can be `AGE_13_17`, `AGE_18_24`, or `AGE_25_PLUS`.",
"type": "array",
"items": {
"type": "string",
"enum": ["AGE_13_17", "AGE_18_24", "AGE_25_PLUS"]
}
},
"countries": {
"description": "The selectable ISO 3166-1 alpha-2 country codes (for example, `US`).",
"type": "array",
"items": {
"type": "string"
}
},
"devices": {
"description": "The selectable device types. Values can be `PHONE`, `TABLET`, `DESKTOP`, or `CONSOLE`.",
"type": "array",
"items": {
"type": "string",
"enum": ["PHONE", "TABLET", "DESKTOP", "CONSOLE"]
}
}
}
},
"internal_public_v1.UniverseEligibility": {
"type": "object",
"properties": {
"eligible": {
"description": "Whether the experience can currently be advertised.",
"type": "boolean"
},
"reasons": {
"description": "The reasons the experience is not eligible. Omitted when eligible. Values can be\n`NO_PERMISSION` or `BLOCKED`.",
"type": "array",
"items": {
"type": "string",
"enum": ["NO_PERMISSION", "BLOCKED"]
}
},
"universeId": {
"description": "The identifier of the experience that was checked.",
"type": "string"
}
}
},
"internal_public_v1.UpdateBudget": {
"type": "object",
"properties": {
"amountMicros": {
"description": "The new budget amount in micro-USD, as a decimal string (for example,\n`5000000` = $5.00). Money is sent as a string so large values keep full\nprecision in every client. Must be a numeric string of micro-USD.",
"type": "string"
}
}
},
"internal_public_v1.UpdateCampaignRequest": {
"type": "object",
"properties": {
"bid": {
"description": "Immutable in v1; including it returns 400.",
"allOf": [
{
"$ref": "#/components/schemas/internal_public_v1.Bid"
}
]
},
"budget": {
"description": "A budget change. Only the amount is mutable; the budget type is fixed at\ncreation, so it is not part of this object. Sending `type` returns 400.",
"allOf": [
{
"$ref": "#/components/schemas/internal_public_v1.UpdateBudget"
}
]
},
"creativeAssetIds": {
"description": "Immutable in v1; including it returns 400.",
"type": "array",
"items": {
"type": "string"
}
},
"name": {
"description": "A new display name for the campaign.",
"type": "string"
},
"schedule": {
"description": "A schedule change. Allowed only before the campaign starts.",
"allOf": [
{
"$ref": "#/components/schemas/internal_public_v1.Schedule"
}
]
},
"status": {
"description": "A lifecycle transition: `ACTIVE` to run or resume, `PAUSED` to pause, or\n`CANCELLED` to cancel permanently.",
"type": "string",
"enum": ["ACTIVE", "PAUSED", "CANCELLED"]
},
"targeting": {
"description": "Immutable in v1; including it returns 400.",
"allOf": [
{
"$ref": "#/components/schemas/internal_public_v1.Targeting"
}
]
}
}
},
"roblox.engine.Folder": {
"type": "object",
"properties": {},
"description": "A simple container used to hold and organize Roblox instances."
},
"roblox.engine.Instance": {
"type": "object",
"properties": {
"Id": {
"type": "string",
"description": "The unique identifier for an instance. \nFormat: lower-case hexadecimal characters\nExample: 44b188da-ce63-2b47-02e9-c68d004b5664"
},
"Parent": {
"type": "string",
"description": "The parent of the Instance.\nFormat: lower-case hexadecimal characters\nExample: 44b188da-ce63-2b47-02e9-c68d004b5664"
},
"Name": {
"type": "string",
"description": "A non-unique identifier of the Instance."
},
"Details": {
"$ref": "#/components/schemas/roblox.engine.InstanceDetails",
"description": "Properties specific to the type of the instance."
}
},
"description": "Instance is the base class for all classes in the Roblox class hierarchy.",
"x-oneOf": {
"Details": ["Details"],
"Name": ["Name"]
}
},
"roblox.engine.InstanceDetails": {
"type": "object",
"properties": {
"Folder": {
"$ref": "#/components/schemas/roblox.engine.Folder",
"description": "A simple container used to hold and organize Roblox instances."
},
"LocalScript": {
"$ref": "#/components/schemas/roblox.engine.LocalScript",
"description": "A LocalScript is a Lua code container that runs its contents on the client (player's device) instead of the server."
},
"ModuleScript": {
"$ref": "#/components/schemas/roblox.engine.ModuleScript",
"description": "A ModuleScript is a type of Lua source container that runs once and must return exactly one value."
},
"Script": {
"$ref": "#/components/schemas/roblox.engine.Script",
"description": "A Script is a Lua code container that can access server-side objects, properties, and events, such as to award badges to players using BadgeService, while LocalScripts on the client cannot."
}
},
"description": "Contains instance type-specific details about a data model instance.",
"x-oneOf": {
"kind": ["Folder", "LocalScript", "ModuleScript", "Script"]
}
},
"roblox.engine.LocalScript": {
"type": "object",
"properties": {
"Enabled": {
"example": true,
"type": "boolean",
"description": "Determines whether a BaseScript will run or not."
},
"RunContext": {
"example": "Legacy",
"enum": ["Legacy", "Server", "Client", "Plugin"],
"type": "string",
"description": "Determines the context under which the script will run.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | Legacy | Runs in legacy script containers dependent on the type of script used, such as LocalScript or Script. |\n | Server | Runs on the server. |\n | Client | Runs on the client. |\n | Plugin | Runs as a descendant of Plugin instances. |",
"format": "enum"
},
"Source": {
"type": "string",
"description": "The code to be executed."
}
},
"description": "A LocalScript is a Lua code container that runs its contents on the client (player's device) instead of the server.",
"x-oneOf": {
"Enabled": ["Enabled"],
"RunContext": ["RunContext"],
"Source": ["Source"]
}
},
"roblox.engine.ModuleScript": {
"type": "object",
"properties": {
"Source": {
"type": "string",
"description": "The code to be executed."
}
},
"description": "A ModuleScript is a type of Lua source container that runs once and must return exactly one value.",
"x-oneOf": {
"Source": ["Source"]
}
},
"roblox.engine.Script": {
"type": "object",
"properties": {
"Enabled": {
"example": true,
"type": "boolean",
"description": "Determines whether the BaseScript will run or not."
},
"RunContext": {
"example": "Legacy",
"enum": ["Legacy", "Server", "Client", "Plugin"],
"type": "string",
"description": "Determines the context in which the script will run.\n\nPossible values:\n\n | Value | Description |\n | --- | --- |\n | Legacy | Runs in legacy script containers dependent on the type of script used, such as LocalScript or Script. |\n | Server | Runs on the server. |\n | Client | Runs on the client. |\n | Plugin | Runs as a descendant of Plugin instances. |",
"format": "enum"
},
"Source": {
"type": "string",
"description": "The code to be executed."
}
},
"description": "A Script is a Lua code container that can access server-side objects, properties, and events, such as to award badges to players using BadgeService, while LocalScripts on the client cannot.",
"x-oneOf": {
"Enabled": ["Enabled"],
"RunContext": ["RunContext"],
"Source": ["Source"]
}
}
},
"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.",
"name": "x-api-key",
"in": "header"
},
"roblox-legacy-cookie": {
"type": "apiKey",
"description": "A browser cookie that represents the identity of a Roblox user. DO NOT SHARE THIS. Sharing this will allow someone to log in as you and to steal your Robux and items. We do not recommend using cookies to call endpoints. When possible, use API keys with the x-api-key header or OAuth 2.0 instead for authentication.",
"in": "cookie",
"name": ".ROBLOSECURITY"
},
"roblox-oauth2": {
"type": "oauth2",
"description": "Build or authorize apps to access Roblox resources. See https://create.roblox.com/docs/cloud/auth/oauth2-overview for more information.",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://apis.roblox.com/oauth/v1/authorize",
"tokenUrl": "https://apis.roblox.com/oauth/v1/token",
"refreshUrl": "https://apis.roblox.com/oauth/v1/token",
"scopes": {}
}
}
}
}
},
"tags": [
{
"name": "Accounts",
"description": "Access and manage Roblox account information.\n",
"x-roblox-tag-info": {
"path": "accounts",
"content": "HTTP APIs for working with accounts on Roblox Cloud.",
"ordering": [
"accountinformation_get_v1_birthdate",
"accountinformation_get_v1_description",
"accountinformation_post_v1_description",
"accountinformation_post_v1_email_verify",
"accountinformation_get_v1_gender",
"accountinformation_post_v1_gender",
"accountinformation_get_v1_metadata",
"accountinformation_get_v1_phone",
"accountinformation_post_v1_phone",
"accountinformation_post_v1_phone_delete",
"accountinformation_post_v1_phone_resend",
"accountinformation_post_v1_phone_verify",
"accountinformation_get_v1_promotion_channels",
"accountinformation_post_v1_promotion_channels",
"accountinformation_get_v1_users__userId__promotion_channels",
"accountinformation_get_v1_users__userId__roblox_badges",
"users_get_v1_birthdate",
"users_post_v1_birthdate",
"users_get_v1_description",
"users_post_v1_description",
"users_get_v1_gender",
"users_post_v1_gender",
"users_get_v1_users_authenticated",
"users_get_v1_users_authenticated_age_bracket",
"users_get_v1_users_authenticated_country_code",
"users_get_v1_users_authenticated_roles",
"auth_delete_v1_account_pin",
"auth_get_v1_account_pin",
"auth_patch_v1_account_pin",
"auth_post_v1_account_pin",
"auth_post_v1_account_pin_lock",
"auth_post_v1_account_pin_unlock",
"auth_get_v1_auth_metadata",
"auth_get_v1_client_assertion",
"auth_get_v1_external__identityProviderId__sso_oauth_callback",
"auth_post_v1_external__identityProviderId__sso_oauth_callback",
"auth_get_v1_external__identityProviderId__sso_oauth_init",
"auth_post_v1_external__identityProviderId__sso_native_nonce",
"auth_post_v1_external__identityProviderId__sso_saml_assertion_consumer_service",
"auth_post_v1_external_access",
"auth_post_v1_external_login",
"auth_post_v1_external_loginAndLink",
"auth_post_v1_external_signup",
"auth_post_v1_external_unlink",
"auth_post_v1_identity_verification_login",
"auth_post_v1_identity_initialize_login",
"auth_post_v1_login",
"auth_post_v1_login_linked",
"auth_post_v1_logout",
"auth_post_v1_logoutfromallsessionsandreauthenticate",
"auth_get_v1_metadata",
"auth_post_v1_passkey_DeleteCredentialBatch",
"auth_post_v1_passkey_RenameCredential",
"auth_post_v1_passkey_finish_preauth_registration",
"auth_post_v1_passkey_FinishRegistration",
"auth_post_v1_passkey_ListCredentials",
"auth_post_v1_passkey_start_authentication_by_user",
"auth_post_v1_passkey_start_preauth_registration",
"auth_post_v1_passkey_finish_ar_preauth_registration",
"auth_post_v1_passkey_StartAuthentication",
"auth_post_v1_passkey_StartRegistration",
"auth_get_v1_passwords_validate",
"auth_post_v1_passwords_validate",
"auth_get_v1_recovery_metadata",
"auth_get_v1_revert_account",
"auth_post_v1_revert_account",
"auth_post_v2_revert_invalidate_tickets",
"auth_post_v1_revert_invalidate_tickets",
"auth_post_v1_session_refresh",
"auth_post_v1_signup",
"auth_post_v1_signup_linked",
"auth_post_v1_social__provider__disconnect",
"auth_get_v1_social_connected_providers",
"auth_post_v1_user_passwords_change",
"auth_post_v1_username",
"auth_get_v1_usernames",
"auth_post_v1_usernames_recover",
"auth_get_v1_usernames_validate",
"auth_post_v1_usernames_validate",
"auth_get_v1_validators_email",
"auth_get_v1_validators_recommendedUsernameFromDisplayName",
"auth_post_v1_validators_recommendedUsernameFromDisplayName",
"auth_get_v1_validators_username",
"auth_post_v1_validators_username",
"auth_get_v1_xbox_connection",
"auth_post_v1_xbox_disconnect",
"auth_get_v1_xbox_get_login_consecutive_days",
"auth_get_v1_username_change_price",
"auth_get_v1_account_creation_metadata",
"auth_get_v1_passkey_su_eligibility",
"auth_post_v1_xbox_translate",
"auth_get_v2_auth_metadata",
"auth_post_v2_identity_verification_login",
"auth_post_v2_login",
"auth_post_v2_login_linked",
"auth_post_v2_logout",
"auth_post_v2_logoutfromallsessionsandreauthenticate",
"auth_get_v2_metadata",
"auth_get_v2_passwords_current_status",
"auth_get_v2_passwords_reset",
"auth_post_v2_passwords_reset",
"auth_post_v2_passwords_reset_send",
"auth_post_v2_passwords_reset_verify",
"auth_get_v2_passwords_validate",
"auth_post_v2_passwords_validate",
"auth_get_v2_recovery_metadata",
"auth_get_v2_revert_account",
"auth_post_v2_revert_account",
"auth_post_v2_session_refresh",
"auth_post_v2_signup",
"auth_post_v2_signup_linked",
"auth_post_v2_user_passwords_change",
"auth_post_v2_username",
"auth_get_v2_usernames",
"auth_post_v2_usernames_recover",
"auth_get_v2_usernames_validate",
"auth_get_v2_username_change_price",
"auth_post_v2_usernames_validate",
"auth_post_v3_logout",
"auth_post_v3_users__userId__two_step_verification_login",
"games_get_v1_games_multiget_playability_status",
"inventory_get_v1_users__userId__can_view_inventory",
"notifications_get_v2_push_notifications_get_destinations",
"privatemessages_get_v1_announcements",
"privatemessages_get_v1_announcements_metadata",
"privatemessages_get_v1_messages",
"privatemessages_get_v1_messages__messageId_",
"privatemessages_post_v1_messages_archive",
"privatemessages_post_v1_messages_mark_read",
"privatemessages_post_v1_messages_mark_unread",
"privatemessages_post_v1_messages_unarchive",
"privatemessages_get_v1_messages_unread_count",
"twostepverification_get_v1_metadata",
"twostepverification_post_v1_users__userId__challenges_authenticator_verify",
"twostepverification_post_v1_users__userId__challenges_cross_device_retract",
"twostepverification_post_v1_users__userId__challenges_cross_device_retry",
"twostepverification_post_v1_users__userId__challenges_cross_device_verify",
"twostepverification_post_v1_users__userId__challenges_email_send_code",
"twostepverification_post_v1_users__userId__challenges_email_verify",
"twostepverification_post_v1_users__userId__challenges_passkey_verify_finish",
"twostepverification_post_v1_users__userId__challenges_passkey_verify_start",
"twostepverification_post_v1_users__userId__challenges_password_verify",
"twostepverification_post_v1_users__userId__challenges_recovery_codes_verify",
"twostepverification_post_v1_users__userId__challenges_security_key_verify_finish",
"twostepverification_post_v1_users__userId__challenges_security_key_verify_start",
"twostepverification_post_v1_users__userId__challenges_sms_send_code",
"twostepverification_post_v1_users__userId__challenges_sms_verify",
"twostepverification_get_v1_users__userId__configuration",
"twostepverification_post_v1_users__userId__configuration_authenticator_disable",
"twostepverification_post_v1_users__userId__configuration_authenticator_enable",
"twostepverification_post_v1_users__userId__configuration_authenticator_enable_verify",
"twostepverification_post_v1_users__userId__configuration_email_disable",
"twostepverification_post_v1_users__userId__configuration_email_enable",
"twostepverification_post_v1_users__userId__configuration_security_key_disable",
"twostepverification_post_v1_users__userId__configuration_security_key_enable",
"twostepverification_post_v1_users__userId__configuration_security_key_enable_verify",
"twostepverification_post_v1_users__userId__configuration_security_key_list",
"twostepverification_post_v1_users__userId__configuration_sms_disable",
"twostepverification_post_v1_users__userId__configuration_sms_enable",
"twostepverification_get_v1_users__userId__recovery_codes",
"twostepverification_post_v1_users__userId__recovery_codes_clear",
"twostepverification_post_v1_users__userId__recovery_codes_regenerate"
]
}
},
{
"name": "Advertising",
"description": "Create and manage advertising on Roblox. Experience advertising drives engagement to your experiences through the Ads API, and item advertising promotes Marketplace items through sponsored campaigns. See the [Advertising guide](https://create.roblox.com/docs/cloud/guides/advertising) for Open Cloud setup and usage.\n",
"x-roblox-tag-info": {
"path": "advertising",
"content": "HTTP APIs for creating and managing advertising on Roblox Cloud.",
"ordering": [
"get_ads_management_v1_billing_accounts",
"get_ads_management_v1_billing_accounts__id_",
"get_ads_management_v1_advertisable_universes",
"get_ads_management_v1_campaign_options",
"get_ads_management_v1_campaigns",
"post_ads_management_v1_campaigns",
"get_ads_management_v1_campaigns__id_",
"patch_ads_management_v1_campaigns__id_",
"post_ads_management_v1_campaigns_batchGetStatus",
"get_ads_management_v1_creatives",
"adconfiguration_get_v2_sponsored_campaigns",
"adconfiguration_post_v2_sponsored_campaigns_create",
"adconfiguration_get_v2_sponsored_campaigns_eligible_asset_type_ids",
"adconfiguration_post_v2_sponsored_campaigns_eligible_campaign_targets",
"adconfiguration_get_v2_sponsored_campaigns_multi_get_can_user_sponsor",
"adconfiguration_post_v2_sponsored_campaigns_stop",
"adconfiguration_get_v2_sponsored_games",
"adconfiguration_get_v2_sponsored_games_universes",
"adconfiguration_post_v2_sponsored_games_create",
"adconfiguration_post_v2_sponsored_games_stop"
]
}
},
{
"name": "Analytics",
"description": "Query analytics data and manage analytics alerts for your experiences programmatically. See the [Analytics guide](https://create.roblox.com/docs/cloud/guides/analytics) for Open Cloud setup and usage.\n",
"x-roblox-tag-info": {
"path": "analytics",
"content": "HTTP APIs for querying experience analytics and managing analytics alerts on Roblox Cloud",
"ordering": [
"post_analytics_query_api_v1_universes__universe_id__metrics",
"post_analytics_query_api_v1_universes__universe_id__dimension_values",
"get_analytics_query_api_v1_universes__universe_id__operations_metrics__operation_id_",
"get_analytics_query_api_v1_universes__universe_id__operations_dimension_values__operation_id_"
]
}
},
{
"name": "Assets",
"description": "Upload, update, and manage assets programmatically. Supported asset types include Audio, Decals, Images, Models, Meshes, and Videos. For detailed implementation, see the [Assets Usage Guide](/cloud/guides/usage-assets).\n\nCommon use cases include:\n\n- Asset creation: [Create an asset](#Assets_CreateAsset), then [poll the operation endpoint](#Assets_GetOperation) for completion\n- Asset retrieval: [Retrieve asset content](#get_asset_delivery_api_v1_assetId__assetId_) or [a specific version of it](#get_asset_delivery_api_v1_assetId__assetId__version__versionNumber_) for external tools\n- Versioning: [Manage asset versions](#listAssetVersions) with [rollback](#Assets_RollbackAssetVersion) support\n",
"x-roblox-tag-info": {
"path": "assets",
"content": "HTTP APIs for working with assets on Roblox Cloud.",
"ordering": [
"Assets_CreateAsset",
"Assets_GetAsset",
"Assets_UpdateAsset",
"Assets_ArchiveAsset",
"Assets_RestoreAsset",
"listAssetVersions",
"Assets_RollbackAssetVersion",
"Assets_GetAssetVersion",
"Assets_GetOperation",
"Cloud_GenerateSpeechAsset",
"Cloud_ListAssetQuotas",
"get_legacy_localization_tables_v1_localization_table_tables__assetId_",
"localizationtables_get_v1_localization_table_tables__assetId_",
"post_legacy_publish_v1_badges__badgeId__icon",
"publish_post_v1_badges__badgeId__icon",
"Toolbox_SearchCreatorStoreAssetsDeprecated",
"Toolbox_GetAssetDetails",
"patch_asset_permissions_api_v1_assets_permissions",
"assetdelivery_get_v1_asset",
"assetdelivery_get_v1_assetId__assetId_",
"assetdelivery_get_v1_assetId__assetId__version__versionNumber_",
"assetdelivery_post_v1_assets_batch",
"assetdelivery_get_v1_marAssetHash__marAssetHash__marCheckSum__marCheckSum_",
"assetdelivery_get_v2_asset",
"assetdelivery_get_v2_assetId__assetId_",
"assetdelivery_get_v2_assetId__assetId__version__versionNumber_",
"assetdelivery_post_v2_assets_batch",
"assetdelivery_get_v2_marAssetHash__marAssetHash__marCheckSum__marCheckSum_",
"avatar_get_v1_users__userId__currently_wearing",
"catalog_get_v1_assets__assetId__bundles",
"catalog_get_v1_bundles__bundleId__details",
"catalog_get_v1_bundles_details",
"catalog_post_v1_catalog_items_details",
"catalog_get_v1_favorites_assets__assetId__count",
"catalog_get_v1_favorites_bundles__bundleId__count",
"catalog_get_v1_favorites_users__userId__favorites__assetTypeId__assets",
"catalog_get_v1_users__userId__bundles__bundleType_",
"catalog_get_v2_search_items_details",
"develop_get_v1_plugins",
"develop_patch_v1_plugins__pluginId_",
"develop_get_v1_user_groups_canmanagegamesoritems",
"inventory_get_v1_users__userId__items__itemType___itemTargetId_",
"inventory_get_v2_assets__assetId__owners",
"inventory_get_v2_collectible_items__collectibleItemId__owners",
"inventory_delete_v2_inventory_asset__assetId_",
"inventory_get_v2_users__userId__inventory",
"itemconfiguration_get_v1_preferences_publishing",
"itemconfiguration_post_v1_preferences_publishing",
"itemconfiguration_patch_v1_preferences_publishing",
"itemconfiguration_delete_v1_preferences_publishing",
"thumbnails_get_v1_asset_thumbnail_animated",
"thumbnails_get_v1_assets",
"thumbnails_get_v1_assets_thumbnail_3d"
]
}
},
{
"name": "Avatars",
"description": "Customize user avatars and manage outfits programmatically, including [retrieving a user's avatar configuration](#avatar_get_v4_avatar_users__userId_), body colors, scales, [thumbnail generation](#Cloud_GenerateUserThumbnail), and [thumbnail generation operation retrieval](#Cloud_GetUserThumbnailGenerationOperation).\n",
"x-roblox-tag-info": {
"path": "avatars",
"content": "HTTP APIs for working with avatars on Roblox Cloud.",
"ordering": [
"Cloud_GenerateUserThumbnail",
"Cloud_GetUserThumbnailGenerationOperation",
"avatar_get_v1_avatar",
"avatar_get_v1_avatar_rules",
"avatar_get_v1_avatar_metadata",
"avatar_post_v1_avatar_redraw_thumbnail",
"avatar_post_v1_avatar_set_body_colors",
"avatar_post_v1_avatar_set_player_avatar_type",
"avatar_post_v1_avatar_set_scales",
"avatar_get_v1_game_start_info",
"avatar_post_v1_outfits__userOutfitId__delete",
"avatar_get_v1_outfits__userOutfitId__details",
"avatar_get_v1_users__userId__avatar",
"avatar_get_v1_users__userId__currently_wearing",
"avatar_get_v1_users__userId__outfits",
"avatar_patch_v2_avatar",
"avatar_get_v2_avatar_avatar",
"avatar_post_v2_avatar_set_body_colors",
"avatar_post_v2_avatar_set_wearing_assets",
"avatar_get_v2_avatar_users__userId__avatar",
"avatar_get_v2_avatar_users__userId__outfits",
"avatar_patch_v2_outfits__userOutfitId_",
"avatar_post_v2_outfits_create",
"avatar_patch_v3_outfits__userOutfitId_",
"avatar_get_v3_outfits__userOutfitId__details",
"avatar_post_v3_outfits_create",
"avatar_get_v4_avatar",
"avatar_patch_v4_avatar",
"avatar_get_v4_avatar_users__userId_",
"avatar_post_v4_outfits_create",
"avatar_patch_v4_outfits__outfitId_",
"avatar_get_v4_outfits__outfitId__details",
"catalog_get_v1_assets__assetId__bundles",
"catalog_get_v1_bundles__bundleId__details",
"catalog_get_v1_bundles_details",
"catalog_post_v1_catalog_items_details",
"catalog_get_v1_favorites_assets__assetId__count",
"catalog_get_v1_favorites_bundles__bundleId__count",
"catalog_get_v1_favorites_users__userId__favorites__assetTypeId__assets",
"catalog_get_v1_users__userId__bundles__bundleType_",
"catalog_get_v2_search_items_details",
"thumbnails_get_v1_bundles_thumbnails",
"thumbnails_get_v1_users_avatar",
"thumbnails_get_v1_users_avatar_3d",
"thumbnails_get_v1_users_avatar_bust",
"thumbnails_get_v1_users_avatar_headshot"
]
}
},
{
"name": "Badges",
"description": "Create and manage experience badges to recognize player achievements. [Create](#post_legacy_badges_v1_universes__universeId__badges) and [update](#patch_legacy_badges_v1_badges__badgeId_) badges with custom icons, and [track which badges users have earned](#badges_get_v1_users__userId__badges_awarded_dates) and when they were awarded.\n",
"x-roblox-tag-info": {
"path": "badges",
"content": "HTTP APIs for working with badges on Roblox Cloud.",
"ordering": [
"patch_legacy_badges_v1_badges__badgeId_",
"badges_patch_v1_badges__badgeId_",
"post_legacy_badges_v1_universes__universeId__badges",
"badges_post_v1_universes__universeId__badges",
"patch_legacy_game_internationalization_v1_badges__badgeId__description_language_codes__languageCode_",
"gameinternationalization_patch_v1_badges__badgeId__description_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_badges__badgeId__icons",
"gameinternationalization_get_v1_badges__badgeId__icons",
"delete_legacy_game_internationalization_v1_badges__badgeId__icons_language_codes__languageCode_",
"gameinternationalization_delete_v1_badges__badgeId__icons_language_codes__languageCode_",
"post_legacy_game_internationalization_v1_badges__badgeId__icons_language_codes__languageCode_",
"gameinternationalization_post_v1_badges__badgeId__icons_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_badges__badgeId__name_description",
"gameinternationalization_get_v1_badges__badgeId__name_description",
"delete_legacy_game_internationalization_v1_badges__badgeId__name_description_language_codes__languageCode_",
"gameinternationalization_delete_v1_badges__badgeId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_badges__badgeId__name_description_language_codes__languageCode_",
"gameinternationalization_patch_v1_badges__badgeId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_badges__badgeId__name_language_codes__languageCode_",
"gameinternationalization_patch_v1_badges__badgeId__name_language_codes__languageCode_",
"post_legacy_publish_v1_badges__badgeId__icon",
"publish_post_v1_badges__badgeId__icon",
"accountinformation_get_v1_users__userId__roblox_badges",
"badges_get_v1_badges__badgeId_",
"badges_get_v1_badges_metadata",
"badges_get_v1_universes__universeId__badges",
"badges_get_v1_universes__universeId__free_badges_quota",
"badges_delete_v1_user_badges__badgeId_",
"thumbnails_get_v1_badges_icons"
]
}
},
{
"name": "Bans and blocks",
"description": "Manage user restrictions using the Ban API, which includes real-time alt account detection. [Universe-level bans](#Cloud_UpdateUserRestriction__Using_Universes) affect all places, while [place-level bans](#Cloud_UpdateUserRestriction__Using_Universes_Places) allow granular control. Bans can also be managed via the Creator Hub dashboard.\n\nBan users with customizable duration and reasons, and [review moderation history](#Cloud_ListUserRestrictionLogs) for any banned users.\n",
"x-roblox-tag-info": {
"path": "bans-and-blocks",
"content": "HTTP APIs for working with bans and blocks on Roblox Cloud.",
"ordering": [
"Cloud_ListUserRestrictions__Using_Universes",
"Cloud_GetUserRestriction__Using_Universes_Places",
"Cloud_UpdateUserRestriction__Using_Universes_Places",
"Cloud_ListUserRestrictions",
"Cloud_ListUserRestrictionLogs",
"Cloud_GetUserRestriction__Using_Universes",
"Cloud_UpdateUserRestriction__Using_Universes"
]
}
},
{
"name": "Configs",
"description": "Manage your in-experience config values in real time without restarting servers. See the [Configs guide](https://create.roblox.com/docs/cloud/guides/configs) for Open Cloud setup and usage.\n",
"x-roblox-tag-info": {
"path": "configs",
"content": "HTTP APIs for working with creator configs on Roblox Cloud",
"ordering": [
"CreatorConfigsPublicApi_GetConfigRepositoryFull",
"CreatorConfigsPublicApi_GetConfigRepositoryValues",
"CreatorConfigsPublicApi_GetConfigRepositoryDraft",
"CreatorConfigsPublicApi_UpdateDraft",
"CreatorConfigsPublicApi_DeleteDraft",
"CreatorConfigsPublicApi_OverwriteDraft",
"CreatorConfigsPublicApi_PublishDraft",
"CreatorConfigsPublicApi_ListRevisions",
"CreatorConfigsPublicApi_RestoreRevision"
]
}
},
{
"name": "Connections",
"description": "Manage user connections, such as [viewing pending trusted friend requests](#friends_get_v1_my_trusted_friends_requests), [retrieving the pending trusted friend request count](#friends_get_v1_user_trusted_friend_requests_count), [declining all connection requests](#friends_post_v1_users__requesterUserId__decline_friend_request), or [retrieving a connection list](#friends_get_v1_users__userId__friends).\n",
"x-roblox-tag-info": {
"path": "friends",
"content": "HTTP APIs for working with connections on Roblox Cloud.",
"ordering": [
"friends_get_v1_my_friends_count",
"friends_get_v1_my_friends_requests",
"friends_get_v1_my_new_friend_requests_count",
"friends_get_v1_my_trusted_friends_requests",
"friends_get_v1_user_trusted_friend_requests_count",
"friends_get_v1_user_friend_requests_count",
"friends_get_v1_users__userId__friends_statuses",
"Presence_GetUserPresences"
]
}
},
{
"name": "Creator Store",
"description": "Manage your presence on the [Creator Store](/production/creator-store). [Create](#Cloud_CreateCreatorStoreProduct) and [update](#Cloud_UpdateCreatorStoreProduct) product listings for your assets, and [search the toolbox](#Toolbox_SearchCreatorStoreAssets) for assets using various filters.\n",
"x-roblox-tag-info": {
"path": "creator-store",
"content": "HTTP APIs for working with the Creator Store on Roblox Cloud.",
"ordering": [
"Cloud_CreateCreatorStoreProduct",
"Cloud_GetCreatorStoreProduct",
"Cloud_UpdateCreatorStoreProduct",
"Toolbox_SearchCreatorStoreAssetsDeprecated",
"Toolbox_SearchCreatorStoreAssets",
"Toolbox_GetAssetDetails",
"Saves_GetSaves",
"Saves_CreateSave",
"Saves_DeleteSave",
"Saves_BulkDeleteSaves",
"itemconfiguration_get_v1_preferences_publishing",
"itemconfiguration_post_v1_preferences_publishing",
"itemconfiguration_patch_v1_preferences_publishing",
"itemconfiguration_delete_v1_preferences_publishing"
]
}
},
{
"name": "Data and memory stores",
"description": "Manage persistent player data using standard data stores, ordered data stores, and memory stores. See the [Data Stores Guide](/cloud/guides/data-stores) for implementation examples.\n\nCommon use cases include:\n\n- **Player Data Management**: [Store](#Cloud_CreateDataStoreEntry__Using_Universes) and [retrieve](#Cloud_GetDataStoreEntry__Using_Universes_DataStores) player profiles, inventories, and progress\n- **Leaderboards**: Use [ordered data stores](#Cloud_ListOrderedDataStoreEntries) to create global or per-experience leaderboards sorted by score\n- **Customer Support Tools**: Build external portals to [view](#Cloud_GetDataStoreEntry__Using_Universes_DataStores) and [modify](#Cloud_UpdateDataStoreEntry__Using_Universes_DataStores) player data\n",
"x-roblox-tag-info": {
"path": "storage",
"content": "HTTP APIs for working with data and memory stores on Roblox Cloud.",
"ordering": [
"Cloud_ListDataStores",
"Cloud_DeleteDataStore",
"Cloud_UndeleteDataStore",
"Cloud_SnapshotDataStores",
"Cloud_ListDataStoreEntries__Using_Universes",
"Cloud_CreateDataStoreEntry__Using_Universes",
"Cloud_DeleteDataStoreEntry__Using_Universes_DataStores",
"Cloud_GetDataStoreEntry__Using_Universes_DataStores",
"Cloud_UpdateDataStoreEntry__Using_Universes_DataStores",
"Cloud_IncrementDataStoreEntry__Using_Universes_DataStores",
"Cloud_ListDataStoreEntryRevisions__Using_Universes_DataStores",
"Cloud_ListDataStoreEntries__Using_Universes_DataStores",
"Cloud_CreateDataStoreEntry__Using_Universes_DataStores",
"Cloud_DeleteDataStoreEntry__Using_Universes_DataStores_Scopes",
"Cloud_GetDataStoreEntry__Using_Universes_DataStores_Scopes",
"Cloud_UpdateDataStoreEntry__Using_Universes_DataStores_Scopes",
"Cloud_IncrementDataStoreEntry__Using_Universes_DataStores_Scopes",
"Cloud_ListDataStoreEntryRevisions__Using_Universes_DataStores_Scopes",
"Cloud_FlushMemoryStore",
"Cloud_GetMemoryStoreFlushOperation",
"Cloud_CreateMemoryStoreQueueItem",
"Cloud_DiscardMemoryStoreQueueItems",
"Cloud_ReadMemoryStoreQueueItems",
"Cloud_ListMemoryStoreSortedMapItems",
"Cloud_CreateMemoryStoreSortedMapItem",
"Cloud_DeleteMemoryStoreSortedMapItem",
"Cloud_GetMemoryStoreSortedMapItem",
"Cloud_UpdateMemoryStoreSortedMapItem",
"Cloud_ListOrderedDataStoreEntries",
"Cloud_CreateOrderedDataStoreEntry",
"Cloud_DeleteOrderedDataStoreEntry",
"Cloud_GetOrderedDataStoreEntry",
"Cloud_UpdateOrderedDataStoreEntry",
"Cloud_IncrementOrderedDataStoreEntry",
"Datastores_ListDatastoresAsync",
"Entries_ListKeysAsync",
"Entries_DeleteEntryAsync",
"Entries_GetEntryAsync",
"Entries_SetEntryAsync",
"Entries_IncrementEntryAsync",
"Entries_ListEntryVersionsAsync",
"Entries_GetEntryVersionAsync",
"OrderedDataStores_ListEntries",
"OrderedDataStores_CreateEntry",
"OrderedDataStores_DeleteEntry",
"OrderedDataStores_GetEntry",
"OrderedDataStores_UpdateEntry",
"OrderedDataStores_IncrementEntry"
]
}
},
{
"name": "Developer products",
"description": "Create and manage developer products for repeatable in-experience purchases like in-game currency, consumables, or temporary boosts. [Create](#DeveloperProducts_CreateDeveloperProductV2) and [update](#DeveloperProducts_UpdateDeveloperProductV2) products with custom icons and pricing, and [add localized names and descriptions](#patch_legacy_game_internationalization_v1_developer_products__developerProductId__description_language_codes__languageCode_) for different languages.\n",
"x-roblox-tag-info": {
"path": "developer-products",
"content": "HTTP APIs for working with developer products on Roblox Cloud.",
"ordering": [
"DeveloperProducts_CreateDeveloperProductV2",
"DeveloperProducts_UpdateDeveloperProductV2",
"DeveloperProducts_GetDeveloperProductConfigV2",
"DeveloperProducts_ListDeveloperProductConfigsByUniverseV2",
"patch_legacy_game_internationalization_v1_developer_products__developerProductId__description_language_codes__languageCode_",
"gameinternationalization_patch_v1_developer_products__developerProductId__description_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_developer_products__developerProductId__icons",
"gameinternationalization_get_v1_developer_products__developerProductId__icons",
"delete_legacy_game_internationalization_v1_developer_products__developerProductId__icons_language_codes__languageCode_",
"gameinternationalization_delete_v1_developer_products__developerProductId__icons_language_codes__languageCode_",
"post_legacy_game_internationalization_v1_developer_products__developerProductId__icons_language_codes__languageCode_",
"gameinternationalization_post_v1_developer_products__developerProductId__icons_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_developer_products__developerProductId__name_description",
"gameinternationalization_get_v1_developer_products__developerProductId__name_description",
"delete_legacy_game_internationalization_v1_developer_products__developerProductId__name_description_language_codes__languageCode_",
"gameinternationalization_delete_v1_developer_products__developerProductId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_developer_products__developerProductId__name_description_language_codes__languageCode_",
"gameinternationalization_patch_v1_developer_products__developerProductId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_developer_products__developerProductId__name_language_codes__languageCode_",
"gameinternationalization_patch_v1_developer_products__developerProductId__name_language_codes__languageCode_",
"thumbnails_get_v1_developer_products_icons"
]
}
},
{
"name": "Experiments",
"description": "Manage and analyze experiments for your experiences programmatically. See the [Experiments guide](https://create.roblox.com/docs/production/experiments) for setup and usage.\n",
"x-roblox-tag-info": {
"path": "experiments",
"content": "HTTP APIs for managing experience experiments on Roblox Cloud",
"ordering": [
"PublicExperimentation_CreateExperiment",
"PublicExperimentation_GetExperiment",
"PublicExperimentation_UpdateExperiment",
"PublicExperimentation_DiscardExperiment",
"PublicExperimentation_ListExperiments",
"PublicExperimentation_GetExperimentOperationStatus",
"PublicExperimentation_StartExperiment",
"PublicExperimentation_ScheduleExperiment",
"PublicExperimentation_CompleteExperiment",
"PublicExperimentation_CalculateExperimentMde",
"PublicExperimentation_GetExperimentStats"
]
}
},
{
"name": "Game Events",
"description": "Create and manage scheduled game events for a universe — announce content\nupdates, drops, and live moments, and let players discover and RSVP to them.\n\nCommon use cases include:\n\n- **Create an event**: Publish a game event for a universe with a title, schedule, visibility, categories, and thumbnails\n- **List and read events**: Page through a universe's game events or fetch a single event, using an optional `fields` mask to trim the payload\n- **Update or cancel**: Patch event details or delete a game event\n",
"x-roblox-tag-info": {
"path": "virtual-events",
"content": "HTTP APIs for creating and managing game events for a universe on Roblox.",
"ordering": [
"GameEvents_List",
"GameEvents_Create",
"GameEvent_Get",
"GameEvent_Update",
"GameEvent_Delete"
]
}
},
{
"name": "Game passes",
"description": "Create and manage game passes to monetize your experiences. Game passes provide one-time purchases that grant permanent benefits to players. [Create](#GamePasses_CreateGamePass) and [update](#GamePasses_UpdateGamePass) game passes with custom icons and pricing, and [list all game passes](#GamePasses_ListGamePassConfigsByUniverse) for an experience.\n",
"x-roblox-tag-info": {
"path": "game-passes",
"content": "HTTP APIs for working with game passes on Roblox Cloud.",
"ordering": [
"GamePasses_CreateGamePass",
"GamePasses_UpdateGamePass",
"GamePasses_GetGamePassConfig",
"GamePasses_ListGamePassConfigsByUniverse",
"patch_legacy_game_internationalization_v1_game_passes__gamePassId__description_language_codes__languageCode_",
"gameinternationalization_patch_v1_game_passes__gamePassId__description_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_game_passes__gamePassId__icons",
"gameinternationalization_get_v1_game_passes__gamePassId__icons",
"delete_legacy_game_internationalization_v1_game_passes__gamePassId__icons_language_codes__languageCode_",
"gameinternationalization_delete_v1_game_passes__gamePassId__icons_language_codes__languageCode_",
"post_legacy_game_internationalization_v1_game_passes__gamePassId__icons_language_codes__languageCode_",
"gameinternationalization_post_v1_game_passes__gamePassId__icons_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_game_passes__gamePassId__name_description",
"gameinternationalization_get_v1_game_passes__gamePassId__name_description",
"delete_legacy_game_internationalization_v1_game_passes__gamePassId__name_description_language_codes__languageCode_",
"gameinternationalization_delete_v1_game_passes__gamePassId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_game_passes__gamePassId__name_description_language_codes__languageCode_",
"gameinternationalization_patch_v1_game_passes__gamePassId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_game_passes__gamePassId__name_language_codes__languageCode_",
"gameinternationalization_patch_v1_game_passes__gamePassId__name_language_codes__languageCode_",
"thumbnails_get_v1_game_passes"
]
}
},
{
"name": "Generative AI",
"description": "Access Roblox's generative AI capabilities for content creation and translation. These APIs enable you to [translate in-game text](#Cloud_TranslateText) between supported languages and [generate speech audio assets](#Cloud_GenerateSpeechAsset) from text for NPC dialogue or narration.\n",
"x-roblox-tag-info": {
"path": "generative-ai",
"content": "HTTP APIs related to Generative AI and LLMs on Open Cloud.",
"ordering": ["Cloud_TranslateText", "Cloud_GenerateSpeechAsset"]
}
},
{
"name": "Groups",
"description": "Manage Roblox groups including memberships, roles, and group settings.\n\nCommon use cases include:\n\n- Membership management: [Accept](#Cloud_AcceptGroupJoinRequest) or [decline](#Cloud_DeclineGroupJoinRequest) join requests and [manage member roles](#Cloud_UpdateGroupMembership)\n- Role configuration: [Create](#groups_post_v1_groups__groupId__rolesets_create), [update](#groups_patch_v1_groups__groupId__rolesets__rolesetId_), and [delete](#groups_delete_v1_groups__groupId__rolesets__rolesetId_) group roles with custom permissions\n- Audit logging: [Review group activity](#get_legacy_groups_v1_groups__groupId__audit_log) through audit logs\n",
"x-roblox-tag-info": {
"path": "groups",
"content": "HTTP APIs for working with groups on Roblox Cloud.",
"ordering": [
"Cloud_GetGroup",
"Cloud_ListGroupJoinRequests",
"Cloud_AcceptGroupJoinRequest",
"Cloud_DeclineGroupJoinRequest",
"Cloud_ListGroupMemberships",
"Cloud_UpdateGroupMembership",
"Cloud_AssignRoleGroupMembership",
"Cloud_UnassignRoleGroupMembership",
"Cloud_ListGroupRoles",
"Cloud_GetGroupRole",
"Cloud_ListGroupForumCategories",
"Cloud_ListGroupForumPosts",
"Cloud_ListGroupForumComments",
"get_legacy_develop_v1_user_groups_canmanage",
"develop_get_v1_user_groups_canmanage",
"groups_get_v1_groups__groupId__community_feature_freezes",
"groups_post_v1_groups__groupId__community_tier_evaluate",
"groups_get_v1_groups__groupId__features",
"groups_patch_v1_groups__groupId__features",
"thumbnails_get_v1_groups_icons",
"develop_get_v1_groups__groupId__universes",
"develop_get_v1_user_groups_canmanagegamesoritems"
]
}
},
{
"name": "Interactions",
"description": "Manage your favorites, experience notifications, and assets you voted on. [List experiences opted-in for notifications for a user](#get_legacy_followings_v1_users__userId__universes), [manage favorites](#catalog_get_v1_favorites_users__userId__assets__assetId__favorite) for assets and bundles, and [track](#games_get_v1_games_votes) votes on experiences.\n",
"x-roblox-tag-info": {
"path": "interactions",
"content": "HTTP APIs for working with favorites, experience notifications, and other player interactions on Roblox Cloud.",
"ordering": [
"get_legacy_followings_v1_users__userId__universes",
"followings_get_v1_users__userId__universes",
"delete_legacy_followings_v1_users__userId__universes__universeId_",
"followings_delete_v1_users__userId__universes__universeId_",
"post_legacy_followings_v1_users__userId__universes__universeId_",
"followings_post_v1_users__userId__universes__universeId_",
"get_legacy_followings_v1_users__userId__universes__universeId__status",
"followings_get_v1_users__userId__universes__universeId__status",
"get_legacy_followings_v2_users__userId__universes",
"followings_get_v2_users__userId__universes",
"catalog_get_v1_favorites_assets__assetId__count",
"catalog_get_v1_favorites_bundles__bundleId__count",
"catalog_get_v1_favorites_users__userId__favorites__assetTypeId__assets",
"catalog_get_v1_users__userId__bundles__bundleType_",
"games_get_v1_games__universeId__favorites",
"games_post_v1_games__universeId__favorites",
"games_get_v1_games__universeId__favorites_count",
"Voting_VoteGame",
"Voting_GetGameVoteStatus",
"Voting_GetGameVoteStatusForUser",
"Voting_MultiGetGameVoteStatus",
"games_get_v2_users__userId__favorite_games",
"inventory_get_v1_users__userId__categories_favorites"
]
}
},
{
"name": "Inventories",
"description": "Access user inventories to verify ownership and display player collections. For detailed implementation details, see the [Inventory guide](/cloud/guides/inventory).\n\nYou can [retrieve and check](#Cloud_ListInventoryItems) if a user owns specific items, like limiteds, badges, passes, or private servers.\n",
"x-roblox-tag-info": {
"path": "inventories",
"content": "HTTP APIs for working with inventories on Roblox Cloud.",
"ordering": [
"Cloud_ListInventoryItems",
"inventory_delete_v1_collections_items__itemType___itemTargetId_",
"inventory_post_v1_collections_items__itemType___itemTargetId_",
"inventory_get_v1_packages__packageId__assets",
"inventory_get_v1_users__userId__assets_collectibles",
"inventory_get_v1_users__userId__can_view_inventory",
"inventory_get_v1_users__userId__categories",
"inventory_get_v1_users__userId__categories_favorites",
"inventory_get_v1_users__userId__items__itemType___itemTargetId_",
"inventory_get_v1_users__userId__items__itemType___itemTargetId__is_owned",
"inventory_get_v1_users__userId__places_inventory",
"inventory_get_v2_assets__assetId__owners",
"inventory_get_v2_collectible_items__collectibleItemId__owners",
"inventory_delete_v2_inventory_asset__assetId_",
"inventory_get_v2_users__userId__inventory",
"inventory_get_v2_users__userId__inventory__assetTypeId_"
]
}
},
{
"name": "Localization",
"description": "Extend [built-in Roblox localization features](production/localization) with automation.\n\nCommon use cases include:\n\n- Content translation: Update localized names and descriptions for [badges](#patch_legacy_game_internationalization_v1_badges__badgeId__description_language_codes__languageCode_), [game passes](#patch_legacy_game_internationalization_v1_game_passes__gamePassId__description_language_codes__languageCode_), and [developer products](#patch_legacy_game_internationalization_v1_developer_products__developerProductId__description_language_codes__languageCode_)\n- Localization tables: [Manage localization table entries](#patch_legacy_localization_tables_v1_localization_table_tables__tableId_) and [retrieve localized asset entries](#localizationtables_get_v1_localization_table_tables__tableId__asset_entries) for in-game text\n- Automatic translation: [Configure automatic translation settings](#patch_legacy_localization_tables_v1_autolocalization_games__gameId__settings) for supported languages\n",
"x-roblox-tag-info": {
"path": "localization",
"content": "HTTP APIs for localization on Roblox Cloud.",
"ordering": [
"patch_legacy_game_internationalization_v1_badges__badgeId__description_language_codes__languageCode_",
"gameinternationalization_patch_v1_badges__badgeId__description_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_badges__badgeId__icons",
"gameinternationalization_get_v1_badges__badgeId__icons",
"delete_legacy_game_internationalization_v1_badges__badgeId__icons_language_codes__languageCode_",
"gameinternationalization_delete_v1_badges__badgeId__icons_language_codes__languageCode_",
"post_legacy_game_internationalization_v1_badges__badgeId__icons_language_codes__languageCode_",
"gameinternationalization_post_v1_badges__badgeId__icons_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_badges__badgeId__name_description",
"gameinternationalization_get_v1_badges__badgeId__name_description",
"delete_legacy_game_internationalization_v1_badges__badgeId__name_description_language_codes__languageCode_",
"gameinternationalization_delete_v1_badges__badgeId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_badges__badgeId__name_description_language_codes__languageCode_",
"gameinternationalization_patch_v1_badges__badgeId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_badges__badgeId__name_language_codes__languageCode_",
"gameinternationalization_patch_v1_badges__badgeId__name_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_developer_products__developerProductId__description_language_codes__languageCode_",
"gameinternationalization_patch_v1_developer_products__developerProductId__description_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_developer_products__developerProductId__icons",
"gameinternationalization_get_v1_developer_products__developerProductId__icons",
"delete_legacy_game_internationalization_v1_developer_products__developerProductId__icons_language_codes__languageCode_",
"gameinternationalization_delete_v1_developer_products__developerProductId__icons_language_codes__languageCode_",
"post_legacy_game_internationalization_v1_developer_products__developerProductId__icons_language_codes__languageCode_",
"gameinternationalization_post_v1_developer_products__developerProductId__icons_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_developer_products__developerProductId__name_description",
"gameinternationalization_get_v1_developer_products__developerProductId__name_description",
"delete_legacy_game_internationalization_v1_developer_products__developerProductId__name_description_language_codes__languageCode_",
"gameinternationalization_delete_v1_developer_products__developerProductId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_developer_products__developerProductId__name_description_language_codes__languageCode_",
"gameinternationalization_patch_v1_developer_products__developerProductId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_developer_products__developerProductId__name_language_codes__languageCode_",
"gameinternationalization_patch_v1_developer_products__developerProductId__name_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_game_icon_games__gameId_",
"gameinternationalization_get_v1_game_icon_games__gameId_",
"delete_legacy_game_internationalization_v1_game_icon_games__gameId__language_codes__languageCode_",
"gameinternationalization_delete_v1_game_icon_games__gameId__language_codes__languageCode_",
"post_legacy_game_internationalization_v1_game_icon_games__gameId__language_codes__languageCode_",
"gameinternationalization_post_v1_game_icon_games__gameId__language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_game_passes__gamePassId__description_language_codes__languageCode_",
"gameinternationalization_patch_v1_game_passes__gamePassId__description_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_game_passes__gamePassId__icons",
"gameinternationalization_get_v1_game_passes__gamePassId__icons",
"delete_legacy_game_internationalization_v1_game_passes__gamePassId__icons_language_codes__languageCode_",
"gameinternationalization_delete_v1_game_passes__gamePassId__icons_language_codes__languageCode_",
"post_legacy_game_internationalization_v1_game_passes__gamePassId__icons_language_codes__languageCode_",
"gameinternationalization_post_v1_game_passes__gamePassId__icons_language_codes__languageCode_",
"get_legacy_game_internationalization_v1_game_passes__gamePassId__name_description",
"gameinternationalization_get_v1_game_passes__gamePassId__name_description",
"delete_legacy_game_internationalization_v1_game_passes__gamePassId__name_description_language_codes__languageCode_",
"gameinternationalization_delete_v1_game_passes__gamePassId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_game_passes__gamePassId__name_description_language_codes__languageCode_",
"gameinternationalization_patch_v1_game_passes__gamePassId__name_description_language_codes__languageCode_",
"patch_legacy_game_internationalization_v1_game_passes__gamePassId__name_language_codes__languageCode_",
"gameinternationalization_patch_v1_game_passes__gamePassId__name_language_codes__languageCode_",
"post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__alt_text",
"gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__alt_text",
"post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__image",
"gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__image",
"delete_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images__imageId_",
"gameinternationalization_delete_v1_game_thumbnails_games__gameId__language_codes__languageCode__images__imageId_",
"post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images_order",
"gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__images_order",
"patch_legacy_game_internationalization_v1_name_description_games__gameId_",
"gameinternationalization_patch_v1_name_description_games__gameId_",
"post_legacy_game_internationalization_v1_name_description_games_translation_history",
"gameinternationalization_post_v1_name_description_games_translation_history",
"patch_legacy_game_internationalization_v1_source_language_games__gameId_",
"gameinternationalization_patch_v1_source_language_games__gameId_",
"patch_legacy_game_internationalization_v1_supported_languages_games__gameId_",
"gameinternationalization_patch_v1_supported_languages_games__gameId_",
"get_legacy_game_internationalization_v1_supported_languages_games__gameId__automatic_translation_status",
"gameinternationalization_get_v1_supported_languages_games__gameId__automatic_translation_status",
"patch_legacy_game_internationalization_v1_supported_languages_games__gameId__languages__languageCode__automatic_translation_status",
"gameinternationalization_patch_v1_supported_languages_games__gameId__languages__languageCode__automatic_translation_status",
"patch_legacy_game_internationalization_v1_supported_languages_games__gameId__languages__languageCode__image_translation_status",
"gameinternationalization_patch_v1_supported_languages_games__gameId__languages__languageCode__image_translation_status",
"patch_legacy_game_internationalization_v1_supported_languages_games__gameId__languages__languageCode__universe_display_info_automatic_translation_settings",
"gameinternationalization_patch_v1_supported_languages_games__gameId__languages__languageCode__universe_display_info_automatic_translation_settings",
"get_legacy_game_internationalization_v1_supported_languages_games__gameId__universe_display_info_automatic_translation_settings",
"gameinternationalization_get_v1_supported_languages_games__gameId__universe_display_info_automatic_translation_settings",
"post_legacy_localization_tables_v1_autolocalization_games__gameId__autolocalizationtable",
"localizationtables_post_v1_autolocalization_games__gameId__autolocalizationtable",
"patch_legacy_localization_tables_v1_autolocalization_games__gameId__settings",
"localizationtables_patch_v1_autolocalization_games__gameId__settings",
"get_legacy_localization_tables_v1_autolocalization_metadata",
"localizationtables_get_v1_autolocalization_metadata",
"get_legacy_localization_tables_v1_localization_table_limits",
"localizationtables_get_v1_localization_table_limits",
"localizationtables_patch_v1_autolocalization_games__gameId__autolocalizationtable",
"get_legacy_localization_tables_v1_localization_table_tables__assetId_",
"localizationtables_get_v1_localization_table_tables__assetId_",
"get_legacy_localization_tables_v1_localization_table_tables__tableId_",
"localizationtables_get_v1_localization_table_tables__tableId_",
"patch_legacy_localization_tables_v1_localization_table_tables__tableId_",
"localizationtables_patch_v1_localization_table_tables__tableId_",
"get_legacy_localization_tables_v1_localization_table_tables__tableId__entries",
"localizationtables_get_v1_localization_table_tables__tableId__entries",
"localizationtables_get_v1_localization_table_tables__tableId__asset_entries",
"post_legacy_localization_tables_v1_localization_table_tables__tableId__entries_translation_history",
"localizationtables_post_v1_localization_table_tables__tableId__entries_translation_history",
"get_legacy_localization_tables_v1_localization_table_tables__tableId__entry_count",
"localizationtables_get_v1_localization_table_tables__tableId__entry_count",
"economy_get_v1_user_currency",
"gameinternationalization_get_v1_automatic_translation_games__gameId__feature_status",
"gameinternationalization_get_v1_automatic_translation_games__gameId__quota",
"gameinternationalization_get_v1_automatic_translation_languages__languageCode__target_languages",
"gameinternationalization_get_v1_game_localization_status__gameId__translation_counts",
"gameinternationalization_get_v1_game_localization_status_translation_counts_for_language_or_locale",
"gameinternationalization_get_v1_game_thumbnails_games__gameId__images",
"gameinternationalization_get_v1_name_description_games__gameId_",
"gameinternationalization_get_v1_name_description_metadata",
"gameinternationalization_get_v1_source_language_games__gameId_",
"gameinternationalization_get_v1_supported_languages_games__gameId_",
"gameinternationalization_get_v1_supported_languages_metadata",
"gameinternationalization_get_v1_translation_analytics_games__gameId__download_translation_analytics_report",
"gameinternationalization_post_v1_translation_analytics_games__gameId__request_translation_analytics_report",
"gameinternationalization_get_v1_translation_analytics_metadata",
"gameinternationalization_get_v1_ui_configurations",
"gameinternationalization_get_v1_user_localization_settings_player_choice__universeId_",
"gameinternationalization_get_v1_user_localization_settings_universe__universeId_",
"gameinternationalization_post_v1_user_localization_settings_universe__universeId_",
"gameinternationalization_get_v1_source_language_games__gameId__language_with_locales",
"gameinternationalization_get_v1_supported_languages_games__gameId__in_experience_language_selection",
"locale_get_v1_country_regions",
"locale_get_v1_locales",
"locale_post_v1_locales_set_show_roblox_translations",
"locale_post_v1_locales_set_user_supported_locale",
"locale_get_v1_locales_supported_locales",
"locale_get_v1_locales_supported_locales_for_creators",
"locale_get_v1_locales_user_locale",
"locale_get_v1_locales_user_localization_locus_supported_locales",
"localizationtables_post_v1_auto_localization_table_games__gameId__assets_generation_request",
"localizationtables_post_v1_auto_localization_table_games__gameId__auto_scrape_cleanup_request",
"localizationtables_get_v1_localization_table_metadata",
"localizationtables_post_v1_localization_table_tables",
"localizationtables_post_v1_localization_table_tables__tableId__entries_translation_feedback",
"translationroles_patch_v1_game_localization_roles_games__gameId_",
"translationroles_get_v1_game_localization_roles_games__gameId__current_user_roles",
"translationroles_get_v1_game_localization_roles_games__gameId__roles__role__assignees",
"translationroles_get_v1_game_localization_roles_roles__role__current_user"
]
}
},
{
"name": "Luau Execution",
"description": "Run Luau scripts headlessly in a Roblox place via Open Cloud for automated testing, game configuration, and procedural generation, with full DataModel and engine Luau API access. Tasks can run for up to 5 minutes, with a limit of 10 concurrent tasks per place. You can save changes using [`SavePlaceAsync`](/reference/engine/classes/AssetService#SavePlaceAsync), pass in large binary payloads, and use [`SerializationService`](/reference/engine/classes/SerializationService) to deserialize RBXM content. For a reference implementation, see [Roblox/place-ci-cd-demo](https://github.com/Roblox/place-ci-cd-demo) on GitHub.\n\nWorkflow:\n\n1. [Create a task](#Cloud_CreateLuauExecutionSessionTask__Using_Universes) with your universeId, placeId, and the Luau script to run\n2. A server launches, loads the place, and executes your code\n3. [Poll for completion](#Cloud_GetLuauExecutionSessionTask) and receive the script's return values and [logs](#Cloud_ListLuauExecutionSessionTaskLogs)\n\nCommon use cases include:\n\n- Automated testing: Run test scripts against specific place versions as part of a CI/CD pipeline\n- Game configuration: Update pricing, stats, and balancing variables outside of Studio\n",
"x-roblox-tag-info": {
"path": "luau-execution",
"content": "HTTP APIs for Luau execution on Roblox Cloud.",
"ordering": [
"Cloud_CreateLuauExecutionSessionTaskBinaryInput",
"Cloud_CreateLuauExecutionSessionTask__Using_Universes",
"Cloud_CreateLuauExecutionSessionTask__Using_Universes_Places",
"Cloud_GetLuauExecutionSessionTask",
"Cloud_ListLuauExecutionSessionTaskLogs"
]
}
},
{
"name": "Matchmaking",
"description": "Configure and manage matchmaking for your experiences. Matchmaking APIs help you create fair, balanced matches by considering player skill, preferences, and latency.\n\nCommon use cases include:\n\n- Player attributes: [Define](#post_matchmaking_api_v1_matchmaking_player_attribute) and [manage](#patch_matchmaking_api_v1_matchmaking_player_attribute__attributeId_) custom player attributes for matching (skill level, preferences, etc.)\n- Scoring configuration: [Create](#post_matchmaking_api_v1_matchmaking_scoring_configuration) and [tune](#patch_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId_) scoring configurations that determine match quality\n- Instance control: [Shut down game instances](#post_matchmaking_api_v1_game_instances_shutdown) for maintenance\n",
"x-roblox-tag-info": {
"path": "matchmaking",
"content": "HTTP APIs for matchmaking on Roblox Cloud.",
"ordering": [
"post_matchmaking_api_v1_client_status",
"get_matchmaking_api_v1_client_status",
"post_matchmaking_api_v1_game_instances_shutdown",
"post_matchmaking_api_v1_game_instances_shutdown_all",
"post_matchmaking_api_v1_matchmaking_player_attribute",
"patch_matchmaking_api_v1_matchmaking_player_attribute__attributeId_",
"delete_matchmaking_api_v1_matchmaking_player_attribute__attributeId_",
"get_matchmaking_api_v1_matchmaking_player_attributes__universeId_",
"post_matchmaking_api_v1_matchmaking_server_attribute",
"patch_matchmaking_api_v1_matchmaking_server_attribute__attributeId_",
"delete_matchmaking_api_v1_matchmaking_server_attribute__attributeId_",
"get_matchmaking_api_v1_matchmaking_server_attributes__universeId_",
"get_matchmaking_api_v1_matchmaking_universe__universeId__feature_flags",
"post_matchmaking_api_v1_matchmaking_scoring_configuration",
"get_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId_",
"patch_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId_",
"delete_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId_",
"post_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId__signals",
"patch_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId__signals__signalName_",
"delete_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId__signals__signalName_",
"post_matchmaking_api_v1_matchmaking_scoring_configuration_place",
"delete_matchmaking_api_v1_matchmaking_scoring_configuration_place__placeId_",
"get_matchmaking_api_v1_matchmaking_scoring_configurations__universeId_",
"get_matchmaking_api_v1_matchmaking_scoring_configurations__universeId__places",
"get_matchmaking_api_v1_matchmaking_scoring_configuration_default_weights",
"post_matchmaking_api_v1_game_instances_forecast_update",
"post_matchmaking_api_v1_game_instances_launch_update",
"get_matchmaking_api_v1_game_instances_get_update_status",
"get_matchmaking_api_v1_matchmaking_scoring_configuration_generate_mock_servers"
]
}
},
{
"name": "Metadata",
"description": "Retrieve configuration metadata and system information from various Roblox services, including settings, quotas, and limits.\n",
"x-roblox-tag-info": {
"path": "metadata",
"content": "HTTP APIs for working with metadata on Roblox Cloud.",
"ordering": [
"get_legacy_localization_tables_v1_autolocalization_metadata",
"localizationtables_get_v1_autolocalization_metadata",
"get_legacy_localization_tables_v1_localization_table_limits",
"localizationtables_get_v1_localization_table_limits",
"accountinformation_get_v1_metadata",
"auth_get_v1_auth_metadata",
"auth_get_v1_metadata",
"auth_get_v1_recovery_metadata",
"auth_get_v2_auth_metadata",
"auth_get_v2_metadata",
"auth_get_v2_passwords_reset",
"auth_get_v2_recovery_metadata",
"avatar_get_v1_avatar_metadata",
"badges_get_v1_badges_metadata",
"clientsettings_get_v1_client_version__binaryType_",
"clientsettings_get_v1_installer_cdns",
"clientsettings_get_v1_mobile_client_version",
"clientsettings_get_v2_android_binaries__version__channels__channelName_",
"clientsettings_get_v2_client_version__binaryType_",
"clientsettings_get_v2_client_version__binaryType__channel__channelName_",
"clientsettings_get_v2_compression_dictionaries",
"clientsettings_get_v2_compression_dictionaries__dictionarySha256_",
"clientsettings_get_v2_ota_version__binaryType_",
"clientsettings_get_v2_user_channel",
"gameinternationalization_get_v1_name_description_metadata",
"gameinternationalization_get_v1_supported_languages_metadata",
"gameinternationalization_get_v1_translation_analytics_metadata",
"gameinternationalization_get_v1_ui_configurations",
"locale_post_v1_locales_set_user_supported_locale",
"locale_get_v1_locales_supported_locales",
"locale_get_v1_locales_supported_locales_for_creators",
"locale_get_v1_locales_user_localization_locus_supported_locales",
"localizationtables_get_v1_localization_table_metadata",
"notifications_get_v2_push_notifications_chrome_manifest",
"notifications_get_v2_push_notifications_get_current_device_destination",
"notifications_get_v2_push_notifications_metadata",
"notifications_get_v2_stream_notifications_metadata",
"twostepverification_get_v1_metadata"
]
}
},
{
"name": "Notifications",
"description": "Send personalized notifications to re-engage players and keep them informed about your experience. Each user can receive one notification per day from a given experience. See the [Experience Notifications Guide](/cloud/guides/experience-notifications).\n\nCommon use cases include:\n\n- Experience notifications: [Send targeted notifications](#Cloud_CreateUserNotification) to users about in-game events, rewards, or updates\n- Personalized messages: Customize notifications with dynamic parameters like usernames and scores\n- **Launch Data Integration**: Include launch data to route users to specific locations when they join\n",
"x-roblox-tag-info": {
"path": "notifications",
"content": "HTTP APIs for working with notifications on Roblox Cloud.",
"ordering": [
"Cloud_CreateUserNotification",
"notifications_get_v2_push_notifications_chrome_manifest",
"notifications_post_v2_push_notifications_deregister_all_devices",
"notifications_post_v2_push_notifications_deregister_current_device",
"notifications_post_v2_push_notifications_deregister_current_device_ios_pushkit",
"notifications_get_v2_push_notifications_get_current_device_destination",
"notifications_get_v2_push_notifications_get_destinations",
"notifications_get_v2_push_notifications_metadata",
"notifications_post_v2_push_notifications_register_android_native",
"notifications_post_v2_push_notifications_register_ios_native",
"notifications_post_v2_push_notifications_register_ios_pushkit",
"notifications_post_v2_stream_notifications_clear_unread",
"notifications_get_v2_stream_notifications_get_latest_game_updates",
"notifications_get_v2_stream_notifications_get_recent",
"notifications_get_v2_stream_notifications_metadata",
"notifications_get_v2_stream_notifications_unread_count"
]
}
},
{
"name": "Observability",
"description": "Monitor and manage game servers for an experience.\n\nCommon use cases include:\n\n- Server discovery: [List active game servers](#GameServers_ListGameServers) for a specific place version and [retrieve available filter options](#GameServers_GetFilterOptions)\n- Log retrieval: [Inspect logs](#GameServers_ListGameServerLogs) for a specific game server\n- Server restarts: [Forecast the impact](#Restarts_ForecastRestart) of a restart, [launch it](#Restarts_LaunchRestart), and [monitor its status](#Restarts_ListRestartStatuses)\n",
"x-roblox-tag-info": {
"path": "observability",
"content": "HTTP APIs for monitoring and managing game servers on Roblox Cloud.",
"ordering": [
"GameServers_GetFilterOptions",
"GameServers_ListGameServers",
"GameServers_ListGameServerLogs",
"Restarts_ForecastRestart",
"Restarts_ListRestartStatuses",
"Restarts_LaunchRestart"
]
}
},
{
"name": "Places",
"description": "Manage places, update instance properties, and publish place versions programmatically. See the [Engine Instances Guide](/cloud/guides/instance) and [Place Publishing Guide](/cloud/guides/usage-place-publishing).\n\nCommon use cases include:\n\n- Automated publishing: Publish place updates from CI/CD pipelines with version control and rollback support\n- Instance management: [Read](#Cloud_GetInstance) and [update](#Cloud_UpdateInstance) Script, LocalScript, and ModuleScript objects in collaborative sessions\n- Luau execution: [Run Luau scripts](#Cloud_CreateLuauExecutionSessionTask__Using_Universes) on specific place versions for testing or automation\n",
"x-roblox-tag-info": {
"path": "places",
"content": "HTTP APIs for working with places on Roblox Cloud.",
"ordering": [
"Cloud_GetPlace",
"Cloud_UpdatePlace",
"Cloud_GetInstance",
"Cloud_UpdateInstance",
"Cloud_GetUpdateInstanceOperation",
"Cloud_ListInstanceChildren",
"Cloud_CreateLuauExecutionSessionTask__Using_Universes",
"Cloud_ListUserRestrictions__Using_Universes",
"Cloud_GetUserRestriction__Using_Universes_Places",
"Cloud_UpdateUserRestriction__Using_Universes_Places",
"Cloud_CreateLuauExecutionSessionTask__Using_Universes_Places",
"Cloud_GetLuauExecutionSessionTask",
"Cloud_ListLuauExecutionSessionTaskLogs",
"PlaceVersion_GetPlaceVersionHistory",
"PlaceVersion_UpdatePlaceVersionNotes",
"PlaceVersion_GetPlaceContributors",
"get_legacy_develop_v1_places__placeId__teamcreate_active_session_members",
"develop_get_v1_places__placeId__teamcreate_active_session_members",
"delete_legacy_develop_v2_teamtest__placeId_",
"develop_delete_v2_teamtest__placeId_",
"Places_CreatePlaceVersionApiKey",
"develop_patch_v1_places__placeId_",
"develop_post_v1_places__placeId_",
"develop_get_v1_universes__universeId__places",
"develop_get_v2_places__placeId_",
"develop_patch_v2_places__placeId_",
"games_get_v1_games_multiget_place_details",
"inventory_get_v1_users__userId__places_inventory"
]
}
},
{
"name": "Private servers",
"description": "Create and manage private servers for your experiences, including server creation, access control, and subscription management.\n",
"x-roblox-tag-info": {
"path": "private-servers",
"content": "HTTP APIs for working with private servers on Roblox Cloud.",
"ordering": [
"develop_get_v1_universes__universeId__configuration_vip_servers",
"PrivateServers_GetPrivateServerList"
]
}
},
{
"name": "Team Create",
"description": "Manage Team Create collaborative sessions for your experiences, including session monitoring, membership management, and collaboration settings.\n",
"x-roblox-tag-info": {
"path": "team-create",
"content": "HTTP APIs for working with Team Create on Roblox Cloud.",
"ordering": [
"get_legacy_develop_v1_places__placeId__teamcreate_active_session_members",
"develop_get_v1_places__placeId__teamcreate_active_session_members",
"get_legacy_develop_v1_universes__universeId__teamcreate",
"develop_get_v1_universes__universeId__teamcreate",
"patch_legacy_develop_v1_universes__universeId__teamcreate",
"develop_patch_v1_universes__universeId__teamcreate",
"delete_legacy_develop_v1_universes__universeId__teamcreate_memberships",
"develop_delete_v1_universes__universeId__teamcreate_memberships",
"get_legacy_develop_v1_universes_multiget_teamcreate",
"develop_get_v1_universes_multiget_teamcreate",
"delete_legacy_develop_v2_teamtest__placeId_",
"develop_delete_v2_teamtest__placeId_"
]
}
},
{
"name": "Thumbnail Personalization",
"description": "Upload and manage creator-provided homepage thumbnail variants for an experience, then choose which player groups see each variant. Unlike the Thumbnails feature, these APIs manage homepage images and targeting rules instead of generating or retrieving standard Roblox thumbnails.\n",
"x-roblox-tag-info": {
"path": "thumbnail-personalization",
"content": "HTTP APIs for working with homepage thumbnail personalization on Roblox Cloud.",
"ordering": [
"ThumbnailPersonalizationApi.HomepageThumbnail_UploadHomepageThumbnails",
"ThumbnailPersonalizationApi.HomepageThumbnail_GetHomepageThumbnailsStatus",
"ThumbnailPersonalizationApi.HomepageThumbnail_GetHomepageThumbnails",
"ThumbnailPersonalizationApi.HomepageThumbnail_DeleteHomepageThumbnails",
"ThumbnailPersonalizationApi.HomepageThumbnail_CreateThumbnailPersonalization",
"ThumbnailPersonalizationApi.HomepageThumbnail_FindThumbnailPersonalizations",
"ThumbnailPersonalizationApi.HomepageThumbnail_UpdateThumbnailPersonalization"
]
}
},
{
"name": "Thumbnails",
"description": "Generate and retrieve thumbnails for [users](#Cloud_GenerateUserThumbnail), [experiences](#post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__image), [badges](#post_legacy_publish_v1_badges__badgeId__icon), and [avatar images](#Cloud_GenerateUserThumbnail) in various formats. [Retrieve thumbnail-generation status](#Cloud_GetUserThumbnailGenerationOperation) as part of the user thumbnail workflow.\n",
"x-roblox-tag-info": {
"path": "thumbnails",
"content": "HTTP APIs for working with user thumbnails on Roblox Cloud.",
"ordering": [
"Cloud_GenerateUserThumbnail",
"Cloud_GetUserThumbnailGenerationOperation",
"post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__alt_text",
"gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__alt_text",
"post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__image",
"gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__image",
"delete_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images__imageId_",
"gameinternationalization_delete_v1_game_thumbnails_games__gameId__language_codes__languageCode__images__imageId_",
"post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images_order",
"gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__images_order",
"post_legacy_publish_v1_badges__badgeId__icon",
"publish_post_v1_badges__badgeId__icon",
"avatar_post_v1_avatar_redraw_thumbnail",
"games_get_v2_games__universeId__media",
"thumbnails_get_v1_asset_thumbnail_animated",
"thumbnails_get_v1_assets",
"thumbnails_get_v1_assets_thumbnail_3d",
"thumbnails_get_v1_badges_icons",
"thumbnails_post_v1_batch",
"thumbnails_get_v1_bundles_thumbnails",
"thumbnails_get_v1_developer_products_icons",
"thumbnails_get_v1_game_passes",
"thumbnails_get_v1_games__universeId__thumbnails",
"thumbnails_get_v1_games_icons",
"thumbnails_get_v1_games_multiget_thumbnails",
"thumbnails_get_v1_groups_icons",
"thumbnails_get_v1_places_gameicons",
"thumbnails_get_v1_users_avatar",
"thumbnails_get_v1_users_avatar_3d",
"thumbnails_get_v1_users_avatar_bust",
"thumbnails_get_v1_users_avatar_headshot",
"thumbnails_get_v1_users_outfit_3d",
"thumbnails_get_v1_users_outfits",
"thumbnailsresizer_get_v1_resize__hash___width___height___type___format___filterType_",
"thumbnailsresizer_get_v1_secureresize__thumbPrint___hash___width___height___type___format___filterType_"
]
}
},
{
"name": "Trades",
"description": "Manage item trades between users on the Roblox platform. [Check trade eligibility](#trades_get_v2_users__userId__can_trade_with) between users, [retrieve trade details](#trades_get_v2_trades__tradeId_), and [list trades by status](#trades_get_v1_trades__tradeStatusType_) (pending, completed, declined, expired).\n",
"x-roblox-tag-info": {
"path": "trades",
"content": "HTTP APIs for working with trades on Roblox Cloud.",
"ordering": [
"trades_get_v2_users__userId__can_trade_with",
"trades_get_v2_users_me_can_trade",
"trades_get_v1_users__userId__can_trade_with",
"trades_get_v2_trades__tradeId_",
"trades_get_v1_trades__tradeId_",
"trades_post_v2_trades_send",
"trades_post_v1_trades_send",
"trades_post_v1_trades__tradeId__accept",
"trades_post_v2_trades__tradeId__counter",
"trades_post_v1_trades__tradeId__counter",
"trades_post_v1_trades__tradeId__decline",
"trades_get_v1_trades__tradeStatusType_",
"trades_get_v1_trades__tradeStatusType__count",
"trades_post_v1_trades_expire_outdated",
"trades_get_v1_trades_metadata",
"trades_get_v2_users__userId__tradableItems"
]
}
},
{
"name": "Universes",
"description": "Manage experiences (universes), publish updates, and communicate with live servers. See the [Messaging Usage Guide](/cloud/guides/usage-messaging) and [Place Publishing Guide](/cloud/guides/usage-place-publishing).\n\nCommon use cases include:\n\n- **Cross-Server Messaging**: [Send announcements](#Cloud_PublishUniverseMessage), trigger events, or update all players across servers using the Messaging Service\n- User restrictions: [Ban or restrict users](#Cloud_UpdateUserRestriction__Using_Universes) from your experience at the universe or place level\n- Playtester access: [List](#develop_get_v1_universes__universeId__configuration_playtesters), [add](#develop_post_v1_universes__universeId__configuration_playtesters), or [remove](#develop_delete_v1_universes__universeId__configuration_playtesters) playtesters for a universe\n",
"x-roblox-tag-info": {
"path": "universes",
"content": "HTTP APIs for working with universes on Roblox Cloud, including subscriptions, place and instance updates, user restrictions, and more.",
"ordering": [
"Cloud_GetUniverse",
"Cloud_UpdateUniverse",
"Cloud_PublishUniverseMessage",
"Cloud_RestartUniverseServers",
"Cloud_GetPlace",
"Cloud_UpdatePlace",
"Cloud_GetInstance",
"Cloud_UpdateInstance",
"Cloud_ListInstanceChildren",
"Cloud_ListUserRestrictions__Using_Universes",
"Cloud_GetUserRestriction__Using_Universes_Places",
"Cloud_UpdateUserRestriction__Using_Universes_Places",
"Cloud_ListUserRestrictions",
"Cloud_ListUserRestrictionLogs",
"Cloud_GetUserRestriction__Using_Universes",
"Cloud_UpdateUserRestriction__Using_Universes",
"post_legacy_badges_v1_universes__universeId__badges",
"badges_post_v1_universes__universeId__badges",
"get_legacy_develop_v1_places__placeId__teamcreate_active_session_members",
"develop_get_v1_places__placeId__teamcreate_active_session_members",
"post_legacy_develop_v1_universes__universeId__activate",
"develop_post_v1_universes__universeId__activate",
"post_legacy_develop_v1_universes__universeId__deactivate",
"develop_post_v1_universes__universeId__deactivate",
"get_legacy_develop_v1_universes__universeId__permissions",
"develop_get_v1_universes__universeId__permissions",
"develop_get_v1_universes__universeId__configuration_playtesters",
"develop_post_v1_universes__universeId__configuration_playtesters",
"develop_delete_v1_universes__universeId__configuration_playtesters",
"get_legacy_develop_v1_universes__universeId__teamcreate",
"develop_get_v1_universes__universeId__teamcreate",
"patch_legacy_develop_v1_universes__universeId__teamcreate",
"develop_patch_v1_universes__universeId__teamcreate",
"delete_legacy_develop_v1_universes__universeId__teamcreate_memberships",
"develop_delete_v1_universes__universeId__teamcreate_memberships",
"get_legacy_develop_v1_universes_multiget_permissions",
"develop_get_v1_universes_multiget_permissions",
"get_legacy_develop_v1_universes_multiget_teamcreate",
"develop_get_v1_universes_multiget_teamcreate",
"get_legacy_followings_v1_users__userId__universes",
"followings_get_v1_users__userId__universes",
"delete_legacy_followings_v1_users__userId__universes__universeId_",
"followings_delete_v1_users__userId__universes__universeId_",
"post_legacy_followings_v1_users__userId__universes__universeId_",
"followings_post_v1_users__userId__universes__universeId_",
"get_legacy_followings_v1_users__userId__universes__universeId__status",
"followings_get_v1_users__userId__universes__universeId__status",
"get_legacy_followings_v2_users__userId__universes",
"followings_get_v2_users__userId__universes",
"get_legacy_game_internationalization_v1_game_icon_games__gameId_",
"gameinternationalization_get_v1_game_icon_games__gameId_",
"delete_legacy_game_internationalization_v1_game_icon_games__gameId__language_codes__languageCode_",
"gameinternationalization_delete_v1_game_icon_games__gameId__language_codes__languageCode_",
"post_legacy_game_internationalization_v1_game_icon_games__gameId__language_codes__languageCode_",
"gameinternationalization_post_v1_game_icon_games__gameId__language_codes__languageCode_",
"post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__alt_text",
"gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__alt_text",
"post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__image",
"gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__image",
"delete_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images__imageId_",
"gameinternationalization_delete_v1_game_thumbnails_games__gameId__language_codes__languageCode__images__imageId_",
"post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images_order",
"gameinternationalization_post_v1_game_thumbnails_games__gameId__language_codes__languageCode__images_order",
"patch_legacy_game_internationalization_v1_name_description_games__gameId_",
"gameinternationalization_patch_v1_name_description_games__gameId_",
"post_legacy_game_internationalization_v1_name_description_games_translation_history",
"gameinternationalization_post_v1_name_description_games_translation_history",
"patch_legacy_game_internationalization_v1_source_language_games__gameId_",
"gameinternationalization_patch_v1_source_language_games__gameId_",
"patch_legacy_game_internationalization_v1_supported_languages_games__gameId_",
"gameinternationalization_patch_v1_supported_languages_games__gameId_",
"get_legacy_game_internationalization_v1_supported_languages_games__gameId__automatic_translation_status",
"gameinternationalization_get_v1_supported_languages_games__gameId__automatic_translation_status",
"patch_legacy_game_internationalization_v1_supported_languages_games__gameId__languages__languageCode__automatic_translation_status",
"gameinternationalization_patch_v1_supported_languages_games__gameId__languages__languageCode__automatic_translation_status",
"patch_legacy_game_internationalization_v1_supported_languages_games__gameId__languages__languageCode__universe_display_info_automatic_translation_settings",
"gameinternationalization_patch_v1_supported_languages_games__gameId__languages__languageCode__universe_display_info_automatic_translation_settings",
"get_legacy_game_internationalization_v1_supported_languages_games__gameId__universe_display_info_automatic_translation_settings",
"gameinternationalization_get_v1_supported_languages_games__gameId__universe_display_info_automatic_translation_settings",
"post_legacy_localization_tables_v1_autolocalization_games__gameId__autolocalizationtable",
"localizationtables_post_v1_autolocalization_games__gameId__autolocalizationtable",
"patch_legacy_localization_tables_v1_autolocalization_games__gameId__settings",
"localizationtables_patch_v1_autolocalization_games__gameId__settings",
"CrossServerMessaging_Publish",
"Places_CreatePlaceVersionApiKey",
"get_cloud_v2_universes__universeId__secrets_public_key",
"get_cloud_v2_universes__universeId__secrets",
"post_cloud_v2_universes__universeId__secrets",
"patch_cloud_v2_universes__universeId__secrets__secretId_",
"delete_cloud_v2_universes__universeId__secrets__secretId_",
"avatar_get_v1_game_start_info",
"badges_get_v1_universes__universeId__badges",
"badges_get_v1_universes__universeId__free_badges_quota",
"develop_get_v1_gametemplates",
"develop_get_v1_groups__groupId__universes",
"develop_get_v1_universes__universeId_",
"develop_get_v1_universes__universeId__configuration",
"develop_patch_v1_universes__universeId__configuration",
"develop_get_v1_universes__universeId__places",
"develop_get_v1_universes_multiget",
"develop_get_v1_user_groups_canmanagegamesoritems",
"develop_get_v1_universes__universeId__activation_eligibility",
"develop_get_v1_universes_user_public_publish_eligibility",
"develop_get_v1_user_universes",
"develop_patch_v2_universes__universeId__configuration",
"economycreatorstats_get_v1_universes__universeId__stats",
"gameinternationalization_get_v1_automatic_translation_games__gameId__feature_status",
"gameinternationalization_get_v1_automatic_translation_games__gameId__quota",
"gameinternationalization_get_v1_game_localization_status__gameId__translation_counts",
"gameinternationalization_get_v1_game_localization_status_translation_counts_for_language_or_locale",
"gameinternationalization_get_v1_game_thumbnails_games__gameId__images",
"gameinternationalization_get_v1_name_description_games__gameId_",
"gameinternationalization_get_v1_source_language_games__gameId_",
"gameinternationalization_get_v1_supported_languages_games__gameId_",
"gameinternationalization_get_v1_translation_analytics_games__gameId__download_translation_analytics_report",
"gameinternationalization_post_v1_translation_analytics_games__gameId__request_translation_analytics_report",
"gameinternationalization_get_v1_user_localization_settings_universe__universeId_",
"gameinternationalization_post_v1_user_localization_settings_universe__universeId_",
"gameinternationalization_get_v2_supported_languages_games__gameId_",
"games_get_v1_games",
"games_get_v1_games__universeId__favorites",
"games_post_v1_games__universeId__favorites",
"games_get_v1_games__universeId__favorites_count",
"Voting_VoteGame",
"Voting_GetGameVoteStatus",
"Voting_GetGameVoteStatusForUser",
"games_get_v1_games_games_product_info",
"games_get_v1_games_multiget_place_details",
"games_get_v1_games_multiget_playability_status",
"games_get_v1_games_recommendations_game__universeId_",
"Voting_MultiGetGameVoteStatus",
"games_get_v2_games__universeId__media",
"games_get_v2_users__userId__favorite_games",
"games_get_v2_users__userId__games",
"inventory_get_v1_users__userId__places_inventory",
"localizationtables_post_v1_auto_localization_table_games__gameId__assets_generation_request",
"localizationtables_post_v1_auto_localization_table_games__gameId__auto_scrape_cleanup_request",
"notifications_get_v2_stream_notifications_get_latest_game_updates",
"thumbnails_get_v1_games__universeId__thumbnails",
"thumbnails_get_v1_games_icons",
"thumbnails_get_v1_games_multiget_thumbnails",
"thumbnails_get_v1_places_gameicons",
"translationroles_patch_v1_game_localization_roles_games__gameId_",
"translationroles_get_v1_game_localization_roles_games__gameId__current_user_roles",
"translationroles_get_v1_game_localization_roles_games__gameId__roles__role__assignees",
"translationroles_get_v1_game_localization_roles_roles__role__current_user"
]
}
},
{
"name": "User profiles",
"description": "Access user profile pages. [Retrieve user descriptions](#users_get_v1_description), [badges](#accountinformation_get_v1_users__userId__roblox_badges), [avatar configuration](#avatar_get_v1_users__userId__avatar), and [wearing items](#avatar_get_v1_users__userId__currently_wearing).\n",
"x-roblox-tag-info": {
"path": "user-profiles",
"content": "HTTP APIs for working with user profiles on Roblox Cloud.",
"ordering": [
"accountinformation_get_v1_description",
"accountinformation_post_v1_description",
"accountinformation_get_v1_metadata",
"accountinformation_get_v1_promotion_channels",
"accountinformation_get_v1_users__userId__promotion_channels",
"accountinformation_get_v1_users__userId__roblox_badges",
"avatar_post_v1_avatar_redraw_thumbnail",
"avatar_get_v4_avatar_users__userId_",
"avatar_get_v1_users__userId__avatar",
"avatar_get_v1_users__userId__currently_wearing",
"Presence_GetUserPresences",
"users_get_v1_users__userId_",
"users_patch_v1_users__userId__display_names",
"users_get_v1_users__userId__username_history",
"users_get_v1_description",
"users_post_v1_description"
]
}
},
{
"name": "Users",
"description": "Retrieve user information, manage inventories, and restrict users from your experience. See the [Inventory Guide](/cloud/guides/inventory) for code examples.\n\nCommon use cases include:\n\n- User lookup: [Search users by username](#users_get_v1_users_search) or ID and [retrieve profile information](#Cloud_GetUser)\n- Avatar thumbnails: [Generate a user thumbnail](#Cloud_GenerateUserThumbnail) and [retrieve its generation operation](#Cloud_GetUserThumbnailGenerationOperation)\n- Inventory access: [List user-owned items](#Cloud_ListInventoryItems), badges, and collectibles\n- User restrictions: [Manage experience-level bans](#Cloud_UpdateUserRestriction__Using_Universes) and access restrictions\n",
"x-roblox-tag-info": {
"path": "users",
"content": "HTTP APIs for working with users on Roblox Cloud, including inventory items, restrictions, subscriptions, and more.",
"ordering": [
"users_get_v1_users_search",
"users_post_v1_usernames_users",
"users_post_v1_users",
"Cloud_GetUser",
"users_get_v1_users__userId_",
"Presence_GetUserPresences",
"accountinformation_get_v1_users__userId__promotion_channels",
"users_get_v1_display_names_validate",
"users_get_v1_users__userId__display_names_validate",
"users_get_v1_users__userId__username_history",
"users_patch_v1_users__userId__display_names",
"avatar_get_v1_users__userId__currently_wearing",
"avatar_get_v2_avatar_users__userId__avatar",
"avatar_get_v1_users__userId__avatar",
"avatar_get_v2_avatar_users__userId__outfits",
"avatar_get_v1_users__userId__outfits",
"Cloud_ListInventoryItems",
"inventory_get_v1_users__userId__can_view_inventory",
"inventory_get_v1_users__userId__assets_collectibles",
"inventory_get_v1_users__userId__items__itemType___itemTargetId__is_owned",
"inventory_get_v1_users__userId__items__itemType___itemTargetId_",
"inventory_get_v1_users__userId__places_inventory",
"inventory_get_v2_users__userId__inventory",
"inventory_get_v2_users__userId__inventory__assetTypeId_",
"inventory_get_v1_users__userId__categories",
"inventory_get_v1_users__userId__categories_favorites",
"accountinformation_get_v1_users__userId__roblox_badges",
"Cloud_ListAssetQuotas",
"Cloud_GenerateUserThumbnail",
"Cloud_GetUserThumbnailGenerationOperation",
"inventory_get_v2_assets__assetId__owners",
"inventory_get_v2_collectible_items__collectibleItemId__owners",
"catalog_get_v1_favorites_users__userId__favorites__assetTypeId__assets",
"catalog_get_v1_users__userId__bundles__bundleType_",
"friends_get_v1_users__userId__friends_statuses",
"contacts_post_v1_user_get_tags",
"contacts_get_v1_user_tag_validate",
"contacts_post_v1_user_tag",
"get_legacy_followings_v1_users__userId__universes",
"followings_get_v1_users__userId__universes",
"post_legacy_followings_v1_users__userId__universes__universeId_",
"followings_post_v1_users__userId__universes__universeId_",
"get_legacy_followings_v1_users__userId__universes__universeId__status",
"followings_get_v1_users__userId__universes__universeId__status",
"delete_legacy_followings_v1_users__userId__universes__universeId_",
"followings_delete_v1_users__userId__universes__universeId_",
"get_legacy_followings_v2_users__userId__universes",
"followings_get_v2_users__userId__universes",
"get_legacy_develop_v1_user_groups_canmanage",
"develop_get_v1_user_groups_canmanage",
"develop_get_v1_user_groups_canmanagegamesoritems",
"games_get_v2_users__userId__games",
"games_get_v2_users__userId__favorite_games",
"Cloud_ListUserRestrictions",
"Cloud_ListUserRestrictions__Using_Universes",
"Cloud_GetUserRestriction__Using_Universes",
"Cloud_GetUserRestriction__Using_Universes_Places",
"Cloud_UpdateUserRestriction__Using_Universes",
"Cloud_UpdateUserRestriction__Using_Universes_Places",
"Cloud_ListUserRestrictionLogs",
"Cloud_CreateUserNotification",
"Cloud_GetSubscription",
"translationroles_get_v1_game_localization_roles_games__gameId__roles__role__assignees"
]
}
}
]
}