{
  "openapi": "3.0.4",
  "info": {
    "title": "Roblox API",
    "description": "The Roblox API. See https://create.roblox.com/docs/cloud/open-cloud for more details.",
    "version": "1.0.0",
    "x-roblox-extensions-version": "1.1.0"
  },
  "servers": [
    {
      "url": "https://apis.roblox.com"
    }
  ],
  "paths": {
    "/analytics-query-api/v1/universes/{universeId}/dimension-values": {
      "post": {
        "tags": ["Analytics"],
        "summary": "Queries dimension values for a universe.",
        "description": "See the <a href=\"https://create.roblox.com/docs/cloud/guides/analytics\">Analytics guide</a> for more information.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID to query dimension values for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The dimension values request.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DimensionValuesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DimensionValuesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DimensionValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimensionValuesOperationResult"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationPending"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.analytics:read",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/analytics#post_analytics_query_api_v1_universes__universe_id__dimension_values"
        }
      }
    },
    "/analytics-query-api/v1/universes/{universeId}/metrics": {
      "post": {
        "tags": ["Analytics"],
        "summary": "Queries time series metric data for a universe.",
        "description": "See the <a href=\"https://create.roblox.com/docs/cloud/guides/analytics\">Analytics guide</a> for more information.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID to query metrics for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The query request.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QueryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QueryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueryOperationResult"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationPending"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.analytics:read",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/analytics#post_analytics_query_api_v1_universes__universe_id__metrics"
        }
      }
    },
    "/analytics-query-api/v1/universes/{universeId}/operations/dimension-values/{operationId}": {
      "get": {
        "tags": ["Analytics"],
        "summary": "Retrieves the result of a long-running dimension values operation.",
        "description": "See the <a href=\"https://create.roblox.com/docs/cloud/guides/analytics\">Analytics guide</a> for more information.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID the operation belongs to.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "description": "The operation id returned from a prior dimension values request.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DimensionValuesOperationResult"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationPending"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 3000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.analytics:read",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/analytics#get_analytics_query_api_v1_universes__universe_id__operations_dimension_values__operation_id_"
        }
      }
    },
    "/analytics-query-api/v1/universes/{universeId}/operations/metrics/{operationId}": {
      "get": {
        "tags": ["Analytics"],
        "summary": "Retrieves the result of a long-running metrics query operation.",
        "description": "See the <a href=\"https://create.roblox.com/docs/cloud/guides/analytics\">Analytics guide</a> for more information.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID the operation belongs to.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "description": "The operation id returned from a prior query request.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueryOperationResult"
                }
              }
            }
          },
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationPending"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "429": {
            "description": "Too Many Requests",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          },
          "504": {
            "description": "Gateway Timeout",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationError"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 3000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.analytics:read",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/analytics#get_analytics_query_api_v1_universes__universe_id__operations_metrics__operation_id_"
        }
      }
    },
    "/asset-delivery-api/v1/assetId/{assetId}": {
      "get": {
        "tags": ["Assets"],
        "summary": "Retrieves an asset by its ID with OpenCloud auth.",
        "description": "Returns an object containing a `location` property which is a temporary CDN URL for the asset content. All asset types are supported.\r\nYou should request that URL with the `Accept-Encoding: gzip` header and decompress the result if the response is gzipped. If you are using cURL, the `--compressed` flag will automate these steps for you.\r\nThis endpoint is expected to be called with API key authentication through `apis.roblox.com/asset-delivery-api/v1/assetId/{assetId}`.\r\nWhile you are able to make requests to this endpoint with Cookie authentication via `assetdelivery.roblox.com/v1/openCloud/assetId/{assetId}`, we highly discourage use this way.\r\nExpect unannounced removal of this second route in the future.",
        "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",
            "description": "The Accept-Encoding header value specifying compression formats (e.g., \"gzip, deflate\"). Defaults to \"gzip, deflate\" if not provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Roblox-Place-Id",
            "description": "The Roblox-Place-Id header value identifying the place making the request.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "header",
            "name": "AssetType",
            "description": "The AssetType header value specifying the expected asset type.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept",
            "description": "The Accept header value specifying the preferred response content type.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "AssetFormat",
            "description": "The AssetFormat header value specifying the desired asset format. Overridden by robloxAssetFormat if both are provided.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Roblox-AssetFormat",
            "description": "The Roblox-AssetFormat header value specifying the preferred Roblox-specific asset format. Takes precedence over assetFormat.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "skipSigningScripts",
            "description": "Whether to skip script signing for the returned asset. Used for script assets that don't require signing.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "clientInsert",
            "description": "Set to 1 to indicate this is a client insert request.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "query",
            "name": "scriptinsert",
            "description": "Set to 1 to indicate this is a script insert request.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "query",
            "name": "modulePlaceId",
            "description": "The place ID of the module making the request.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "serverplaceid",
            "description": "The server place ID making the request.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "expectedAssetType",
            "description": "The expected asset type as a fallback when assetType header is not provided.",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "in": "query",
            "name": "doNotFallbackToBaselineRepresentation",
            "description": "Whether to prevent fallback to baseline representation when specific content representations are not available.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "contentRepresentationPriorityList",
            "description": "Base64URL-encoded JSON string specifying the priority list of desired content representations (format, version, fidelity).",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "in": "query",
            "name": "accessContext",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usageContext",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 1000
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-asset:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#get_asset_delivery_api_v1_assetId__assetId_"
        }
      }
    },
    "/asset-delivery-api/v1/assetId/{assetId}/version/{versionNumber}": {
      "get": {
        "tags": ["Assets"],
        "summary": "Retrieves an asset by its ID and version number with OpenCloud auth.",
        "description": "Refer to the assetId endpoint for details on usage.\r\nThis endpoint is expected to be called with API key authentication through `apis.roblox.com/asset-delivery-api/v1/assetId/{assetId}/version/{versionNumber}`.\r\nWhile you are able to make requests to this endpoint with Cookie authentication via `assetdelivery.roblox.com/v1/openCloud/assetId/{assetId}/version/{versionNumber}`, we highly discourage use this way.\r\nExpect unannounced removal of this second route in the future.",
        "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 number of the asset to retrieve.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "header",
            "name": "Accept-Encoding",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Roblox-Place-Id",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "header",
            "name": "AssetType",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "AssetFormat",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Roblox-AssetFormat",
            "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",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "contentRepresentationPriorityList",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "in": "query",
            "name": "accessContext",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usageContext",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 1000
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-asset:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#get_asset_delivery_api_v1_assetId__assetId__version__versionNumber_"
        }
      }
    },
    "/asset-permissions-api/v1/assets/permissions": {
      "patch": {
        "tags": ["Assets"],
        "summary": "Grant a subject permission to multiple assets.\n            \nAuthorization is required to grant permissions to the subject and asset IDs in the request.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/BatchGrantPermissionsRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchGrantPermissionsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchGrantPermissionsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BatchGrantPermissionsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchGrantPermissionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetPermissions.ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetPermissions.ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetPermissions.ErrorResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-scopes": [
          {
            "name": "asset-permissions: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/assets#patch_asset_permissions_api_v1_assets_permissions"
        }
      }
    },
    "/assets/v1/assets": {
      "post": {
        "tags": ["Assets"],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-cloud-api-operation-name": "Create Asset",
        "x-roblox-stability": "BETA",
        "summary": "Creates an asset with provided content and metadata.",
        "description": "Creates an asset with provided content and metadata.\n\nYou can't add [SocialLink](#SocialLink) objects when you create an asset. Instead, use [Update Asset](#PATCH-v1-assets-_assetId_).\n\nProvide the [Asset](#Asset), binary asset file path, and [content type](/cloud/guides/usage-assets.md#supported-asset-types-and-limits) in the form data.",
        "operationId": "Assets_CreateAsset",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "request": {
                    "$ref": "#/components/schemas/Asset",
                    "description": "Asset attributes to create."
                  },
                  "fileContent": {
                    "type": "string",
                    "format": "binary",
                    "description": "The binary asset file path and the content type. See [Asset types and limits](/cloud/guides/usage-assets.md#supported-asset-types-and-limits)."
                  }
                },
                "required": ["request", "fileContent"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Operation ID for checking the creation status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCV1.Assets.Operation"
                }
              }
            }
          },
          "400": {
            "description": "Invalid argument. Failed to parse the request or the file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCV1.Assets.Status"
                }
              }
            }
          },
          "401": {
            "description": "The API key is not valid for this operation / You don't have the authorization."
          },
          "500": {
            "description": "Server internal error / Unknown error."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          },
          {
            "name": "asset:write"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "Create Asset",
            "script": "curl --location --request POST 'https://apis.roblox.com/assets/v1/assets' \\\n--header 'x-api-key: {apiKey}' \\\n--form 'request=\"{ \n  \\\"assetType\\\": \\\"Model\\\",  \n  \\\"displayName\\\": \\\"Name\\\", \n  \\\"description\\\": \\\"This is a description\\\", \n  \\\"creationContext\\\": { \n    \\\"creator\\\": { \n      \\\"userId\\\": \\\"${userId}\\\" \n    } \n  } \n}\"' \\\n--form 'fileContent=@\"/filepath/model.fbx\";type=model/fbx' \n"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 120
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 120
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 120
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_CreateAsset"
        }
      }
    },
    "/assets/v1/assets/{assetId}": {
      "get": {
        "tags": ["Assets"],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-cloud-api-operation-name": "Get Asset",
        "x-roblox-stability": "BETA",
        "summary": "Retrieve specific asset metadata. Include the `readMask` parameter for additional asset metadata.",
        "description": "Retrieve specific asset metadata.",
        "operationId": "Assets_GetAsset",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "The unique identifier of the asset.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "readMask",
            "in": "query",
            "description": "Asset metadata fields to retrieve, including the description, display name, icon, social links, and previews. Examples: `description%2CdisplayName`, `previews%2CtwitchSocialLink`.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Asset resource retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Asset"
                }
              }
            }
          },
          "400": {
            "description": "Malformed request, likely due to an invalid read mask."
          },
          "401": {
            "description": "The API key is not valid for this operation / You don't have the authorization."
          },
          "403": {
            "description": "Doesn't have the required permission."
          },
          "404": {
            "description": "Asset doesn't exist."
          },
          "500": {
            "description": "Server internal error / Unknown error."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "Get Asset without readMask",
            "script": "curl --location --request GET 'https://apis.roblox.com/assets/v1/assets/{assetId}' \\\n--header 'x-api-key: {apiKey}'"
          },
          {
            "language": "Get Asset with readMask",
            "script": "curl --location --request GET 'https://apis.roblox.com/assets/v1/assets/{assetId}?readMask={read_mask}' \\\n--header 'x-api-key: {apiKey}'"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 120
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 120
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 120
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_GetAsset"
        }
      },
      "patch": {
        "tags": ["Assets"],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-cloud-api-operation-name": "Update Asset",
        "x-roblox-stability": "BETA",
        "summary": "Updates an asset with provided content and metadata.",
        "description": "Updates an asset with provided content and metadata, including the description, display name, icon, social links, and previews. Currently can only update the content body for **Models**. Icons and Previews must be **Image** assets. Icons must have square dimensions.\n\nProvide the [Asset](#Asset), binary asset file path, and [content type](/cloud/guides/usage-assets.md#supported-asset-types-and-limits) in the form data.",
        "operationId": "Assets_UpdateAsset",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "The unique identifier of the asset.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updateMask",
            "in": "query",
            "required": false,
            "description": "Asset metadata fields to update, including the description, display name, icon, and previews. Examples: `description%2CdisplayName`, `previews%2CtwitchSocialLink`.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "request": {
                    "$ref": "#/components/schemas/Asset",
                    "description": "Asset attributes to update."
                  },
                  "fileContent": {
                    "type": "string",
                    "format": "binary",
                    "description": "The binary asset file path and the content type. See [Asset types and limits](/cloud/guides/usage-assets.md#supported-asset-types-and-limits)."
                  }
                },
                "required": ["request", "fileContent"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns the Operation ID for checking the update status / Returns the updated metadata fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCV1.Assets.Operation",
                  "example": "{\"previews\": [\n  {\"asset\": \"assets/123\", \"altText\": \"preview 1\"},\n  {\"asset\": \"assets/456\", \"altText\": \"preview 2\"}\n]}"
                }
              }
            }
          },
          "400": {
            "description": "Invalid argument. Failed to parse the request or the file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCV1.Assets.Status"
                }
              }
            }
          },
          "401": {
            "description": "The API key is not valid for this operation / You don't have the authorization."
          },
          "500": {
            "description": "Server internal error / Unknown error."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          },
          {
            "name": "asset:write"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "Update Content Only and Create a New Version",
            "script": "curl --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{assetId}' \\\n--header 'x-api-key: {apiKey}' \\\n--form 'request=\"{\\\"assetId\\\": {assetId} }\"' \\\n--form 'fileContent=\"@\\\"{file-path}\\\"\"'"
          },
          {
            "language": "Update Content and Metadata",
            "script": "curl --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{assetId}?updateMask=description%2CdisplayName' \\\n--header 'x-api-key: {apiKey}' \\\n--form 'request=\"{\n    \\\"assetType\\\": \\\"{assetType}\\\",\n    \\\"assetId\\\": {assetId},\n    \\\"displayName\\\": \\\"{new display name}\\\",\n    \\\"description\\\": \\\"{new description}\\\",    \n    \\\"creationContext\\\": { \n        \\\"creator\\\": {\n            \\\"userId\\\": {userId}\n        },\n        \\\"expectedPrice\\\":{expectedPrice}\n    },\n}\"' \\\n--form 'fileContent=@\\\"{file-path}\\\"'"
          },
          {
            "language": "Update a List of Previews",
            "script": "curl --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{assetId}?updateMask=previews' \\\n--header 'x-api-key: {apiKey}' \\\n--form 'request=\"{\\\"assetId\\\": \\\"{assetId}\\\", \\\"previews\\\": [{\\\"asset\\\": \\\"assets/123\\\", \\\"altText\\\": \\\"Your alt text.\\\"}]}\"'"
          },
          {
            "language": "Update Social Links",
            "script": "curl --location --request PATCH 'https://apis.roblox.com/assets/v1/assets/{assetId}?updateMask=twitchSocialLink%2CgithubSocialLink' \\\n--header 'x-api-key: {apiKey}' \\\n--form 'request=\"{\\\"assetId\\\": \\\"{assetId}\\\", \\\"twitchSocialLink\\\": {\\\"title\\\": \\\"Optional title\\\", \\\"uri\\\": \\\"https://twitch.tv/your-channel\\\"}, \\\"githubSocialLink\\\": {\\\"title\\\": \\\"Optional title\\\", \\\"uri\\\": \\\"https://github.com/your-repo\\\"}}\"'"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 120
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 120
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 120
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_UpdateAsset"
        }
      }
    },
    "/assets/v1/assets/{assetId}/versions": {
      "get": {
        "tags": ["Assets"],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-cloud-api-operation-name": "List Asset Versions",
        "x-roblox-stability": "BETA",
        "summary": "List Asset Versions of an Asset",
        "description": "List all versions of a specific asset, with optional pagination.",
        "operationId": "listAssetVersions",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "The unique identifier of the asset.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "Specifies the number of asset versions to include in the response. Valid values range from 1 to 50 (inclusive). Defaults to 8 when not provided.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A token for pagination. The value is obtained from a previous request and allows for retrieving the next page of asset versions.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Asset versions listed successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AssetVersion"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid parameters."
          },
          "403": {
            "description": "Forbidden - API key without Read scope or user doesn't have access."
          },
          "404": {
            "description": "Asset not found."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "List Asset Versions",
            "script": "curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}/versions?pageToken=&maxPageSize=' \\\n--header 'x-api-key: {apiKey}'"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#listAssetVersions"
        }
      }
    },
    "/assets/v1/assets/{assetId}/versions/{versionNumber}": {
      "get": {
        "tags": ["Assets"],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-cloud-api-operation-name": "Get Asset Version",
        "x-roblox-stability": "BETA",
        "summary": "Get Asset Version",
        "description": "Retrieve a specific asset version by the asset ID and the version number.",
        "operationId": "Assets_GetAssetVersion",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "The unique identifier of the asset.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "versionNumber",
            "in": "path",
            "description": "The version number.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Asset version retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetVersion"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden - API key without Read scope or user doesn't have access."
          },
          "404": {
            "description": "Asset or Asset Version not found."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "Get Asset Version",
            "script": "curl --location 'https://apis.roblox.com/assets/v1/assets/{assetId}/versions/{versionNumber}' \\\n--header 'x-api-key: {apiKey}'"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_GetAssetVersion"
        }
      }
    },
    "/assets/v1/assets/{assetId}/versions:rollback": {
      "post": {
        "tags": ["Assets"],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-cloud-api-operation-name": "Rollback Asset Version",
        "x-roblox-stability": "BETA",
        "summary": "Rollback an asset to a previous version.",
        "description": "Rollback an asset to a specific previous version.\n\n Provide the asset version path in the form data.",
        "operationId": "Assets_RollbackAssetVersion",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "The unique identifier of the asset.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "assetVersion": {
                    "type": "string",
                    "description": "The asset version path in the format of `assets/{assetId}/versions/{versionNumber}`."
                  }
                },
                "required": ["assetVersion"]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Asset rolled back successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetVersion"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid request body."
          },
          "403": {
            "description": "Forbidden - API key without Write scope or user doesn't have access."
          },
          "404": {
            "description": "Asset or Asset Version not found."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          },
          {
            "name": "asset:write"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "Rollback Asset Versions",
            "script": "curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}/versions:rollback' \\\n--header 'x-api-key: {apiKey}' \\\n--header 'Content-Type: application/json' \\\n--data '{\\\"assetVersion\\\":\\\"assets/{assetId}/versions/{versionNumber}\\\"}'"
          }
        ],
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_RollbackAssetVersion"
        }
      }
    },
    "/assets/v1/assets/{assetId}:archive": {
      "post": {
        "tags": ["Assets"],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-cloud-api-operation-name": "Archive Asset",
        "x-roblox-stability": "BETA",
        "summary": "Archives the asset.",
        "description": "Archives the asset. Archived assets disappear from the website and are no longer usable or visible in Roblox experiences, but you can [restore](#POST-v1-assets-{assetId}:restore) them.",
        "operationId": "Assets_ArchiveAsset",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "The unique identifier of the asset.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Asset archived succesfully successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Asset"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid request."
          },
          "403": {
            "description": "Forbidden - API key without Write scope or user doesn't have access."
          },
          "404": {
            "description": "Asset not found."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          },
          {
            "name": "asset:write"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "Archive Asset",
            "script": "curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}:archive' \\\n--header 'x-api-key: {apiKey}' \\\n--header 'Content-Type: application/json'"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_ArchiveAsset"
        }
      }
    },
    "/assets/v1/assets/{assetId}:restore": {
      "post": {
        "tags": ["Assets"],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-cloud-api-operation-name": "Restore Asset",
        "x-roblox-stability": "BETA",
        "summary": "Restores an archived asset.",
        "description": "Restores an archived asset.",
        "operationId": "Assets_RestoreAsset",
        "parameters": [
          {
            "name": "assetId",
            "in": "path",
            "description": "The unique identifier of the asset.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Asset restored successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Asset"
                }
              }
            }
          },
          "400": {
            "description": "Bad request - invalid request."
          },
          "403": {
            "description": "Forbidden - API key without Write scope or user doesn't have access."
          },
          "404": {
            "description": "Asset not found."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          },
          {
            "name": "asset:write"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "Restore Asset",
            "script": "curl --location 'https://apis.roblox.com/assets/v1/assets/{assetid}:restore' \\\n--header 'x-api-key: {apiKey}' \\\n--header 'Content-Type: application/json'"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_RestoreAsset"
        }
      }
    },
    "/assets/v1/operations/{operationId}": {
      "get": {
        "tags": ["Assets"],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-cloud-api-operation-name": "Get Operation",
        "x-roblox-stability": "BETA",
        "summary": "Get the result of an asset creation or update.",
        "description": "Get the result of an asset creation or update using the returned Operation ID. Requires **Read** for the API key permission and **asset:read** for OAuth 2.0 apps.",
        "operationId": "Assets_GetOperation",
        "parameters": [
          {
            "name": "operationId",
            "in": "path",
            "description": "The unique identifier of the operation.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCV1.Assets.Operation"
                }
              }
            }
          },
          "400": {
            "description": "Invalid argument. Failed to parse the request or the file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCV1.Assets.Status"
                }
              }
            }
          },
          "401": {
            "description": "The API key is not valid for this operation / You don't have the authorization."
          },
          "500": {
            "description": "Server internal error / Unknown error."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "Get Operation",
            "script": "curl --location 'https://apis.roblox.com/assets/v1/operations/{operationId}' \\\n--header 'x-api-key: {apiKey}'\n"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 300
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 300
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_GetOperation"
        }
      }
    },
    "/cloud/v2/creator-store-products": {
      "post": {
        "tags": ["Creator Store"],
        "summary": "Create Creator Store Product",
        "description": "Add a Creator Store product. Only use this method if your product has never\nbeen distributed on the Creator Store; otherwise, use the `PATCH` method to\nupdate the product.",
        "operationId": "Cloud_CreateCreatorStoreProduct",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatorStoreProduct"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatorStoreProduct"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "creator-store-product:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Monetization",
          "methodProperties": {
            "scopes": ["creator-store-product:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/CreatorStoreProduct",
            "name": "CreatorStoreProduct"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 30
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/creator-store#Cloud_CreateCreatorStoreProduct"
        }
      }
    },
    "/cloud/v2/creator-store-products/{creator_store_product_id}": {
      "get": {
        "tags": ["Creator Store"],
        "summary": "Get Creator Store Product",
        "description": "Get a Creator Store product.",
        "operationId": "Cloud_GetCreatorStoreProduct",
        "parameters": [
          {
            "name": "creator_store_product_id",
            "in": "path",
            "description": "The creator-store-product ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatorStoreProduct"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "creator-store-product:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Monetization",
          "methodProperties": {
            "scopes": ["creator-store-product:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/CreatorStoreProduct",
            "name": "CreatorStoreProduct"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 30
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/creator-store#Cloud_GetCreatorStoreProduct"
        }
      },
      "patch": {
        "tags": ["Creator Store"],
        "summary": "Update Creator Store Product",
        "description": "Update a Creator Store product.",
        "operationId": "Cloud_UpdateCreatorStoreProduct",
        "parameters": [
          {
            "name": "creator_store_product_id",
            "in": "path",
            "description": "The creator-store-product ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updateMask",
            "in": "query",
            "description": "The list of fields to update.",
            "schema": {
              "type": "string",
              "format": "field-mask"
            }
          },
          {
            "name": "allowMissing",
            "in": "query",
            "description": "If set to true, and the creator store product is not found, a creator store\nproduct is created. In this situation, `update_mask` is ignored.",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatorStoreProduct"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatorStoreProduct"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "creator-store-product:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Monetization",
          "methodProperties": {
            "scopes": ["creator-store-product:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/CreatorStoreProduct",
            "name": "CreatorStoreProduct"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 30
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/creator-store#Cloud_UpdateCreatorStoreProduct"
        }
      }
    },
    "/cloud/v2/groups/{group_id}": {
      "get": {
        "tags": ["Groups"],
        "summary": "Get Group",
        "description": "Gets the specified group.",
        "operationId": "Cloud_GetGroup",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Group"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": []
          },
          "resource": {
            "$ref": "#/components/schemas/Group",
            "name": "Group"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_GetGroup"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/forum-categories": {
      "get": {
        "tags": ["Groups"],
        "summary": "List Group Forum Categories",
        "description": "Lists forum categories in the group. Supports filtering.",
        "operationId": "Cloud_ListGroupForumCategories",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of group forum categories to return. The service might\nreturn fewer than this value. If unspecified, at most 10 group forum\ncategories are returned. The maximum value is 10 and higher values are set\nto 10.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 10, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nFiltering conforms to Common Expression Language (CEL). Only the boolean\nfield `archived` and `==` operator are supported. If `archived=false`,\narchived categories are not returned. The default value is `false`.\nExample: `\"filter=archived==true\"`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupForumCategoriesResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-scopes": [
          {
            "name": "group-forum:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["group-forum:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/GroupForumCategory",
            "name": "GroupForumCategory"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupForumCategories"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/forum-categories/{forum_category_id}/posts": {
      "get": {
        "tags": ["Groups"],
        "summary": "List Group Forum Posts",
        "description": "Lists forum posts in the group's forum category. Supports filtering.",
        "operationId": "Cloud_ListGroupForumPosts",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "forum_category_id",
            "in": "path",
            "description": "The forum-category ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of group forum posts to return. The service might return\nfewer than this value. If unspecified, at most 10 group forum posts are\nreturned. The maximum value is 100 and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nFiltering conforms to Common Expression Language (CEL). Only the query\n`filter=pinned==true` is supported, where only pinned posts are returned.\n`filter=pinned==false`is not supported.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "The view in which to retrieve the group forum post.\n\nSupports FULL and FULL_WITH_FIRST_COMMENT.\n\nDefaults to FULL.\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | VIEW_UNSPECIFIED | The group forum post view is not specified; the default will be used. |\n  | FULL | Includes all fields but does not dereference `first_comment`. Only the `path` field is populated. |\n  | FULL_WITH_FIRST_COMMENT | Includes all fields and also fully populates `first_comment`. The default view. |",
            "schema": {
              "example": "VIEW_UNSPECIFIED",
              "enum": ["VIEW_UNSPECIFIED", "FULL", "FULL_WITH_FIRST_COMMENT"],
              "type": "string",
              "format": "enum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupForumPostsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-scopes": [
          {
            "name": "group-forum:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["group-forum:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/GroupForumPost",
            "name": "GroupForumPost"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupForumPosts"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/forum-categories/{forum_category_id}/posts/{post_id}/comments": {
      "get": {
        "tags": ["Groups"],
        "summary": "List Group Forum Comments",
        "description": "Lists forum comments on a group's forum post. Supports filtering.",
        "operationId": "Cloud_ListGroupForumComments",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "forum_category_id",
            "in": "path",
            "description": "The forum-category ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "post_id",
            "in": "path",
            "description": "The post ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of group forum comments to return. The service might\nreturn fewer than this value. If unspecified, at most 10 group forum\ncomments are returned. The maximum value is 100 and higher values are set\nto 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nFiltering conforms to Common Expression Language (CEL). Only the string\nfield `repliesToCommentId` and the `==` operator are supported.\nIf `repliesToCommentId` is specified, only comments that respond to the\ncomment are returned. The default value is `''`. If\n`repliesToCommentId=''`, only comments responding directly to the post are\nreturned. Example:\n`\"filter=repliesToCommentId==01234567-89ab-cdef-0123-456789abcdef\"`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupForumCommentsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-scopes": [
          {
            "name": "group-forum:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["group-forum:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/GroupForumComment",
            "name": "GroupForumComment"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupForumComments"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/join-requests": {
      "get": {
        "tags": ["Groups"],
        "summary": "List Group Join Requests",
        "description": "List join requests under a group. Supports filtering.",
        "operationId": "Cloud_ListGroupJoinRequests",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of group join requests to return. The service might\nreturn fewer than this value. If unspecified, at most 10 group join\nrequests are returned. The maximum value is 20 and higher values are set\nto 20.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 20, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nFiltering conforms to Common Expression Language (CEL). Only the `user`\nfield and `==` operator are supported.\n\n\nExample: `\"user == 'users/156'\"`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupJoinRequestsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "group:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["group:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/GroupJoinRequest",
            "name": "GroupJoinRequest"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 300
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 90
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupJoinRequests"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/join-requests/{join_request_id}:accept": {
      "post": {
        "tags": ["Groups"],
        "summary": "Accept Group Join Request",
        "description": "Accepts a join request.",
        "operationId": "Cloud_AcceptGroupJoinRequest",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "join_request_id",
            "in": "path",
            "description": "The join-request ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AcceptGroupJoinRequestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {}
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "group:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["group:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/GroupJoinRequest",
            "name": "GroupJoinRequest"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 90
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_AcceptGroupJoinRequest"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/join-requests/{join_request_id}:decline": {
      "post": {
        "tags": ["Groups"],
        "summary": "Decline Group Join Request",
        "description": "Declines a join request.",
        "operationId": "Cloud_DeclineGroupJoinRequest",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "join_request_id",
            "in": "path",
            "description": "The join-request ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeclineGroupJoinRequestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {}
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "group:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["group:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/GroupJoinRequest",
            "name": "GroupJoinRequest"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 90
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_DeclineGroupJoinRequest"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/memberships": {
      "get": {
        "tags": ["Groups"],
        "summary": "List Group Memberships",
        "description": "List group members in a group. Supports filtering.",
        "operationId": "Cloud_ListGroupMemberships",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of group memberships to return. The service might return\nfewer than this value. If unspecified, at most 10 group memberships are\nreturned. The maximum value is 100 and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nSee the\n[filtering](/cloud/reference/patterns#list-group-memberships)\ndocumentation for more information.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupMembershipsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": []
          },
          "resource": {
            "$ref": "#/components/schemas/GroupMembership",
            "name": "GroupMembership"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 300
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 90
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupMemberships"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/memberships/{membership_id}": {
      "patch": {
        "tags": ["Groups"],
        "summary": "Update Group Membership",
        "description": "**Deprecated.** Use AssignGroupRole and UnassignGroupRole instead.\nUpdates the group membership for a particular group member. This action\nrequires the requester to be able to manage lower ranked members. Guest or\nOwner ranks cannot be assigned, and a requester cannot change their own\nrank.",
        "operationId": "Cloud_UpdateGroupMembership",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "membership_id",
            "in": "path",
            "description": "The membership ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GroupMembership"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupMembership"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "group:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["group:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/GroupMembership",
            "name": "GroupMembership"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 300
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 90
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_UpdateGroupMembership"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/memberships/{membership_id}:assignRole": {
      "post": {
        "tags": ["Groups"],
        "summary": "Assign Role Group Membership",
        "description": "Assigns a specific role to a user within a group. If the user already\nholds the specified role, no action is taken.",
        "operationId": "Cloud_AssignRoleGroupMembership",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "membership_id",
            "in": "path",
            "description": "The membership ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssignRoleGroupMembershipRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupMembership"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "group:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["group:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/GroupMembership",
            "name": "GroupMembership"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 300
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 90
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_AssignRoleGroupMembership"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/memberships/{membership_id}:unassignRole": {
      "post": {
        "tags": ["Groups"],
        "summary": "Unassign Role Group Membership",
        "description": "Unassigns a specific role from a user within a group. If the user does\nnot hold the specified role, no action is taken.",
        "operationId": "Cloud_UnassignRoleGroupMembership",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "membership_id",
            "in": "path",
            "description": "The membership ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UnassignRoleGroupMembershipRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupMembership"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "group:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["group:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/GroupMembership",
            "name": "GroupMembership"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 300
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 90
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_UnassignRoleGroupMembership"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/roles": {
      "get": {
        "tags": ["Groups"],
        "summary": "List Group Roles",
        "description": "List roles in a group.\n\nThe permissions field for roles is viewable based on the requester's access\nand scopes.\n\nPermissions for the guest role are always visible - a scope is not needed.\n\nIf the requester is a member of the group and has the `group:read` scope,\npermissions in their role are visible.\n\nIf the requester is the owner of the group and has the `group:read` scope,\npermissions in all roles are visible.",
        "operationId": "Cloud_ListGroupRoles",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of group roles to return. The service might return fewer\nthan this value. If unspecified, at most 10 group roles are returned. The\nmaximum value is 20 and higher values are set to 20.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 20, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGroupRolesResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "description": "Required to view permissions in non-guest roles.",
            "name": "group:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": []
          },
          "resource": {
            "$ref": "#/components/schemas/GroupRole",
            "name": "GroupRole"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 300
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 90
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupRoles"
        }
      }
    },
    "/cloud/v2/groups/{group_id}/roles/{role_id}": {
      "get": {
        "tags": ["Groups"],
        "summary": "Get Group Role",
        "description": "Get the group role",
        "operationId": "Cloud_GetGroupRole",
        "parameters": [
          {
            "name": "group_id",
            "in": "path",
            "description": "The group ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "role_id",
            "in": "path",
            "description": "The role ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupRole"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "description": "Required to view permissions in non-guest roles.",
            "name": "group:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": []
          },
          "resource": {
            "$ref": "#/components/schemas/GroupRole",
            "name": "GroupRole"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 300
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 90
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_GetGroupRole"
        }
      }
    },
    "/cloud/v2/universes/{universeId}/secrets": {
      "get": {
        "tags": ["Universes"],
        "summary": "List Secrets",
        "description": "Lists all secrets defined for a universe.\nSecret content is not returned for security reasons - only metadata such as ID, domain, creation and update timestamps are included.\n\nOnly the owner of the universe can list secrets. For group-owned universes, only the group owner or authorized\nmembers can list secrets.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of secrets to return per page (1-500, default 10)",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Pagination cursor from previous response",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretPaginatedList"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.secret:read",
            "description": "Required"
          }
        ],
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 120
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 120
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#get_cloud_v2_universes__universeId__secrets"
        }
      },
      "post": {
        "tags": ["Universes"],
        "summary": "Create Secret",
        "description": "Creates a new secret. A maximum of 500 secrets per universe is allowed.\n            \nOnly the owner of the universe can create secrets. For group-owned universes, only the group owner or authorized\nmembers can create secrets.\n            \nTo encrypt the secret:\n1. Get the public key using the Get Public Key endpoint\n2. Encrypt your secret using LibSodium sealed box\n3. Base64 encode the encrypted content\n\nInclude the key_id from the public key response in the request.\n\nFor an example, see the [Secrets store guide](https://create.roblox.com/docs/cloud/guides/secrets-store).",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "description": "The secret to create with encrypted content",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Secret"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Secret"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.secret:write",
            "description": "Required"
          }
        ],
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 120
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 120
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#post_cloud_v2_universes__universeId__secrets"
        }
      }
    },
    "/cloud/v2/universes/{universeId}/secrets/public-key": {
      "get": {
        "tags": ["Universes"],
        "summary": "Get Public Key",
        "description": "Retrieves the public key for a universe. You need this key to encrypt secret content \nbefore sending it to Roblox.\n\nOnly the owner of the universe can retrieve the public key. For group-owned universes, only the group owner or\nauthorized members can retrieve the public key.\n\nThe secret id field is static and always returns \"public-key\".\n\nThe returned public key in the secret field is universe-specific and derived from a master key using the universe ID.\nUse this key with LibSodium sealed box encryption to encrypt your secret content before \ncreating or updating secrets.\n\nInclude the key_id from the public key response in the request to create or update a secret.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Secret"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.secret:read",
            "description": "Required"
          }
        ],
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 120
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 120
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#get_cloud_v2_universes__universeId__secrets_public_key"
        }
      }
    },
    "/cloud/v2/universes/{universeId}/secrets/{secretId}": {
      "delete": {
        "tags": ["Universes"],
        "summary": "Delete Secret",
        "description": "Permanently deletes a secret from a universe.\n\nOnly the owner of the universe can delete secrets. For group-owned universes, only the group owner or authorized\nmembers can delete secrets.\n\nThis operation is irreversible. Make sure you no longer need the secret before deleting it.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "secretId",
            "in": "path",
            "description": "The ID of the secret to delete",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.secret:write",
            "description": "Required"
          }
        ],
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 120
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 120
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#delete_cloud_v2_universes__universeId__secrets__secretId_"
        }
      },
      "patch": {
        "tags": ["Universes"],
        "summary": "Update Secret",
        "description": "Updates an existing secret.\n\nOnly the owner of the universe can update secrets. For group-owned universes, only the group owner or authorized\nmembers can update secrets.\n\nOnly the secret content, key_id, and domain can be updated - the secret ID cannot be changed.\n\nTo encrypt the updated secret:\n1. Get the current public key using the GetPublicKey endpoint\n2. Encrypt your new secret content using LibSodium sealed box\n3. Base64 encode the encrypted content\n\nInclude the key_id from the public key response in the request.\n\nFor an example, see the [Secrets store guide](https://create.roblox.com/docs/cloud/guides/secrets-store).",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "secretId",
            "in": "path",
            "description": "The ID of the secret to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The updated secret data with encrypted content",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Secret"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Secret"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretsStoreService.ProblemDetails"
                }
              }
            }
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.secret:write",
            "description": "Required"
          }
        ],
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 120
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 120
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#patch_cloud_v2_universes__universeId__secrets__secretId_"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}": {
      "get": {
        "tags": ["Universes"],
        "summary": "Get Universe",
        "description": "Gets the specified universe.",
        "operationId": "Cloud_GetUniverse",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Universe"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": []
          },
          "resource": {
            "$ref": "#/components/schemas/Universe",
            "name": "Universe"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#Cloud_GetUniverse"
        }
      },
      "patch": {
        "tags": ["Universes"],
        "summary": "Update Universe",
        "description": "Updates the specified universe.\n\nThis method is guaranteed to return all updated fields.\nThis method may additionally return the full resource.",
        "operationId": "Cloud_UpdateUniverse",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updateMask",
            "in": "query",
            "description": "The list of fields to update.",
            "schema": {
              "type": "string",
              "format": "field-mask"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Universe"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Universe"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "universe:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": ["universe:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/Universe",
            "name": "Universe"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#Cloud_UpdateUniverse"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List Data Stores",
        "description": "Returns a list of data stores.\n\nData stores scheduled for permanent deletion are omitted from the results\nby default (or when `showDeleted` is set to `false`). When this is the\ncase, the operation will check up to 512 data stores. If all checked data\nstores are deleted, it will return an empty list with a page token to\ncontinue iteration.",
        "operationId": "Cloud_ListDataStores",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of data stores to return. The service might return fewer\nthan this value. If unspecified, at most 10 data stores are returned. The\nmaximum value is 100 and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nThe `filter` field supports a very small subset of CEL:\n\n* Only the `id` field is supported.\n* Only the `startsWith` function is available; no other operators nor\n  built-ins are supported.\n\nExample filter: `id.startsWith(\"foo\")`",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "showDeleted",
            "in": "query",
            "description": "If true, resources marked for pending deletion will be included in the\nresults.",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDataStoresResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.control:list"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.control:list"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStore",
            "name": "DataStore"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStores"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}": {
      "delete": {
        "tags": ["Data and memory stores"],
        "summary": "Delete Data Store",
        "description": "Schedules the specified data store for permanent deletion.\n\nThis operation assigns the data store an expiry time 30 days in the future,\nat which point permanent deletion begins. To cancel, use the\n`UndeleteDataStore` operation before the data store's expiry time.\n\nPermanent deletion consists of deleting all of the entries in the data\nstore and then the data store resource itself. The data store is no longer\nreturned by the `ListDataStores` Open Cloud endpoint or\n`ListDataStoresAsync` Luau API, and you can reuse the data store's name.\n\nThe duration of the permanent deletion process depends on the number of\nentries in the data store. However, you can expect a data store with 1\nmillion or fewer entries to be permanently deleted within 3 days.\n\nData stores scheduled for permanent deletion are returned by the\n`ListDataStores` Open Cloud endpoint when the query parameter `showDeleted`\nis set to `true`. In the return value, each data store will have a\n`DELETED` state and an `expireTime` field.\n\nData stores scheduled for permanent deletion are immediately made\ninaccessible, meaning attempts to read or write to their entries will fail.\n\nNote: Due to caching in the backend service, attempts to read from or write\nto entries in these data stores can continue to succeed for a limited time\nafter the deletion:\n* `GetDataStoreEntry`: can succeed for up to 24 hours.\n* All other endpoints: can succeed for several minutes.\n\nIf the data store is already in a `DELETED` state, this operation is a\nno-op, and the data store is returned as-is.",
        "operationId": "Cloud_DeleteDataStore",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStore"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.control:delete"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.control:delete"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStore",
            "name": "DataStore"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_DeleteDataStore"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List Data Store Entries",
        "description": "Returns a list of entries from a data store.\n\nOnly the `path` and `id` fields are populated; use `GetDataStoreEntry`\nto retrieve other fields.\n\nSpecify the wildcard scope (`-`) to list entries from all scopes.",
        "operationId": "Cloud_ListDataStoreEntries__Using_Universes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of data store entries to return. The service might\nreturn fewer than this value. If unspecified, at most 10 data store entries\nare returned. The maximum value is 256 and higher values are set to 256.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 256, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nThe `filter` field supports a very small subset of CEL:\n\n* Only the `id` field is supported.\n* Only the `startsWith` function is available; no other operators nor\n  built-ins are supported.\n\nExample filter: `id.startsWith(\"foo\")`",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "showDeleted",
            "in": "query",
            "description": "If true, resources marked for pending deletion will be included in the\nresults.",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDataStoreEntriesResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:list"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:list"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStoreEntries__Using_Universes"
        }
      },
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Create Data Store Entry",
        "description": "Creates an entry with the provided ID and value.\n\nReturns a 400 Bad Request if the entry exists.",
        "operationId": "Cloud_CreateDataStoreEntry__Using_Universes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "The ID to use for the data store entry, which will become the final\ncomponent of the data store entry's resource path.\n\nThis value should be a 1-50 character string. We strongly recommend using\nonly lowercase letters, numeric digits, and hyphens.",
            "schema": {
              "type": "string"
            },
            "examples": {
              "id": {
                "description": "a 1-50 character string. We strongly recommend using only lowercase letters, numeric digits, and hyphens.",
                "value": "my-entry"
              }
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DataStoreEntry"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:create"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:create"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_CreateDataStoreEntry__Using_Universes"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}": {
      "delete": {
        "tags": ["Data and memory stores"],
        "summary": "Delete Data Store Entry",
        "description": "Marks the specified entry for deletion.\n\nEntries are not be deleted immediately; instead, the `state` field will\nbe set to `DELETED`. Permanent deletion occurs after 30 days.\n\nOn success, returns 200 OK. If the entry doesn't exist, returns\n404 Not Found.",
        "operationId": "Cloud_DeleteDataStoreEntry__Using_Universes_DataStores",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {}
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:delete"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:delete"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_DeleteDataStoreEntry__Using_Universes_DataStores"
        }
      },
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "Get Data Store Entry",
        "description": "Gets the specified entry.\n\nTo get the entry at a specific revision, add `@<revisionId>` to the end of\nthe path.\n\nFor example, to get `my-entry` at the revision ID\n`08DC3D3F43F9FCC1.0000000001.08DC3D3F43F9FCC1.01`, use the path\n`/cloud/v2/universes/1234/data-stores/5678/entries/my-entry@08DC3D3F43F9FCC1.0000000001.08DC3D3F43F9FCC1.01`.\n\nIf your entry ID contains one or more `@` characters, and you want to get\nthe latest version rather than at any specific revision, append the special\nrevision ID `@latest` to the end of the path. Otherwise, the segment of the\nentry ID after the last `@` will be interpreted as a revision ID.\n\nFor example, to get the latest revision of `my-entry`, use the path\n`/cloud/v2/universes/1234/data-stores/5678/entries/my@entry@latest`.\n\nTo get the entry that was current at a specific time, add\n`@latest:<timestamp>` to the end of the path, where `<timestamp>` is\nRFC-3339 formatted. The given timestamp must be after\nthe Unix epoch (1/1/1970) and not more than ten minutes in the future.\n\nFor example, to get the revision of `my-entry` that was current on\n12/2/2024 at 06:00 UTC, use the path\n`/cloud/v2/universes/1234/data-stores/5678/entries/my-entry@latest:2024-12-02T06:00:00Z`.",
        "operationId": "Cloud_GetDataStoreEntry__Using_Universes_DataStores",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetDataStoreEntry__Using_Universes_DataStores"
        }
      },
      "patch": {
        "tags": ["Data and memory stores"],
        "summary": "Update Data Store Entry",
        "description": "Updates the value, attributes, and users of an entry.\n\nUpdating specific revisions of the entry is **unsupported**. If you specify\na revision ID in the path and `allow_missing` is `true`, the update request\nwill instead create a new entry with the `@<revisionId>` suffix as part of\nthe key.\n\nPartial update is **unsupported**. If attributes or users are not\nprovided when updating the value, they will be cleared. Value must always\nbe provided when updating an entry.",
        "operationId": "Cloud_UpdateDataStoreEntry__Using_Universes_DataStores",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "allowMissing",
            "in": "query",
            "description": "If set to true, and the data store entry is not found, a data store entry\nis created.",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DataStoreEntry"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:update"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:update"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_UpdateDataStoreEntry__Using_Universes_DataStores"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}:increment": {
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Increment Data Store Entry",
        "description": "Increments the value of the specified entry. Both the existing value and\nthe increment amount must be integers.\n\nIf the entry doesn't exist, creates an entry with the specified value.\n\nIncrementing specific revisions of the entry is **unsupported**. If you\nspecify a revision ID in the path, the increment request will create a new\nentry with the `@<revisionId>` suffix as part of the key.\n\nKnown issue: the value may be incremented past the valid range of  values.\nWhen this happens, the returned value will be clamped to the valid range,\nbut the backend may persist the original value. This behavior is maintained\nfor backwards compatibility reasons, but may change in a future version of\nthis API.",
        "operationId": "Cloud_IncrementDataStoreEntry__Using_Universes_DataStores",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IncrementDataStoreEntryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:create"
          },
          {
            "name": "universe-datastores.objects:update"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": [
              "universe-datastores.objects:create",
              "universe-datastores.objects:update"
            ]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_IncrementDataStoreEntry__Using_Universes_DataStores"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}:listRevisions": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List Data Store Entry Revisions",
        "description": "List revisions of the data store entry.\n\nThis method returns partial data store entries.\n\nIn particular, only the `path`, `id`, `createTime`, `revisionCreateTime`,\n`revisionId`, `etag`, and `state` fields are populated. Both the `path` and\n`id` fields will have an `@<version>` suffix.\n\nIn order to get the full entry at a revision, you can use the provided\n`path` field with the `GetDataStoreEntry` method, i.e. `GET\n/cloud/v2/universes/1234/data-stores/5678/entries/my-entry@<version>`.",
        "operationId": "Cloud_ListDataStoreEntryRevisions__Using_Universes_DataStores",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of revisions to return per page.\n\nThe service might return fewer than the maximum number of revisions.\nIf unspecified, at most 10 revisions are returned.\nThe maximum value is 100 values and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call\nmust match the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Supports the following subset of CEL:\n\n* Only the `&&`, `<=`, and `>=` operators are supported.\n* Only the `revision_create_time` field is supported.\n\nFor example:\n\n  `\"revision_create_time >= 2000-01-01T00:00:00Z && revision_create_time <=\n  2001-01-01T00:00:00Z\"`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDataStoreEntryRevisionsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.versions:list"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.versions:list"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStoreEntryRevisions__Using_Universes_DataStores"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List Data Store Entries",
        "description": "Returns a list of entries from a data store.\n\nOnly the `path` and `id` fields are populated; use `GetDataStoreEntry`\nto retrieve other fields.\n\nSpecify the wildcard scope (`-`) to list entries from all scopes.",
        "operationId": "Cloud_ListDataStoreEntries__Using_Universes_DataStores",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of data store entries to return. The service might\nreturn fewer than this value. If unspecified, at most 10 data store entries\nare returned. The maximum value is 256 and higher values are set to 256.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 256, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nThe `filter` field supports a very small subset of CEL:\n\n* Only the `id` field is supported.\n* Only the `startsWith` function is available; no other operators nor\n  built-ins are supported.\n\nExample filter: `id.startsWith(\"foo\")`",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "showDeleted",
            "in": "query",
            "description": "If true, resources marked for pending deletion will be included in the\nresults.",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDataStoreEntriesResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:list"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:list"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStoreEntries__Using_Universes_DataStores"
        }
      },
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Create Data Store Entry",
        "description": "Creates an entry with the provided ID and value.\n\nReturns a 400 Bad Request if the entry exists.",
        "operationId": "Cloud_CreateDataStoreEntry__Using_Universes_DataStores",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "The ID to use for the data store entry, which will become the final\ncomponent of the data store entry's resource path.\n\nThis value should be a 1-50 character string. We strongly recommend using\nonly lowercase letters, numeric digits, and hyphens.",
            "schema": {
              "type": "string"
            },
            "examples": {
              "id": {
                "description": "a 1-50 character string. We strongly recommend using only lowercase letters, numeric digits, and hyphens.",
                "value": "my-entry"
              }
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DataStoreEntry"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:create"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:create"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_CreateDataStoreEntry__Using_Universes_DataStores"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}": {
      "delete": {
        "tags": ["Data and memory stores"],
        "summary": "Delete Data Store Entry",
        "description": "Marks the specified entry for deletion.\n\nEntries are not be deleted immediately; instead, the `state` field will\nbe set to `DELETED`. Permanent deletion occurs after 30 days.\n\nOn success, returns 200 OK. If the entry doesn't exist, returns\n404 Not Found.",
        "operationId": "Cloud_DeleteDataStoreEntry__Using_Universes_DataStores_Scopes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {}
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:delete"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:delete"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_DeleteDataStoreEntry__Using_Universes_DataStores_Scopes"
        }
      },
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "Get Data Store Entry",
        "description": "Gets the specified entry.\n\nTo get the entry at a specific revision, add `@<revisionId>` to the end of\nthe path.\n\nFor example, to get `my-entry` at the revision ID\n`08DC3D3F43F9FCC1.0000000001.08DC3D3F43F9FCC1.01`, use the path\n`/cloud/v2/universes/1234/data-stores/5678/entries/my-entry@08DC3D3F43F9FCC1.0000000001.08DC3D3F43F9FCC1.01`.\n\nIf your entry ID contains one or more `@` characters, and you want to get\nthe latest version rather than at any specific revision, append the special\nrevision ID `@latest` to the end of the path. Otherwise, the segment of the\nentry ID after the last `@` will be interpreted as a revision ID.\n\nFor example, to get the latest revision of `my-entry`, use the path\n`/cloud/v2/universes/1234/data-stores/5678/entries/my@entry@latest`.\n\nTo get the entry that was current at a specific time, add\n`@latest:<timestamp>` to the end of the path, where `<timestamp>` is\nRFC-3339 formatted. The given timestamp must be after\nthe Unix epoch (1/1/1970) and not more than ten minutes in the future.\n\nFor example, to get the revision of `my-entry` that was current on\n12/2/2024 at 06:00 UTC, use the path\n`/cloud/v2/universes/1234/data-stores/5678/entries/my-entry@latest:2024-12-02T06:00:00Z`.",
        "operationId": "Cloud_GetDataStoreEntry__Using_Universes_DataStores_Scopes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetDataStoreEntry__Using_Universes_DataStores_Scopes"
        }
      },
      "patch": {
        "tags": ["Data and memory stores"],
        "summary": "Update Data Store Entry",
        "description": "Updates the value, attributes, and users of an entry.\n\nUpdating specific revisions of the entry is **unsupported**. If you specify\na revision ID in the path and `allow_missing` is `true`, the update request\nwill instead create a new entry with the `@<revisionId>` suffix as part of\nthe key.\n\nPartial update is **unsupported**. If attributes or users are not\nprovided when updating the value, they will be cleared. Value must always\nbe provided when updating an entry.",
        "operationId": "Cloud_UpdateDataStoreEntry__Using_Universes_DataStores_Scopes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "allowMissing",
            "in": "query",
            "description": "If set to true, and the data store entry is not found, a data store entry\nis created.",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DataStoreEntry"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:update"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.objects:update"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_UpdateDataStoreEntry__Using_Universes_DataStores_Scopes"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}:increment": {
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Increment Data Store Entry",
        "description": "Increments the value of the specified entry. Both the existing value and\nthe increment amount must be integers.\n\nIf the entry doesn't exist, creates an entry with the specified value.\n\nIncrementing specific revisions of the entry is **unsupported**. If you\nspecify a revision ID in the path, the increment request will create a new\nentry with the `@<revisionId>` suffix as part of the key.\n\nKnown issue: the value may be incremented past the valid range of  values.\nWhen this happens, the returned value will be clamped to the valid range,\nbut the backend may persist the original value. This behavior is maintained\nfor backwards compatibility reasons, but may change in a future version of\nthis API.",
        "operationId": "Cloud_IncrementDataStoreEntry__Using_Universes_DataStores_Scopes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IncrementDataStoreEntryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:create"
          },
          {
            "name": "universe-datastores.objects:update"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": [
              "universe-datastores.objects:create",
              "universe-datastores.objects:update"
            ]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_IncrementDataStoreEntry__Using_Universes_DataStores_Scopes"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}:listRevisions": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List Data Store Entry Revisions",
        "description": "List revisions of the data store entry.\n\nThis method returns partial data store entries.\n\nIn particular, only the `path`, `id`, `createTime`, `revisionCreateTime`,\n`revisionId`, `etag`, and `state` fields are populated. Both the `path` and\n`id` fields will have an `@<version>` suffix.\n\nIn order to get the full entry at a revision, you can use the provided\n`path` field with the `GetDataStoreEntry` method, i.e. `GET\n/cloud/v2/universes/1234/data-stores/5678/entries/my-entry@<version>`.",
        "operationId": "Cloud_ListDataStoreEntryRevisions__Using_Universes_DataStores_Scopes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of revisions to return per page.\n\nThe service might return fewer than the maximum number of revisions.\nIf unspecified, at most 10 revisions are returned.\nThe maximum value is 100 values and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call\nmust match the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "Supports the following subset of CEL:\n\n* Only the `&&`, `<=`, and `>=` operators are supported.\n* Only the `revision_create_time` field is supported.\n\nFor example:\n\n  `\"revision_create_time >= 2000-01-01T00:00:00Z && revision_create_time <=\n  2001-01-01T00:00:00Z\"`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDataStoreEntryRevisionsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.versions:list"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.versions:list"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStoreEntry",
            "name": "DataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStoreEntryRevisions__Using_Universes_DataStores_Scopes"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}:undelete": {
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Undelete Data Store",
        "description": "Restore the data store",
        "operationId": "Cloud_UndeleteDataStore",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "data_store_id",
            "in": "path",
            "description": "The data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UndeleteDataStoreRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataStore"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.control:delete"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.control:delete"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStore",
            "name": "DataStore"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_UndeleteDataStore"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/data-stores:snapshot": {
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Snapshot Data Stores",
        "description": "Takes a new snapshot of the data stores in an experience.\n\nAfter a snapshot, the next write to every key in the experience will\ncreate a versioned backup of the previous data, regardless of the time of\nthe last write.\n\nIn effect, all data current at the time of the snapshot is guaranteed to be\navailable as a versioned backup for at least 30 days.\n\nSnapshots can be taken once per UTC day, per experience. If the latest\nsnapshot was taken within the same UTC day, this operation is a no-op and\nthe time of the latest snapshot will be returned.\n\nFor more information on using snapshots, see the [Data\nstores](https://create.roblox.com/docs/cloud-services/data-stores#snapshots)\nEngine guide.",
        "operationId": "Cloud_SnapshotDataStores",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SnapshotDataStoresRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SnapshotDataStoresResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 60
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.control:snapshot"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe-datastores.control:snapshot"]
          },
          "resource": {
            "$ref": "#/components/schemas/DataStore",
            "name": "DataStore"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_SnapshotDataStores"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/luau-execution-session-task-binary-inputs": {
      "post": {
        "tags": ["Luau Execution"],
        "summary": "Create Luau Execution Session Task Binary Input",
        "description": "Create a new `LuauExecutionSessionTaskBinaryInput`.",
        "operationId": "Cloud_CreateLuauExecutionSessionTaskBinaryInput",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LuauExecutionSessionTaskBinaryInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LuauExecutionSessionTaskBinaryInput"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-scopes": [
          {
            "name": "universe.place.luau-execution-session:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Luau execution",
          "methodProperties": {
            "scopes": ["universe.place.luau-execution-session:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/LuauExecutionSessionTaskBinaryInput",
            "name": "LuauExecutionSessionTaskBinaryInput"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/luau-execution#Cloud_CreateLuauExecutionSessionTaskBinaryInput"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/memory-store/operations/{operation_id}": {
      "get": {
        "summary": "Get Memory Store Flush Operation",
        "description": "Retrieves the status of the operation to [flush the memory stores of a universe](https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_FlushMemoryStore).",
        "operationId": "Cloud_GetMemoryStoreFlushOperation",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "operation_id",
            "in": "path",
            "description": "The operation ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The scope of the memory store flush operation.\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | LIVE |  Flush the live memory store scope. This is the default. |\n  | TEST | Flush the test memory store scope. |",
            "schema": {
              "example": "LIVE",
              "enum": ["LIVE", "TEST"],
              "type": "string",
              "format": "enum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCV2.Operations.Operation"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "tags": ["Data and memory stores"],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetMemoryStoreFlushOperation"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/memory-store/queues/{queue_id}/items": {
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Create Memory Store Queue Item",
        "description": "Creates a new queue item.\n\nIf `ttl` is set, the item will automatically be removed from the queue\nafter the time interval specified.\n\nIf a numerical `priority` is set, the item will be inserted into the queue\nbased on the priority value. The higher the value, the closer to the front\nof the queue the item will be. If priority values are the same then the\nitem will be inserted after existing values with the same priority.",
        "operationId": "Cloud_CreateMemoryStoreQueueItem",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "queue_id",
            "in": "path",
            "description": "The queue ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoryStoreQueueItem"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryStoreQueueItem"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "memory-store.queue:add"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["memory-store.queue:add"]
          },
          "resource": {
            "$ref": "#/components/schemas/MemoryStoreQueueItem",
            "name": "MemoryStoreQueueItem"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_CreateMemoryStoreQueueItem"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/memory-store/queues/{queue_id}/items:discard": {
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Discard Memory Store Queue Items",
        "description": "Discards read items from the front of the queue.\n\nTakes a `readId` from a previous `Read` operation.",
        "operationId": "Cloud_DiscardMemoryStoreQueueItems",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "queue_id",
            "in": "path",
            "description": "The queue ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DiscardMemoryStoreQueueItemsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {}
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "memory-store.queue:discard"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["memory-store.queue:discard"]
          },
          "resource": {
            "$ref": "#/components/schemas/MemoryStoreQueueItem",
            "name": "MemoryStoreQueueItem"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_DiscardMemoryStoreQueueItems"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/memory-store/queues/{queue_id}/items:read": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "Read Memory Store Queue Items",
        "description": "Returns the specified number of items at the front of the queue.\n\n",
        "operationId": "Cloud_ReadMemoryStoreQueueItems",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "queue_id",
            "in": "path",
            "description": "The queue ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "The number of items to read from the queue\nIf unspecified, 1 item will be returned.\nThe maximum value is 200; values above 200 will be coerced to 200.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "allOrNothing",
            "in": "query",
            "description": "If `all_or_nothing` is true and the requested number of objects is not\navailable, will return a 404 Error.\n\nOtherwise, will return the path and read_id of the read operation and a\nlist of the MemoryStoreQueue items.",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          },
          {
            "name": "invisibilityWindow",
            "in": "query",
            "description": "Invisibility window for items read, in seconds.\n\nItems read are invisible in subsequent reads during the invisibility\nwindow duration.\n\nIt must be written in seconds greater than 0 and end with `s`.\n\nDefaults to `30s`.",
            "schema": {
              "example": "3s",
              "type": "string",
              "format": "duration"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadMemoryStoreQueueItemsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "memory-store.queue:dequeue"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["memory-store.queue:dequeue"]
          },
          "resource": {
            "$ref": "#/components/schemas/MemoryStoreQueueItem",
            "name": "MemoryStoreQueueItem"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ReadMemoryStoreQueueItems"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/memory-store/sorted-maps/{sorted_map_id}/items": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List Memory Store Sorted Map Items",
        "description": "Gets and returns items in the map with a given order and filter.",
        "operationId": "Cloud_ListMemoryStoreSortedMapItems",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sorted_map_id",
            "in": "path",
            "description": "The sorted-map ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of memory store sorted map items to return. The service\nmight return fewer than this value. If unspecified, at most 1 memory store\nsorted map items are returned. The maximum value is 100 and higher values\nare set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 1
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "If specified, results are ordered according to the specified fields.\n\nValues must be a comma-separated list of fields, with an optional,\nper-field \" desc\" suffix to sort by descending rather than ascending\nvalues. You can access subfields with a `.` operator.\n\nResults may be ordered by the following fields: id.\n\nExample: \"id desc\"\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nFiltering conforms to Common Expression Language (CEL). Only the `id`\nand `sortKey` fields are supported. In terms of operators, only `<`, `>`\nand `&&` are allowed'\n\nExample: `id > \"key-001\" && id < \"key-100\"`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMemoryStoreSortedMapItemsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "memory-store.sorted-map:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["memory-store.sorted-map:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/MemoryStoreSortedMapItem",
            "name": "MemoryStoreSortedMapItem"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListMemoryStoreSortedMapItems"
        }
      },
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Create Memory Store Sorted Map Item",
        "description": "Creates the specified map item if it doesn't exist.",
        "operationId": "Cloud_CreateMemoryStoreSortedMapItem",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sorted_map_id",
            "in": "path",
            "description": "The sorted-map ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "The ID to use for the memory store sorted map item, which will become the\nfinal component of the memory store sorted map item's resource path.\n\nThis value should be a 1-127 character string that supports alphanumeric\nand special characters. This id is case sensitive. The id must be url\nencoded if it contains any url breaking special characters.",
            "schema": {
              "type": "string"
            },
            "examples": {
              "id": {
                "description": "a 1-127 character string that supports alphanumeric and special characters. This id is case sensitive. The id must be url encoded if it contains any url breaking special characters.",
                "value": "Hello!"
              }
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoryStoreSortedMapItem"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryStoreSortedMapItem"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "memory-store.sorted-map:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["memory-store.sorted-map:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/MemoryStoreSortedMapItem",
            "name": "MemoryStoreSortedMapItem"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_CreateMemoryStoreSortedMapItem"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/memory-store/sorted-maps/{sorted_map_id}/items/{item_id}": {
      "delete": {
        "tags": ["Data and memory stores"],
        "summary": "Delete Memory Store Sorted Map Item",
        "description": "Deletes the specified item from the map.",
        "operationId": "Cloud_DeleteMemoryStoreSortedMapItem",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sorted_map_id",
            "in": "path",
            "description": "The sorted-map ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "item_id",
            "in": "path",
            "description": "The item ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {}
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "memory-store.sorted-map:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["memory-store.sorted-map:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/MemoryStoreSortedMapItem",
            "name": "MemoryStoreSortedMapItem"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_DeleteMemoryStoreSortedMapItem"
        }
      },
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "Get Memory Store Sorted Map Item",
        "description": "Gets and returns the value of the given key in the map.",
        "operationId": "Cloud_GetMemoryStoreSortedMapItem",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sorted_map_id",
            "in": "path",
            "description": "The sorted-map ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "item_id",
            "in": "path",
            "description": "The item ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryStoreSortedMapItem"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "memory-store.sorted-map:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["memory-store.sorted-map:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/MemoryStoreSortedMapItem",
            "name": "MemoryStoreSortedMapItem"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetMemoryStoreSortedMapItem"
        }
      },
      "patch": {
        "tags": ["Data and memory stores"],
        "summary": "Update Memory Store Sorted Map Item",
        "description": "Updates the specified map item.",
        "operationId": "Cloud_UpdateMemoryStoreSortedMapItem",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sorted_map_id",
            "in": "path",
            "description": "The sorted-map ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "item_id",
            "in": "path",
            "description": "The item ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "allowMissing",
            "in": "query",
            "description": "If set to true, and the memory store sorted map item is not found, a memory\nstore sorted map item is created.",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoryStoreSortedMapItem"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoryStoreSortedMapItem"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "memory-store.sorted-map:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["memory-store.sorted-map:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/MemoryStoreSortedMapItem",
            "name": "MemoryStoreSortedMapItem"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_UpdateMemoryStoreSortedMapItem"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/memory-store:flush": {
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Flush Memory Store",
        "description": "Asynchronously flush all data structures in the universe.",
        "operationId": "Cloud_FlushMemoryStore",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The scope of the memory store to flush.\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | LIVE |  Flush the live memory store scope. This is the default. |\n  | TEST | Flush the test memory store scope. |",
            "schema": {
              "example": "LIVE",
              "enum": ["LIVE", "TEST"],
              "type": "string",
              "format": "enum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "x-long-running-operation-parameters": {
          "metadata": {
            "$ref": "#/components/schemas/FlushMemoryStoreMetadata"
          },
          "response": {
            "$ref": "#/components/schemas/FlushMemoryStoreResponse"
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "memory-store:flush"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["memory-store:flush"]
          },
          "resource": {
            "$ref": "#/components/schemas/MemoryStore",
            "name": "MemoryStore"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_FlushMemoryStore"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/ordered-data-stores/{ordered_data_store_id}/scopes/{scope_id}/entries": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List Ordered Data Store Entries",
        "description": "Returns a list of entries from an ordered data store.",
        "operationId": "Cloud_ListOrderedDataStoreEntries",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordered_data_store_id",
            "in": "path",
            "description": "The ordered-data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of ordered data store entries to return. The service\nmight return fewer than this value. If unspecified, at most 10 ordered data\nstore entries are returned. The maximum value is 100 and higher values are\nset to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderBy",
            "in": "query",
            "description": "If specified, results are ordered according to the specified fields.\n\nValues must be a comma-separated list of fields, with an optional,\nper-field \" desc\" suffix to sort by descending rather than ascending\nvalues. You can access subfields with a `.` operator.\n\nResults may be ordered by the following fields: value.\n\nExample: \"value desc\"\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nWe support two comparison operators for this operation: `<=` and `>=`.These\ncomparison operators act as a minValue and maxValue for the values\nreturned. If filtering is needed for a value between a minValue and\nmaxValue the user can use the logical operator `&&`. All tokens in the\nfilter expression must be separated by a single space.\n\nExample filters: `entry <= 10`; `entry >= 10 && entry <= 30`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListOrderedDataStoreEntriesResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Ordered data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe.ordered-data-store.scope.entry:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/OrderedDataStoreEntry",
            "name": "OrderedDataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListOrderedDataStoreEntries"
        }
      },
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Create Ordered Data Store Entry",
        "description": "Creates an entry with the provided ID and value.\n\nReturns a 400 Bad Request if the entry exists.",
        "operationId": "Cloud_CreateOrderedDataStoreEntry",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordered_data_store_id",
            "in": "path",
            "description": "The ordered-data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "The ID to use for the ordered data store entry, which will become the final\ncomponent of the ordered data store entry's resource path.\n\nThis value should be A 1-63 character string. We strongly recommend using\nonly lowercase letters, numeric digits, and hyphens.",
            "schema": {
              "type": "string"
            },
            "examples": {
              "id": {
                "description": "A 1-63 character string. We strongly recommend using only lowercase letters, numeric digits, and hyphens.",
                "value": "my-entry"
              }
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderedDataStoreEntry"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedDataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Ordered data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe.ordered-data-store.scope.entry:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/OrderedDataStoreEntry",
            "name": "OrderedDataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_CreateOrderedDataStoreEntry"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/ordered-data-stores/{ordered_data_store_id}/scopes/{scope_id}/entries/{entry_id}": {
      "delete": {
        "tags": ["Data and memory stores"],
        "summary": "Delete Ordered Data Store Entry",
        "description": "Deletes the specified entry.\n\nOn success, returns 200 OK. If the entry doesn't exist, returns\n404 Not Found.",
        "operationId": "Cloud_DeleteOrderedDataStoreEntry",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordered_data_store_id",
            "in": "path",
            "description": "The ordered-data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {}
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Ordered data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe.ordered-data-store.scope.entry:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/OrderedDataStoreEntry",
            "name": "OrderedDataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_DeleteOrderedDataStoreEntry"
        }
      },
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "Get Ordered Data Store Entry",
        "description": "Gets the specified entry.",
        "operationId": "Cloud_GetOrderedDataStoreEntry",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordered_data_store_id",
            "in": "path",
            "description": "The ordered-data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedDataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Ordered data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe.ordered-data-store.scope.entry:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/OrderedDataStoreEntry",
            "name": "OrderedDataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetOrderedDataStoreEntry"
        }
      },
      "patch": {
        "tags": ["Data and memory stores"],
        "summary": "Update Ordered Data Store Entry",
        "description": "Updates the value of an entry.",
        "operationId": "Cloud_UpdateOrderedDataStoreEntry",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordered_data_store_id",
            "in": "path",
            "description": "The ordered-data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "allowMissing",
            "in": "query",
            "description": "If set to true, and the ordered data store entry is not found, a ordered\ndata store entry is created.",
            "schema": {
              "example": true,
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OrderedDataStoreEntry"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedDataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Ordered data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe.ordered-data-store.scope.entry:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/OrderedDataStoreEntry",
            "name": "OrderedDataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_UpdateOrderedDataStoreEntry"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/ordered-data-stores/{ordered_data_store_id}/scopes/{scope_id}/entries/{entry_id}:increment": {
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Increment Ordered Data Store Entry",
        "description": "Increments the value of the specified entry. Both the existing value and\nthe increment amount must be integers.\n\nIf the entry doesn't exist, creates an entry with the specified value.\n\nKnown issue: the value may be incremented past the valid range of  values.\nWhen this happens, the returned value will be clamped to the valid range,\nbut the backend may persist the original value. This behavior is maintained\nfor backwards compatibility reasons, but may change in a future version of\nthis API.",
        "operationId": "Cloud_IncrementOrderedDataStoreEntry",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ordered_data_store_id",
            "in": "path",
            "description": "The ordered-data-store ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope_id",
            "in": "path",
            "description": "The scope ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry_id",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IncrementOrderedDataStoreEntryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedDataStoreEntry"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Ordered data stores requests are subject to additional throttling limits described in the [Open Cloud guide for data stores](https://create.roblox.com/docs/cloud/guides/data-stores/throttling).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Data and memory stores",
          "methodProperties": {
            "scopes": ["universe.ordered-data-store.scope.entry:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/OrderedDataStoreEntry",
            "name": "OrderedDataStoreEntry"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_IncrementOrderedDataStoreEntry"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}": {
      "get": {
        "tags": ["Places", "Universes"],
        "summary": "Get Place",
        "description": "Gets the specified place.",
        "operationId": "Cloud_GetPlace",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Place"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": []
          },
          "resource": {
            "$ref": "#/components/schemas/Place",
            "name": "Place"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/places#Cloud_GetPlace"
        }
      },
      "patch": {
        "tags": ["Places", "Universes"],
        "summary": "Update Place",
        "description": "Updates the specified place.",
        "operationId": "Cloud_UpdatePlace",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updateMask",
            "in": "query",
            "description": "The list of fields to update.",
            "schema": {
              "type": "string",
              "format": "field-mask"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Place"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Place"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "universe.place:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": ["universe.place:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/Place",
            "name": "Place"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/places#Cloud_UpdatePlace"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}/instances/{instance_id}": {
      "get": {
        "tags": ["Places", "Universes"],
        "summary": "Get Instance",
        "description": "Gets an instance and its property data.\n\nThe maximum supported response data size is 500,000 bytes. If this limit is\nexceeded, the returned `Operation` will be completed with an error result\nthat has an error code of `422`.\n",
        "operationId": "Cloud_GetInstance",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instance_id",
            "in": "path",
            "description": "The instance ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "x-long-running-operation-parameters": {
          "metadata": {
            "$ref": "#/components/schemas/GetInstanceMetadata"
          },
          "response": {
            "$ref": "#/components/schemas/Instance"
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "universe.place.instance:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": ["universe.place.instance:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/Instance",
            "name": "Instance"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 45
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/places#Cloud_GetInstance"
        }
      },
      "patch": {
        "tags": ["Places", "Universes"],
        "summary": "Update Instance",
        "description": "Updates an instance's property data.\n\nWhen updating a `Script` instance's source property, the maximum supported\nproperty size is 200,000 bytes after UTF-8 encoding.",
        "operationId": "Cloud_UpdateInstance",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instance_id",
            "in": "path",
            "description": "The instance ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updateMask",
            "in": "query",
            "description": "The list of fields to update.",
            "schema": {
              "type": "string",
              "format": "field-mask"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Instance"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "x-long-running-operation-parameters": {
          "metadata": {
            "$ref": "#/components/schemas/UpdateInstanceMetadata"
          },
          "response": {
            "$ref": "#/components/schemas/Instance"
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "universe.place.instance:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": ["universe.place.instance:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/Instance",
            "name": "Instance"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 45
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/places#Cloud_UpdateInstance"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}/instances/{instance_id}/operations/{operation_id}": {
      "get": {
        "summary": "Get Update Instance Operation",
        "description": "Retrieves the status of the operation to [update an instance](https://create.roblox.com/docs/cloud/reference/features/universes#Cloud_UpdateInstance).",
        "operationId": "Cloud_GetUpdateInstanceOperation",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instance_id",
            "in": "path",
            "description": "The instance ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "operation_id",
            "in": "path",
            "description": "The operation ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCV2.Operations.Operation"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 45
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "tags": ["Places"],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/places#Cloud_GetUpdateInstanceOperation"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}/instances/{instance_id}:listChildren": {
      "get": {
        "tags": ["Places", "Universes"],
        "summary": "List Instance Children",
        "description": "Lists an instance's children.\n\nThe maximum supported response data size is 500,000 bytes. If this limit is\nexceeded, the returned `Operation` will be completed with an error result\nthat has an error code of `422`.\n\n",
        "operationId": "Cloud_ListInstanceChildren",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instance_id",
            "in": "path",
            "description": "The instance ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of child instance to return. The service may return\nfewer than this value. If unspecified, at most 200 children will be\nreturned. The maximum value is 200; values above 200 will be coerced to\n200.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 200, inclusive",
                "value": 100
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous `ListInstanceChildrenRequest` call.\nProvide this to retrieve the subsequent page.\n\nWhen paginating, all other parameters provided to\n`ListInstanceChildrenRequest` must match the call that provided the page\ntoken.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "x-long-running-operation-parameters": {
          "metadata": {
            "$ref": "#/components/schemas/ListInstanceChildrenMetadata"
          },
          "response": {
            "$ref": "#/components/schemas/ListInstanceChildrenResponse"
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-scopes": [
          {
            "name": "universe.place.instance:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": ["universe.place.instance:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/Instance",
            "name": "Instance"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 45
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/places#Cloud_ListInstanceChildren"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}/luau-execution-session-tasks": {
      "post": {
        "tags": ["Luau Execution", "Places"],
        "summary": "Create Luau Execution Session Task",
        "description": "Creates a task but does not wait for the task to complete.\n\nTo check whether a task has\ncompleted, call the `GetLuauExecutionSessionTask` method and inspect the\n`state` field of the returned resource.\n\nQuotas:\n* 5 calls per minute per API key owner\n* 45 calls per minute per IP address",
        "operationId": "Cloud_CreateLuauExecutionSessionTask__Using_Universes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LuauExecutionSessionTask"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LuauExecutionSessionTask"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "universe.place.luau-execution-session:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Luau execution",
          "methodProperties": {
            "scopes": ["universe.place.luau-execution-session:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/LuauExecutionSessionTask",
            "name": "LuauExecutionSessionTask"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 40
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/luau-execution#Cloud_CreateLuauExecutionSessionTask__Using_Universes"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}/user-restrictions": {
      "get": {
        "tags": ["Bans and blocks", "Places", "Universes", "Users"],
        "summary": "List User Restrictions",
        "description": "List user restrictions for users that have ever been banned in either a\nuniverse or a specific place.",
        "operationId": "Cloud_ListUserRestrictions__Using_Universes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of user restrictions to return. The service might return\nfewer than this value. If unspecified, at most 10 user restrictions are\nreturned. The maximum value is 100 and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserRestrictionsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "User Restrictions are subject to the additional rate limits, applied per universe\n\n* Get User Restriction: 50 req/s\n* List User Restrictions: 50 req/s\n* Update User Restrictions: 10 req/s\n* List User Restriction Logs: 50 req/s\n\nAdditionally, we impose the following rate limit for the same user within a universe:\n\n* Update User Restriction: 2 req/min\n\nFor example, Update User Restriction may not be called for user 123 more than twice every minute.",
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 30
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.user-restriction:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["universe.user-restriction:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/UserRestriction",
            "name": "UserRestriction"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#Cloud_ListUserRestrictions__Using_Universes"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}/user-restrictions/{user_restriction_id}": {
      "get": {
        "tags": ["Bans and blocks", "Places", "Universes", "Users"],
        "summary": "Get User Restriction",
        "description": "Get the user restriction.",
        "operationId": "Cloud_GetUserRestriction__Using_Universes_Places",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user_restriction_id",
            "in": "path",
            "description": "The user-restriction ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRestriction"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "User Restrictions are subject to the additional rate limits, applied per universe\n\n* Get User Restriction: 50 req/s\n* List User Restrictions: 50 req/s\n* Update User Restrictions: 10 req/s\n* List User Restriction Logs: 50 req/s\n\nAdditionally, we impose the following rate limit for the same user within a universe:\n\n* Update User Restriction: 2 req/min\n\nFor example, Update User Restriction may not be called for user 123 more than twice every minute.",
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 30
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.user-restriction:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["universe.user-restriction:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/UserRestriction",
            "name": "UserRestriction"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#Cloud_GetUserRestriction__Using_Universes_Places"
        }
      },
      "patch": {
        "tags": ["Bans and blocks", "Places", "Universes", "Users"],
        "summary": "Update User Restriction",
        "description": "Update the user restriction.",
        "operationId": "Cloud_UpdateUserRestriction__Using_Universes_Places",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user_restriction_id",
            "in": "path",
            "description": "The user-restriction ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updateMask",
            "in": "query",
            "description": "The list of fields to update.\n\nThe `game_join_restriction` field must be updated atomically; field masks\nthat index into `game_join_restriction` (such as\n`\"game_join_restriction.active\"`) are not supported.",
            "schema": {
              "type": "string",
              "format": "field-mask"
            }
          },
          {
            "name": "idempotencyKey.key",
            "in": "query",
            "description": "The unique key to use for idempotency.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "idempotencyKey.firstSent",
            "in": "query",
            "description": "The timestamp at which the first request was sent.\n\nIf this is further in the past than the lifetime of the idempotency key\n(which *may* exceed the annotated minimum lifetime), the server *must*\nreturn an error.",
            "schema": {
              "example": "2023-07-05T12:34:56Z",
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserRestriction"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRestriction"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "User Restrictions are subject to the additional rate limits, applied per universe\n\n* Get User Restriction: 50 req/s\n* List User Restrictions: 50 req/s\n* Update User Restrictions: 10 req/s\n* List User Restriction Logs: 50 req/s\n\nAdditionally, we impose the following rate limit for the same user within a universe:\n\n* Update User Restriction: 2 req/min\n\nFor example, Update User Restriction may not be called for user 123 more than twice every minute.",
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 30
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.user-restriction:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["universe.user-restriction:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/UserRestriction",
            "name": "UserRestriction"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#Cloud_UpdateUserRestriction__Using_Universes_Places"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}/versions/{version_id}/luau-execution-session-tasks": {
      "post": {
        "tags": ["Luau Execution", "Places"],
        "summary": "Create Luau Execution Session Task",
        "description": "Creates a task but does not wait for the task to complete.\n\nTo check whether a task has\ncompleted, call the `GetLuauExecutionSessionTask` method and inspect the\n`state` field of the returned resource.\n\nQuotas:\n* 5 calls per minute per API key owner\n* 45 calls per minute per IP address",
        "operationId": "Cloud_CreateLuauExecutionSessionTask__Using_Universes_Places",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "version_id",
            "in": "path",
            "description": "The version ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LuauExecutionSessionTask"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LuauExecutionSessionTask"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "universe.place.luau-execution-session:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Luau execution",
          "methodProperties": {
            "scopes": ["universe.place.luau-execution-session:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/LuauExecutionSessionTask",
            "name": "LuauExecutionSessionTask"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/luau-execution#Cloud_CreateLuauExecutionSessionTask__Using_Universes_Places"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}/versions/{version_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{task_id}": {
      "get": {
        "tags": ["Luau Execution", "Places"],
        "summary": "Get Luau Execution Session Task",
        "description": "Gets information about a task.\n\nQuotas:\n* 45 calls per minute per API key owner or IP address",
        "operationId": "Cloud_GetLuauExecutionSessionTask",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "version_id",
            "in": "path",
            "description": "The version ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "luau_execution_session_id",
            "in": "path",
            "description": "The luau-execution-session ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "task_id",
            "in": "path",
            "description": "The task ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "The view in which to retrieve the luau execution session task.\n\nSupports BASIC and FULL.\n\nDefaults to BASIC.\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | VIEW_UNSPECIFIED | The luau execution session task view is not specified; the default will be used. |\n  | BASIC | Excludes the `script` field. |\n  | FULL | Includes all fields. |",
            "schema": {
              "example": "VIEW_UNSPECIFIED",
              "enum": ["VIEW_UNSPECIFIED", "BASIC", "FULL"],
              "type": "string",
              "format": "enum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LuauExecutionSessionTask"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "universe.place.luau-execution-session:read"
          },
          {
            "name": "universe.place.luau-execution-session:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Luau execution",
          "methodProperties": {
            "scopes": [
              "universe.place.luau-execution-session:read",
              "universe.place.luau-execution-session:write"
            ]
          },
          "resource": {
            "$ref": "#/components/schemas/LuauExecutionSessionTask",
            "name": "LuauExecutionSessionTask"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 200
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/luau-execution#Cloud_GetLuauExecutionSessionTask"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/places/{place_id}/versions/{version_id}/luau-execution-sessions/{luau_execution_session_id}/tasks/{task_id}/logs": {
      "get": {
        "tags": ["Luau Execution", "Places"],
        "summary": "List Luau Execution Session Task Logs",
        "description": "Lists log chunks generated by a `LuauExecutionSessionTask`.\n\nQuotas:\n* 45 calls per minute per API key owner or IP address",
        "operationId": "Cloud_ListLuauExecutionSessionTaskLogs",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "place_id",
            "in": "path",
            "description": "The place ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "version_id",
            "in": "path",
            "description": "The version ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "luau_execution_session_id",
            "in": "path",
            "description": "The luau-execution-session ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "task_id",
            "in": "path",
            "description": "The task ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of luau execution session task logs to return. The\nservice might return fewer than this value. If unspecified, at most 10000\nluau execution session task logs are returned. The maximum value is 10000\nand higher values are set to 10000.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 10000, inclusive",
                "value": 10000
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "The view in which to retrieve the luau execution session task log.\n\nSupports FLAT and STRUCTURED.\n\nDefaults to FLAT.\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | VIEW_UNSPECIFIED | The luau execution session task log view is not specified; the default will be used. |\n  | FLAT | If this view is selected, the `messages` field will be populated (and the `structuredMessages` field will not). Each entry of the `messages` array contains only the log message, without additional medata. This is the default. |\n  | STRUCTURED | If this view is selected, the `structuredMessages` field will be populated (and the `messages` field will not). Each entry of the `structuredMessages` array contains the log message plus additional metadata (see `LogMessage` for details). |",
            "schema": {
              "example": "VIEW_UNSPECIFIED",
              "enum": ["VIEW_UNSPECIFIED", "FLAT", "STRUCTURED"],
              "type": "string",
              "format": "enum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListLuauExecutionSessionTaskLogsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "universe.place.luau-execution-session:read"
          },
          {
            "name": "universe.place.luau-execution-session:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Luau execution",
          "methodProperties": {
            "scopes": [
              "universe.place.luau-execution-session:read",
              "universe.place.luau-execution-session:write"
            ]
          },
          "resource": {
            "$ref": "#/components/schemas/LuauExecutionSessionTaskLog",
            "name": "LuauExecutionSessionTaskLog"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 45
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/luau-execution#Cloud_ListLuauExecutionSessionTaskLogs"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/subscription-products/{subscription_product_id}/subscriptions/{subscription_id}": {
      "get": {
        "tags": ["Users"],
        "summary": "Get Subscription",
        "description": "Get the subscription.\n\nThe `universe.subscription-product.subscription:read` scope only allows\nreading subscriptions of the user making the request. Because of this, the\nsubscription ID must match the user ID of the user making the request. Note\nthat this scope might be more relevant for OAuth 2.0 apps.\n\nTo read all subscriptions made by users for a particular universe, use the\n`universe:write` scope instead.",
        "operationId": "Cloud_GetSubscription",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscription_product_id",
            "in": "path",
            "description": "The subscription-product ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "subscription_id",
            "in": "path",
            "description": "The subscription ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "view",
            "in": "query",
            "description": "The view in which to retrieve the subscription.\n\nSupports BASIC and FULL.\n\nDefaults to BASIC.\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | VIEW_UNSPECIFIED | The subscription view is not specified; the default will be used. |\n  | BASIC | Includes only the `active` and `renewing` fields. |\n  | FULL | Includes all fields. |",
            "schema": {
              "example": "VIEW_UNSPECIFIED",
              "enum": ["VIEW_UNSPECIFIED", "BASIC", "FULL"],
              "type": "string",
              "format": "enum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Subscription"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-scopes": [
          {
            "name": "universe:write"
          },
          {
            "name": "universe.subscription-product.subscription:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Monetization",
          "methodProperties": {
            "scopes": [
              "universe:write",
              "universe.subscription-product.subscription:read"
            ]
          },
          "resource": {
            "$ref": "#/components/schemas/Subscription",
            "name": "Subscription"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 500
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 3
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/users#Cloud_GetSubscription"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/user-restrictions": {
      "get": {
        "tags": ["Bans and blocks", "Universes", "Users"],
        "summary": "List User Restrictions",
        "description": "List user restrictions for users that have ever been banned in either a\nuniverse or a specific place.",
        "operationId": "Cloud_ListUserRestrictions",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of user restrictions to return. The service might return\nfewer than this value. If unspecified, at most 10 user restrictions are\nreturned. The maximum value is 100 and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserRestrictionsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "User Restrictions are subject to the additional rate limits, applied per universe\n\n* Get User Restriction: 50 req/s\n* List User Restrictions: 50 req/s\n* Update User Restrictions: 10 req/s\n* List User Restriction Logs: 50 req/s\n\nAdditionally, we impose the following rate limit for the same user within a universe:\n\n* Update User Restriction: 2 req/min\n\nFor example, Update User Restriction may not be called for user 123 more than twice every minute.",
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 30
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.user-restriction:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["universe.user-restriction:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/UserRestriction",
            "name": "UserRestriction"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#Cloud_ListUserRestrictions"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/user-restrictions/{user_restriction_id}": {
      "get": {
        "tags": ["Bans and blocks", "Universes", "Users"],
        "summary": "Get User Restriction",
        "description": "Get the user restriction.",
        "operationId": "Cloud_GetUserRestriction__Using_Universes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user_restriction_id",
            "in": "path",
            "description": "The user-restriction ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRestriction"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "User Restrictions are subject to the additional rate limits, applied per universe\n\n* Get User Restriction: 50 req/s\n* List User Restrictions: 50 req/s\n* Update User Restrictions: 10 req/s\n* List User Restriction Logs: 50 req/s\n\nAdditionally, we impose the following rate limit for the same user within a universe:\n\n* Update User Restriction: 2 req/min\n\nFor example, Update User Restriction may not be called for user 123 more than twice every minute.",
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 30
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.user-restriction:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["universe.user-restriction:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/UserRestriction",
            "name": "UserRestriction"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#Cloud_GetUserRestriction__Using_Universes"
        }
      },
      "patch": {
        "tags": ["Bans and blocks", "Universes", "Users"],
        "summary": "Update User Restriction",
        "description": "Update the user restriction.",
        "operationId": "Cloud_UpdateUserRestriction__Using_Universes",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "user_restriction_id",
            "in": "path",
            "description": "The user-restriction ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "updateMask",
            "in": "query",
            "description": "The list of fields to update.\n\nThe `game_join_restriction` field must be updated atomically; field masks\nthat index into `game_join_restriction` (such as\n`\"game_join_restriction.active\"`) are not supported.",
            "schema": {
              "type": "string",
              "format": "field-mask"
            }
          },
          {
            "name": "idempotencyKey.key",
            "in": "query",
            "description": "The unique key to use for idempotency.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "idempotencyKey.firstSent",
            "in": "query",
            "description": "The timestamp at which the first request was sent.\n\nIf this is further in the past than the lifetime of the idempotency key\n(which *may* exceed the annotated minimum lifetime), the server *must*\nreturn an error.",
            "schema": {
              "example": "2023-07-05T12:34:56Z",
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserRestriction"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRestriction"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "User Restrictions are subject to the additional rate limits, applied per universe\n\n* Get User Restriction: 50 req/s\n* List User Restrictions: 50 req/s\n* Update User Restrictions: 10 req/s\n* List User Restriction Logs: 50 req/s\n\nAdditionally, we impose the following rate limit for the same user within a universe:\n\n* Update User Restriction: 2 req/min\n\nFor example, Update User Restriction may not be called for user 123 more than twice every minute.",
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 30
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.user-restriction:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["universe.user-restriction:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/UserRestriction",
            "name": "UserRestriction"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#Cloud_UpdateUserRestriction__Using_Universes"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}/user-restrictions:listLogs": {
      "get": {
        "tags": ["Bans and blocks", "Universes", "Users"],
        "summary": "List User Restriction Logs",
        "description": "List changes to UserRestriction resources within a given universe.\nThis includes both universe-level and place-level restrictions.\n\nFor universe-level restriction logs, the `place` field will be empty.",
        "operationId": "Cloud_ListUserRestrictionLogs",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of UserRestrictionLogs to return. The service may return\nfewer than this value. If unspecified, at most 10 UserRestrictionLogs are\nreturned. The maximum value is 100 and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set to filter the logs returned.\n\nThe `filter` field supports a very small number of CEL:\n\n* `user`\n* `place`\n* The `==` comparison operator is available.\n* The `&&` logical operator is also supported.\n\nAs an example, filtering for a user and a place takes the form\n`filter=\"user == 'users/123'\" && \"place == 'places/456'\"`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListUserRestrictionLogsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "User Restrictions are subject to the additional rate limits, applied per universe\n\n* Get User Restriction: 50 req/s\n* List User Restrictions: 50 req/s\n* Update User Restrictions: 10 req/s\n* List User Restriction Logs: 50 req/s\n\nAdditionally, we impose the following rate limit for the same user within a universe:\n\n* Update User Restriction: 2 req/min\n\nFor example, Update User Restriction may not be called for user 123 more than twice every minute.",
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 150
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 30
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe.user-restriction:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["universe.user-restriction:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/UserRestriction",
            "name": "UserRestriction"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#Cloud_ListUserRestrictionLogs"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}:generateSpeechAsset": {
      "post": {
        "tags": ["Assets", "Generative AI"],
        "summary": "Generate Speech Asset",
        "description": "Generates an English speech audio asset from the specified text.\n\nThis endpoint requires the `asset:read` and `asset:write` scopes in\naddition to the `universe:write` scope.\n\nThe response returns an `Operation` object that must be prefixed with\n`/assets/v1`. For example, the URL to discover the result of the operation\ncould be\n`https://apis.roblox.com/assets/v1/operations/8b42ef30-9c17-4526-b8cf-2ff0136ca94d`.",
        "operationId": "Cloud_GenerateSpeechAsset",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateSpeechAssetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "x-long-running-operation-parameters": {
          "metadata": {
            "$ref": "#/components/schemas/GenerateSpeechAssetMetadata"
          },
          "response": {
            "$ref": "#/components/schemas/GenerateSpeechAssetResponse"
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-scopes": [
          {
            "name": "universe:write"
          },
          {
            "name": "asset:read"
          },
          {
            "name": "asset:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": ["universe:write", "asset:read", "asset:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/Universe",
            "name": "Universe"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 4
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 4
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Cloud_GenerateSpeechAsset"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}:publishMessage": {
      "post": {
        "tags": ["Universes"],
        "summary": "Publish Universe Message",
        "description": "Publishes a message to the universe's live servers.\n\nServers can consume messages via\n[MessagingService](https://create.roblox.com/docs/reference/engine/classes/MessagingService).",
        "operationId": "Cloud_PublishUniverseMessage",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishUniverseMessageRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {}
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-rate-limits": {
          "description": "Messaging Service requests are subject to additional throttling limits described in the [Open Cloud guide for Messaging Service](https://create.roblox.com/docs/cloud/guides/usage-messaging#limits).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe-messaging-service:publish"
          }
        ],
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": ["universe-messaging-service:publish"]
          },
          "resource": {
            "$ref": "#/components/schemas/Universe",
            "name": "Universe"
          }
        },
        "x-roblox-stability": "STABLE",
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#Cloud_PublishUniverseMessage"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}:restartServers": {
      "post": {
        "tags": ["Universes"],
        "summary": "Restart Universe Servers",
        "description": "Restarts active servers for a specific universe. Defaults to only\nrestarting servers running older versions, but can be configured to restart\nall servers regardless of version. Used for releasing experience updates.",
        "operationId": "Cloud_RestartUniverseServers",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RestartUniverseServersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestartUniverseServersResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "universe:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": ["universe:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/Universe",
            "name": "Universe"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 30
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#Cloud_RestartUniverseServers"
        }
      }
    },
    "/cloud/v2/universes/{universe_id}:translateText": {
      "post": {
        "tags": ["Generative AI"],
        "summary": "Translate Text",
        "description": "Translates the provided text from one language to another.",
        "operationId": "Cloud_TranslateText",
        "parameters": [
          {
            "name": "universe_id",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TranslateTextRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TranslateTextResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-rate-limits": {
          "description": "Text translation requests are subject to additional rate limits [documented here](https://create.roblox.com/docs/production/localization/auto-translate-dynamic-content#limits).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 10000
          }
        },
        "x-roblox-scopes": [
          {
            "name": "universe:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Universes and places",
          "methodProperties": {
            "scopes": ["universe:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/Universe",
            "name": "Universe"
          }
        },
        "x-roblox-stability": "BETA",
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/generative-ai#Cloud_TranslateText"
        }
      }
    },
    "/cloud/v2/users/{user_id}": {
      "get": {
        "tags": ["Users"],
        "summary": "Get User",
        "description": "Gets a user's basic and advanced information.\n\nTo access a user's public information, no additional scopes are required.\n\nTo access a user's verification status, you need the following scopes:\n* user.advanced:read\n\nTo access a user's social account information, you need the following\nscopes:\n* user.social:read",
        "operationId": "Cloud_GetUser",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "description": "The user ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/User"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "description": "Grants access to read a user&#x27;s verification status.",
            "name": "user.advanced:read"
          },
          {
            "description": "Grants access to read a user&#x27;s social account information.",
            "name": "user.social:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": []
          },
          "resource": {
            "$ref": "#/components/schemas/User",
            "name": "User"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 10
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/users#Cloud_GetUser"
        }
      }
    },
    "/cloud/v2/users/{user_id}/asset-quotas": {
      "get": {
        "tags": ["Assets", "Users"],
        "summary": "List Asset Quotas",
        "description": "Returns a list of asset quotas.",
        "operationId": "Cloud_ListAssetQuotas",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "description": "The user ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of asset quotas to return. The service might return\nfewer than this value. If unspecified, at most 10 asset quotas are\nreturned. The maximum value is 100 and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nSupports the following subset of CEL:\n* Only the `quotaType` and `assetType` fields are supported.\n* Only the `==` and `&&` operator are supported.\n\nFor example:\n  `quotaType == RateLimitUpload && assetType == Audio`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListAssetQuotasResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "x-roblox-scopes": [
          {
            "name": "asset:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["asset:read"]
          },
          "resource": {
            "$ref": "#/components/schemas/AssetQuota",
            "name": "AssetQuota"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 60
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 60
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#Cloud_ListAssetQuotas"
        }
      }
    },
    "/cloud/v2/users/{user_id}/inventory-items": {
      "get": {
        "tags": ["Inventories", "Users"],
        "summary": "List Inventory Items",
        "description": "List the inventory items in a user's inventory.\n\nThe inventory items returned depend on the target user’s choice under\n**Settings > Privacy > Who can see my inventory?**:\n* If the user granted inventory visibility to \"Everyone,\" then any API key\nor OAuth2 token can be used to view the target’s inventory, no matter what\nscopes it has or who created it.\n* If the user has not granted inventory visibility to \"Everyone\":\n  * Their inventory can still be viewed with an API key created by the\n  target user with **Inventory: Read** permission.\n  * Their inventory can still be viewed with an OAuth2 token if the target\n  user authorizes an app requesting permissions for the\n  `user.inventory-item:read` scope.",
        "operationId": "Cloud_ListInventoryItems",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "description": "The user ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "maxPageSize",
            "in": "query",
            "description": "The maximum number of inventory items to return. The service might return\nfewer than this value. If unspecified, at most 10 inventory items are\nreturned. The maximum value is 100 and higher values are set to 100.",
            "schema": {
              "type": "integer",
              "format": "int32"
            },
            "examples": {
              "maxPageSize": {
                "description": "An integer between 1 and 100, inclusive",
                "value": 10
              }
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "A page token, received from a previous call, to retrieve a subsequent page.\n\nWhen paginating, all other parameters provided to the subsequent call must\nmatch the call that provided the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "This field may be set in order to filter the resources returned.\n\nSee the\n[filtering](/cloud/reference/patterns#list-inventory-items)\ndocumentation for more information.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListInventoryItemsResponse"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "description": "Grants access to read the target user&#x27;s private inventory.",
            "name": "user.inventory-item:read"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": []
          },
          "resource": {
            "$ref": "#/components/schemas/InventoryItem",
            "name": "InventoryItem"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 20
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/inventories#Cloud_ListInventoryItems"
        }
      }
    },
    "/cloud/v2/users/{user_id}/notifications": {
      "post": {
        "tags": ["Notifications", "Users"],
        "summary": "Create User Notification",
        "description": "Sends a notification to a user.",
        "operationId": "Cloud_CreateUserNotification",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "description": "The user ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserNotification"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserNotification"
                }
              }
            }
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-scopes": [
          {
            "name": "user.user-notification:write"
          }
        ],
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": ["user.user-notification:write"]
          },
          "resource": {
            "$ref": "#/components/schemas/UserNotification",
            "name": "UserNotification"
          }
        },
        "x-roblox-stability": "STABLE",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 4000
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 4000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/notifications#Cloud_CreateUserNotification"
        }
      }
    },
    "/cloud/v2/users/{user_id}/operations/{operation_id}": {
      "get": {
        "summary": "Get User Thumbnail Generation Operation",
        "description": "Retrieves the status of the operation to [generate a user thumbnail](https://create.roblox.com/docs/cloud/reference/features/users#Cloud_GenerateUserThumbnail).",
        "operationId": "Cloud_GetUserThumbnailGenerationOperation",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "description": "The user ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "operation_id",
            "in": "path",
            "description": "The operation ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OCV2.Operations.Operation"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 10
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "tags": ["Users"],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/users#Cloud_GetUserThumbnailGenerationOperation"
        }
      }
    },
    "/cloud/v2/users/{user_id}:generateThumbnail": {
      "get": {
        "tags": ["Avatars", "Thumbnails", "Users"],
        "summary": "Generate User Thumbnail",
        "description": "Generates and returns the URL for the user's avatar thumbnail.",
        "operationId": "Cloud_GenerateUserThumbnail",
        "parameters": [
          {
            "name": "user_id",
            "in": "path",
            "description": "The user ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Size of the generated thumbnail. The generated thumbnail will have `size *\nsize` dimension.\n\nCurrently supported values:\n48, 50, 60, 75, 100, 110, 150, 180, 352, 420, 720\nDefault is 420.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "format",
            "in": "query",
            "description": "Specify the format of the generated thumbnail. Default is `PNG`.\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | FORMAT_UNSPECIFIED | Default UserThumbnail Format -- set to png |\n  | PNG | Generate thumbnail in `.png` format |\n  | JPEG | Generate thumbnail in `.jpg` format |",
            "schema": {
              "example": "FORMAT_UNSPECIFIED",
              "enum": ["FORMAT_UNSPECIFIED", "PNG", "JPEG"],
              "type": "string",
              "format": "enum"
            }
          },
          {
            "name": "shape",
            "in": "query",
            "description": "Specify the shape of the thumbnail. Default is `ROUND` (circular).\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | SHAPE_UNSPECIFIED | Default UserThumbnail Shape -- set to round |\n  | ROUND | Generate thumbnail as a circle. |\n  | SQUARE | Generate thumbnail as a rectangle. |",
            "schema": {
              "example": "SHAPE_UNSPECIFIED",
              "enum": ["SHAPE_UNSPECIFIED", "ROUND", "SQUARE"],
              "type": "string",
              "format": "enum"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Operation"
                }
              }
            }
          }
        },
        "x-long-running-operation-parameters": {
          "metadata": {
            "$ref": "#/components/schemas/GenerateUserThumbnailMetadata"
          },
          "response": {
            "$ref": "#/components/schemas/GenerateUserThumbnailResponse"
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "x-roblox-docs": {
          "category": "Users and groups",
          "methodProperties": {
            "scopes": []
          },
          "resource": {
            "$ref": "#/components/schemas/User",
            "name": "User"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 1000
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 10
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/avatars#Cloud_GenerateUserThumbnail"
        }
      }
    },
    "/creator-configs-public-api/v1/configs/universes/{universeId}/repositories/{repository}": {
      "get": {
        "tags": ["Configs"],
        "summary": "Gets published config values without metadata.",
        "description": "Returns the latest published config values without metadata and decorators.\r\nThis response can be used as a direct copy-and-paste to the draft update endpoints.",
        "operationId": "CreatorConfigsPublicApi_GetConfigRepositoryValues",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repository",
            "in": "path",
            "description": "\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Repository"
                }
              ],
              "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.",
              "x-enum-varnames": [
                "InExperienceConfig",
                "RecommendationServicesConfig",
                "DataStoresConfig",
                "ExtendedServicesConfig",
                "LeaderboardsConfig",
                "ExperienceUserConfig",
                "JourneysConfig"
              ]
            },
            "x-enum-varnames": [
              "InExperienceConfig",
              "RecommendationServicesConfig",
              "DataStoresConfig",
              "ExtendedServicesConfig",
              "LeaderboardsConfig",
              "ExperienceUserConfig",
              "JourneysConfig"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigRepositoryValues"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          }
        },
        "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/configs#CreatorConfigsPublicApi_GetConfigRepositoryValues"
        }
      }
    },
    "/creator-configs-public-api/v1/configs/universes/{universeId}/repositories/{repository}/draft": {
      "delete": {
        "tags": ["Configs"],
        "summary": "Resets (deletes) the current draft.",
        "description": "Resets the current draft area. If draftHash is provided, this call will fail if the hash doesn't match.",
        "operationId": "CreatorConfigsPublicApi_DeleteDraft",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repository",
            "in": "path",
            "description": "\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Repository"
                }
              ],
              "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.",
              "x-enum-varnames": [
                "InExperienceConfig",
                "RecommendationServicesConfig",
                "DataStoresConfig",
                "ExtendedServicesConfig",
                "LeaderboardsConfig",
                "ExperienceUserConfig",
                "JourneysConfig"
              ]
            },
            "x-enum-varnames": [
              "InExperienceConfig",
              "RecommendationServicesConfig",
              "DataStoresConfig",
              "ExtendedServicesConfig",
              "LeaderboardsConfig",
              "ExperienceUserConfig",
              "JourneysConfig"
            ]
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeleteDraftRequest"
                  }
                ],
                "description": "Request model for deleting/resetting a draft."
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeleteDraftRequest"
                  }
                ],
                "description": "Request model for deleting/resetting a draft."
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeleteDraftRequest"
                  }
                ],
                "description": "Request model for deleting/resetting a draft."
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DeleteDraftRequest"
                  }
                ],
                "description": "Request model for deleting/resetting a draft."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftHashResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 50
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 50
          }
        },
        "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/configs#CreatorConfigsPublicApi_DeleteDraft"
        }
      },
      "get": {
        "tags": ["Configs"],
        "summary": "Gets the current draft.",
        "description": "Returns the current draft changes for the configuration repository.",
        "operationId": "CreatorConfigsPublicApi_GetConfigRepositoryDraft",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repository",
            "in": "path",
            "description": "\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Repository"
                }
              ],
              "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.",
              "x-enum-varnames": [
                "InExperienceConfig",
                "RecommendationServicesConfig",
                "DataStoresConfig",
                "ExtendedServicesConfig",
                "LeaderboardsConfig",
                "ExperienceUserConfig",
                "JourneysConfig"
              ]
            },
            "x-enum-varnames": [
              "InExperienceConfig",
              "RecommendationServicesConfig",
              "DataStoresConfig",
              "ExtendedServicesConfig",
              "LeaderboardsConfig",
              "ExperienceUserConfig",
              "JourneysConfig"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigRepositoryDraft"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          }
        },
        "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/configs#CreatorConfigsPublicApi_GetConfigRepositoryDraft"
        }
      },
      "patch": {
        "tags": ["Configs"],
        "summary": "Partially updates the draft.",
        "description": "Updates the draft treating the payload as a partial changeset.\r\nIf draftHash is provided, this call will fail if the hash doesn't match.\r\nA key not included will not be changed. To indicate deletion, set key to null.\r\nTo discard a change, set key to its currently published value.\r\nWhen `conditionalRules` is omitted or empty (`{}`), the CMS update omits the conditional-rules field so existing published rules remain at publish time;\r\nsend a non-empty `conditionalRules` object to merge rule changes.\r\nEntry count and per-value size limits are enforced here via CreatorConfigsPublicApi.Utils.DraftValidationHelper; further schema validation is performed by Config Management.",
        "operationId": "CreatorConfigsPublicApi_UpdateDraft",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repository",
            "in": "path",
            "description": "\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Repository"
                }
              ],
              "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.",
              "x-enum-varnames": [
                "InExperienceConfig",
                "RecommendationServicesConfig",
                "DataStoresConfig",
                "ExtendedServicesConfig",
                "LeaderboardsConfig",
                "ExperienceUserConfig",
                "JourneysConfig"
              ]
            },
            "x-enum-varnames": [
              "InExperienceConfig",
              "RecommendationServicesConfig",
              "DataStoresConfig",
              "ExtendedServicesConfig",
              "LeaderboardsConfig",
              "ExperienceUserConfig",
              "JourneysConfig"
            ]
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDraftRequest"
                  }
                ],
                "description": "Request model for draft updates: PATCH uses a partial merge; PUT `draft:overwrite` treats the body as the full intended configuration after publish."
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDraftRequest"
                  }
                ],
                "description": "Request model for draft updates: PATCH uses a partial merge; PUT `draft:overwrite` treats the body as the full intended configuration after publish."
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDraftRequest"
                  }
                ],
                "description": "Request model for draft updates: PATCH uses a partial merge; PUT `draft:overwrite` treats the body as the full intended configuration after publish."
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDraftRequest"
                  }
                ],
                "description": "Request model for draft updates: PATCH uses a partial merge; PUT `draft:overwrite` treats the body as the full intended configuration after publish."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftHashResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 50
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 50
          }
        },
        "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/configs#CreatorConfigsPublicApi_UpdateDraft"
        }
      }
    },
    "/creator-configs-public-api/v1/configs/universes/{universeId}/repositories/{repository}/draft:overwrite": {
      "put": {
        "tags": ["Configs"],
        "summary": "Overwrites the entire draft with the request payload.",
        "description": "Full overwrite of current draft. The payload is the expected final state after publish (not a merge with the draft or published config from the client’s perspective).\r\nThe service aligns that intent with CMS validation by emitting explicit deletions for published keys and conditional branches omitted from the body.\r\nIf a key is not included, it is interpreted as removed.\r\nWhen `conditionalRules` is included, `conditionalRules.rules` is authoritative for rule definitions:\r\nany conditional rule that exists on the latest published configuration but is omitted from `rules` is removed (same as sending an empty RPN rule).\r\nWhen `conditionalRules` is omitted, all published conditional rules are removed; entries must not use conditional branches or `.RBX.conditional.*` keys unless you send `conditionalRules`.\r\nIf draftHash is provided, this call will fail if the hash doesn't match.\r\nEntry count and per-value size limits are enforced here via CreatorConfigsPublicApi.Utils.DraftValidationHelper; further schema validation is performed by Config Management.",
        "operationId": "CreatorConfigsPublicApi_OverwriteDraft",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repository",
            "in": "path",
            "description": "\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Repository"
                }
              ],
              "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.",
              "x-enum-varnames": [
                "InExperienceConfig",
                "RecommendationServicesConfig",
                "DataStoresConfig",
                "ExtendedServicesConfig",
                "LeaderboardsConfig",
                "ExperienceUserConfig",
                "JourneysConfig"
              ]
            },
            "x-enum-varnames": [
              "InExperienceConfig",
              "RecommendationServicesConfig",
              "DataStoresConfig",
              "ExtendedServicesConfig",
              "LeaderboardsConfig",
              "ExperienceUserConfig",
              "JourneysConfig"
            ]
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDraftRequest"
                  }
                ],
                "description": "Request model for draft updates: PATCH uses a partial merge; PUT `draft:overwrite` treats the body as the full intended configuration after publish."
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDraftRequest"
                  }
                ],
                "description": "Request model for draft updates: PATCH uses a partial merge; PUT `draft:overwrite` treats the body as the full intended configuration after publish."
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDraftRequest"
                  }
                ],
                "description": "Request model for draft updates: PATCH uses a partial merge; PUT `draft:overwrite` treats the body as the full intended configuration after publish."
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/UpdateDraftRequest"
                  }
                ],
                "description": "Request model for draft updates: PATCH uses a partial merge; PUT `draft:overwrite` treats the body as the full intended configuration after publish."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftHashResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 50
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 50
          }
        },
        "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/configs#CreatorConfigsPublicApi_OverwriteDraft"
        }
      }
    },
    "/creator-configs-public-api/v1/configs/universes/{universeId}/repositories/{repository}/full": {
      "get": {
        "tags": ["Configs"],
        "summary": "Gets full config with metadata.",
        "description": "Returns the full config including metadata (version, descriptions, last modified/accessed times).",
        "operationId": "CreatorConfigsPublicApi_GetConfigRepositoryFull",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repository",
            "in": "path",
            "description": "\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Repository"
                }
              ],
              "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.",
              "x-enum-varnames": [
                "InExperienceConfig",
                "RecommendationServicesConfig",
                "DataStoresConfig",
                "ExtendedServicesConfig",
                "LeaderboardsConfig",
                "ExperienceUserConfig",
                "JourneysConfig"
              ]
            },
            "x-enum-varnames": [
              "InExperienceConfig",
              "RecommendationServicesConfig",
              "DataStoresConfig",
              "ExtendedServicesConfig",
              "LeaderboardsConfig",
              "ExperienceUserConfig",
              "JourneysConfig"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigRepositoryFull"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          }
        },
        "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/configs#CreatorConfigsPublicApi_GetConfigRepositoryFull"
        }
      }
    },
    "/creator-configs-public-api/v1/configs/universes/{universeId}/repositories/{repository}/publish": {
      "post": {
        "tags": ["Configs"],
        "summary": "Publishes draft changes.",
        "description": "Applies the current draft to the published config. Requires a draft hash and optional message and deployment strategy.",
        "operationId": "CreatorConfigsPublicApi_PublishDraft",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repository",
            "in": "path",
            "description": "\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Repository"
                }
              ],
              "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.",
              "x-enum-varnames": [
                "InExperienceConfig",
                "RecommendationServicesConfig",
                "DataStoresConfig",
                "ExtendedServicesConfig",
                "LeaderboardsConfig",
                "ExperienceUserConfig",
                "JourneysConfig"
              ]
            },
            "x-enum-varnames": [
              "InExperienceConfig",
              "RecommendationServicesConfig",
              "DataStoresConfig",
              "ExtendedServicesConfig",
              "LeaderboardsConfig",
              "ExperienceUserConfig",
              "JourneysConfig"
            ]
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PublishDraftRequest"
                  }
                ],
                "description": "Request model for publishing a draft."
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PublishDraftRequest"
                  }
                ],
                "description": "Request model for publishing a draft."
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PublishDraftRequest"
                  }
                ],
                "description": "Request model for publishing a draft."
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PublishDraftRequest"
                  }
                ],
                "description": "Request model for publishing a draft."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublishDraftResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 10
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 10
          }
        },
        "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/configs#CreatorConfigsPublicApi_PublishDraft"
        }
      }
    },
    "/creator-configs-public-api/v1/configs/universes/{universeId}/repositories/{repository}/revisions": {
      "get": {
        "tags": ["Configs"],
        "summary": "Lists revision history.",
        "description": "Returns the list of previous revisions to the repository. Supports optional start/end time and pagination.",
        "operationId": "CreatorConfigsPublicApi_ListRevisions",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repository",
            "in": "path",
            "description": "\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Repository"
                }
              ],
              "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.",
              "x-enum-varnames": [
                "InExperienceConfig",
                "RecommendationServicesConfig",
                "DataStoresConfig",
                "ExtendedServicesConfig",
                "LeaderboardsConfig",
                "ExperienceUserConfig",
                "JourneysConfig"
              ]
            },
            "x-enum-varnames": [
              "InExperienceConfig",
              "RecommendationServicesConfig",
              "DataStoresConfig",
              "ExtendedServicesConfig",
              "LeaderboardsConfig",
              "ExperienceUserConfig",
              "JourneysConfig"
            ]
          },
          {
            "name": "startTime",
            "in": "query",
            "description": "Optional start time for filtering revisions.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endTime",
            "in": "query",
            "description": "Optional end time for filtering revisions.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "MaxPageSize",
            "in": "query",
            "description": "Maximum page size.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of items to skip.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SearchKey",
            "in": "query",
            "description": "Search key to filter by.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SortOrder",
            "in": "query",
            "description": "Sort order (e.g., \"SORT_ORDER_DESCENDING\", \"SORT_ORDER_ASCENDING\").",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SortKey",
            "in": "query",
            "description": "Sort key (e.g., \"SORT_KEY_LAST_MODIFIED_TIME\").",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListRevisionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          }
        },
        "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/configs#CreatorConfigsPublicApi_ListRevisions"
        }
      }
    },
    "/creator-configs-public-api/v1/configs/universes/{universeId}/repositories/{repository}/revisions/{revisionId}/restore": {
      "post": {
        "tags": ["Configs"],
        "summary": "Stages a revert to a previous revision.",
        "description": "Attempts to restore configs to the provided revision. This will clear the staging and stage a revert commit.\r\nYou must call publish for the revert to take effect.",
        "operationId": "CreatorConfigsPublicApi_RestoreRevision",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "repository",
            "in": "path",
            "description": "\n\nInExperienceConfig\n\nRecommendationServicesConfig\n\nDataStoresConfig\n\nExtendedServicesConfig\n\nLeaderboardsConfig\n\nExperienceUserConfig\n\nJourneysConfig",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Repository"
                }
              ],
              "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.",
              "x-enum-varnames": [
                "InExperienceConfig",
                "RecommendationServicesConfig",
                "DataStoresConfig",
                "ExtendedServicesConfig",
                "LeaderboardsConfig",
                "ExperienceUserConfig",
                "JourneysConfig"
              ]
            },
            "x-enum-varnames": [
              "InExperienceConfig",
              "RecommendationServicesConfig",
              "DataStoresConfig",
              "ExtendedServicesConfig",
              "LeaderboardsConfig",
              "ExperienceUserConfig",
              "JourneysConfig"
            ]
          },
          {
            "name": "revisionId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DraftHashResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResult"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 10
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 10
          }
        },
        "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/configs#CreatorConfigsPublicApi_RestoreRevision"
        }
      }
    },
    "/datastores/v1/universes/{universeId}/standard-datastores": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List data stores in an experience",
        "description": "Returns a list of an experience's data stores.",
        "operationId": "Datastores_ListDatastoresAsync",
        "x-roblox-cloud-api-operation-name": "List Data Stores",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Provide to request the next set of data.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of items to return. Each call only reads one partition, so it can return fewer than the given value when running out of objectives on one partition.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "prefix",
            "in": "query",
            "description": "Provide to return only data stores with this prefix. ",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "type": "array",
                      "description": "An array of data stores in the target experience.",
                      "items": {
                        "$ref": "#/components/schemas/OCV1.DataStores.DataStore"
                      }
                    },
                    "nextPageCursor": {
                      "type": "string",
                      "nullable": true,
                      "description": "Indicates that there is more data available in the requested result set."
                    }
                  },
                  "example": "{\n  \"datastores\": [\n    {\n      \"name\": \"PlayerInventory\",\n      \"createdTime\": \"2022-02-18T22:38:59.9244932Z\"\n    },\n    {\n      \"name\": \"PlayerExperience\",\n      \"createdTime\": \"2022-02-18T23:00:10.4773508Z\"\n    },\n    {\n      \"name\": \"PlayerWeapons\",\n      \"createdTime\": \"2022-02-18T23:00:22.3725681Z\"\n    },\n    {\n      \"name\": \"PlayerArmor\",\n      \"createdTime\": \"2022-02-18T22:59:33.8472882Z\"\n    },\n    {\n      \"name\": \"PlayerHP\",\n      \"createdTime\": \"2022-02-18T22:58:47.6904028Z\"\n    }\n  ],\n  \"nextPageCursor\": \"...\"\n}\n"
                },
                "encoding": {
                  "metadata": {
                    "contentType": "application/json; charset=utf-8; content-length=388;"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.control:list"
          }
        ],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-lua-equivalent": "DataStoreService:ListDataStoresAsync",
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"prefix=Player\" \\\n-d \"limit=5\""
          }
        ],
        "x-roblox-rate-limits": {
          "description": "See [Throttling](/cloud/guides/data-stores/throttling.md).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStores"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Datastores_ListDatastoresAsync"
        }
      }
    },
    "/datastores/v1/universes/{universeId}/standard-datastores/datastore/entries": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List entries",
        "description": "Returns a list of entry keys within a data store.\n\n Entries marked deleted with a tombstone version are still included in the response if they have yet to be permanently deleted.",
        "operationId": "Entries_ListKeysAsync",
        "x-roblox-cloud-api-operation-name": "List Entries",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "datastoreName",
            "in": "query",
            "description": "The name of the data store.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "allScopes",
            "in": "query",
            "description": "Set to true to return keys from all scopes.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "prefix",
            "in": "query",
            "description": "Provide to return only keys with this prefix.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Provide to request the next set of data.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of items to return. Each call only reads one partition, so it can return fewer than the given value when running out of objectives on one partition.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 16
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "keys": {
                      "type": "array",
                      "description": "An array of entry keys within the target data store.",
                      "items": {
                        "type": "string"
                      }
                    },
                    "nextPageCursor": {
                      "type": "string",
                      "nullable": true,
                      "description": "Indicates that there is more data available in the requested result set."
                    }
                  },
                  "example": "{\n  \"keys\": [\n    {\n      \"key\": \"269323\"\n    }\n  ],\n  \"nextPageCursor\": \"eyJ2ZXJzaW9uIjoxLCJjdXJzb3IiOiIzIyJ9\"\n}\n"
                },
                "encoding": {
                  "metadata": {
                    "contentType": "application/json; charset=utf-8; content-length=388;"
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:list"
          }
        ],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-lua-equivalent": "DataStore:ListKeysAsync",
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"prefix=\" \\\n-d \"limit=5\""
          }
        ],
        "x-roblox-rate-limits": {
          "description": "See [Throttling](/cloud/guides/data-stores/throttling.md).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStoreEntries__Using_Universes"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStoreEntries__Using_Universes_DataStores"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Entries_ListKeysAsync"
        }
      }
    },
    "/datastores/v1/universes/{universeId}/standard-datastores/datastore/entries/entry": {
      "delete": {
        "tags": ["Data and memory stores"],
        "summary": "Delete entry.",
        "description": "Marks the entry as deleted by creating a tombstone version. Entries are deleted permanently after 30 days.",
        "operationId": "Entries_DeleteEntryAsync",
        "x-roblox-cloud-api-operation-name": "Delete Entry",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "datastoreName",
            "in": "query",
            "description": "The name of the data store.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "entryKey",
            "in": "query",
            "description": "The key identifying the entry.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).",
            "schema": {
              "type": "string",
              "default": "global",
              "nullable": true
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The entry is deleted."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:delete"
          }
        ],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-lua-equivalent": "GlobalDataStore:RemoveAsync",
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --include --location --request DELETE \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\""
          }
        ],
        "x-roblox-rate-limits": {
          "description": "See [Throttling](/cloud/guides/data-stores/throttling.md).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}",
            "httpMethod": "DELETE",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_DeleteDataStoreEntry__Using_Universes_DataStores"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}",
            "httpMethod": "DELETE",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_DeleteDataStoreEntry__Using_Universes_DataStores_Scopes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Entries_DeleteEntryAsync"
        }
      },
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "Get entry.",
        "description": "Returns the value and metadata associated with an entry.\n\nEntries marked deleted with a tombstone version will return 404 Not Found.\n\nMetadata can be found in the response headers like the following:\n```text\ncontent-md5: zuYxEhwuySMv0i8CitXImw==\nroblox-entry-version: 08D9E6A3F2188CFF.0000000001.08D9E6A3F2188CFF.01\nroblox-entry-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-version-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-attributes: { \"myAttribute\": \"myValue\" }\nroblox-entry-userids: [1, 2, 3]\n```\n\n| Header | Description |\n|---|---| \n| `content-md5` | The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5). |\n| `roblox-entry-version` | The version of the returned entry. |\n| `roblox-entry-created-time` | The time at which the entry was created. |\n| `roblox-entry-version-created-time` | The time at which this particular version was created. |\n| `roblox-entry-attributes` | Attributes tagged with the entry. Serialized JSON map object. |\n| `roblox-entry-userids` | Comma-separated list of Roblox user IDs tagged with the entry. |\n",
        "operationId": "Entries_GetEntryAsync",
        "x-roblox-cloud-api-operation-name": "Get Entry",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "datastoreName",
            "in": "query",
            "description": "The name of the data store.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "entryKey",
            "in": "query",
            "description": "The key identifying the entry.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).",
            "schema": {
              "type": "string",
              "default": "global",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the entry.",
            "headers": {
              "content-md5": {
                "schema": {
                  "type": "string",
                  "format": "byte"
                },
                "description": "The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5)."
              },
              "roblox-entry-version": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                },
                "description": "The version of the returned entry."
              },
              "roblox-entry-created-time": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "The time at which the entry was created."
              },
              "roblox-entry-version-created-time": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "The time at which this particular version was created."
              },
              "roblox-entry-attributes": {
                "schema": {
                  "type": "object"
                },
                "description": "Attributes tagged with the entry. Serialized JSON map object."
              },
              "roblox-entry-userids": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "description": "Comma-separated list of Roblox user IDs tagged with the entry."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "The user content of the entry."
                }
              }
            }
          },
          "204": {
            "description": "The key is marked as deleted."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:read"
          }
        ],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-lua-equivalent": "GlobalDataStore:GetAsync",
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\""
          }
        ],
        "x-roblox-rate-limits": {
          "description": "See [Throttling](/cloud/guides/data-stores/throttling.md).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetDataStoreEntry__Using_Universes_DataStores"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetDataStoreEntry__Using_Universes_DataStores_Scopes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Entries_GetEntryAsync"
        }
      },
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Set entry.",
        "description": "Sets the value, metadata and user IDs associated with an entry.",
        "operationId": "Entries_SetEntryAsync",
        "x-roblox-cloud-api-operation-name": "Set Entry",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "datastoreName",
            "in": "query",
            "description": "The name of the data store.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "entryKey",
            "in": "query",
            "description": "The key identifying the entry.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "matchVersion",
            "in": "query",
            "description": "Provide to update only if the current version matches this.",
            "schema": {
              "type": "string",
              "default": null,
              "nullable": true
            }
          },
          {
            "name": "exclusiveCreate",
            "in": "query",
            "description": "Create the entry only if it does not exist.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).",
            "schema": {
              "type": "string",
              "default": "global",
              "nullable": true
            }
          },
          {
            "name": "roblox-entry-attributes",
            "in": "header",
            "description": "Attributes to be associated with new version of the entry. Serialized by JSON map objects. If not provided, existing attributes are cleared.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "roblox-entry-userids",
            "in": "header",
            "description": "Comma-separated list of Roblox user IDs tagged with the entry. If not provided, existing user IDs are cleared.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "content-md5",
            "in": "header",
            "description": "The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5).",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "maxLength": 4194304,
                "type": "string"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "",
            "content": {
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryVersion"
                }
              }
            }
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:update",
            "description": "If the entry key being set exists."
          },
          {
            "name": "universe-datastores.objects:create",
            "description": "If the entry key being set doesn't exist."
          },
          {
            "name": "universe-datastores.control:create",
            "description": "If the Data Store the entry key is in doesn't exist."
          }
        ],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-lua-equivalent": "GlobalDataStore:SetAsync",
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --include --location --request POST \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry?datastoreName=Coins&entryKey=269323\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--header \"content-md5: IGPBYI1uC6+AJJxC4r5YBA==\" \\\n--header \"content-type: application/json\" \\\n--header \"roblox-entry-userids: [269323]\" \\\n--header \"roblox-entry-attributes: {}\" \\\n--d \"value\""
          }
        ],
        "x-roblox-rate-limits": {
          "description": "See [Throttling](/cloud/guides/data-stores/throttling.md).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}",
            "httpMethod": "PATCH",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_UpdateDataStoreEntry__Using_Universes_DataStores"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}",
            "httpMethod": "PATCH",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_UpdateDataStoreEntry__Using_Universes_DataStores_Scopes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Entries_SetEntryAsync"
        }
      }
    },
    "/datastores/v1/universes/{universeId}/standard-datastores/datastore/entries/entry/increment": {
      "post": {
        "tags": ["Data and memory stores"],
        "summary": "Increment entry",
        "description": "Increments the value for an entry by a given amount, or create a new entry with that amount. Returns the entry and metadata.\n\nMetadata can be found in the response headers like the following:\n```text\ncontent-md5: zuYxEhwuySMv0i8CitXImw==\nroblox-entry-version: 08D9E6A3F2188CFF.0000000001.08D9E6A3F2188CFF.01\nroblox-entry-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-version-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-attributes: { \"myAttribute\": \"myValue\" }\nroblox-entry-userids: [1, 2, 3]\n```\n\n| Header | Description |\n|---|---| \n| `content-md5` | The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5). |\n| `roblox-entry-version` | The version of the returned entry. |\n| `roblox-entry-created-time` | The time at which the entry was created. |\n| `roblox-entry-version-created-time` | The time at which this particular version was created. |\n| `roblox-entry-attributes` | Attributes tagged with the entry. Serialized JSON map object. |\n| `roblox-entry-userids` | Comma-separated list of Roblox user IDs tagged with the entry. |\n",
        "operationId": "Entries_IncrementEntryAsync",
        "x-roblox-cloud-api-operation-name": "Increment Entry",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "datastoreName",
            "in": "query",
            "description": "The name of the data store.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "entryKey",
            "in": "query",
            "description": "The key identifying the entry.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "incrementBy",
            "in": "query",
            "description": "The amount by which the entry should be incremented, or the starting value if it doesn't exist.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "default": 1
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).",
            "schema": {
              "type": "string",
              "default": "global",
              "nullable": true
            }
          },
          {
            "name": "roblox-entry-attributes",
            "in": "header",
            "description": "Attributes to be associated with new version of the entry. Serialized by JSON map objects. If not provided, existing attributes are cleared.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "roblox-entry-userids",
            "in": "header",
            "description": "A comma-separated list of Roblox user IDs that the entry is tagged with. If not provided, existing user IDs are cleared.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Returns the latest version of the entry after it has been incremented.",
            "headers": {
              "content-md5": {
                "schema": {
                  "type": "string",
                  "format": "byte"
                },
                "description": "The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5)."
              },
              "roblox-entry-version": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                },
                "description": "The version of the returned entry."
              },
              "roblox-entry-created-time": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "The time at which the entry was created."
              },
              "roblox-entry-version-created-time": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "The time at which this particular version was created."
              },
              "roblox-entry-attributes": {
                "schema": {
                  "type": "object"
                },
                "description": "Attributes tagged with the entry. Serialized JSON map object."
              },
              "roblox-entry-userids": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "description": "Comma-separated list of Roblox user IDs tagged with the entry."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "The user content of the entry."
                }
              }
            }
          },
          "204": {
            "description": "The key is marked as deleted."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.objects:update",
            "description": "If the entry key being incremented exists."
          },
          {
            "name": "universe-datastores.objects:create",
            "description": "If the entry key being incremented doesn't exist."
          },
          {
            "name": "universe-datastores.control:create",
            "description": "If the Data Store the entry key is in doesn't exist."
          }
        ],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-lua-equivalent": "GlobalDataStore:IncrementAsync",
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --include --location --request POST \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry/increment\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--header 'content-length: 0' \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\" \\\n-d \"incrementBy=3\""
          }
        ],
        "x-roblox-rate-limits": {
          "description": "See [Throttling](/cloud/guides/data-stores/throttling.md).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}:increment",
            "httpMethod": "POST",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_IncrementDataStoreEntry__Using_Universes_DataStores"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}:increment",
            "httpMethod": "POST",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_IncrementDataStoreEntry__Using_Universes_DataStores_Scopes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Entries_IncrementEntryAsync"
        }
      }
    },
    "/datastores/v1/universes/{universeId}/standard-datastores/datastore/entries/entry/versions": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "List entry versions",
        "description": "Returns a list of versions for an entry.",
        "operationId": "Entries_ListEntryVersionsAsync",
        "x-roblox-cloud-api-operation-name": "List Entry Versions",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "datastoreName",
            "in": "query",
            "description": "The name of the data store.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "entryKey",
            "in": "query",
            "description": "The key identifying the entry.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).",
            "schema": {
              "type": "string",
              "default": "global",
              "nullable": true
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "Provide to request the next set of data.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "startTime",
            "in": "query",
            "description": "Provide to not include versions earlier than this timestamp.",
            "schema": {
              "type": "string",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "endTime",
            "in": "query",
            "description": "Provide to not include versions later than this timestamp.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "sortOrder",
            "in": "query",
            "description": "Either `Ascending` (earlier versions first) or `Descending` (later versions first).",
            "schema": {
              "type": "string",
              "default": "Ascending",
              "nullable": true
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "The maximum number of items to return. Each call only reads one partition, so it can return fewer than the given value when running out of objectives on one partition.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 16
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntryVersion"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request / Invalid file content."
          },
          "403": {
            "description": "Publish not allowed on place."
          },
          "404": {
            "description": "The experience or data store was not found."
          },
          "429": {
            "description": "Too Many Requests."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.versions:list"
          }
        ],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-lua-equivalent": "DataStore:ListVersionsAsync",
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry/versions\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\" \\\n-d \"limit=5\""
          }
        ],
        "x-roblox-rate-limits": {
          "description": "See [Throttling](/cloud/guides/data-stores/throttling.md).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}:listRevisions",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStoreEntryRevisions__Using_Universes_DataStores"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}:listRevisions",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListDataStoreEntryRevisions__Using_Universes_DataStores_Scopes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Entries_ListEntryVersionsAsync"
        }
      }
    },
    "/datastores/v1/universes/{universeId}/standard-datastores/datastore/entries/entry/versions/version": {
      "get": {
        "tags": ["Data and memory stores"],
        "summary": "Get entry version.",
        "description": "Returns the value and metadata of a specific version of an entry.\n\nMetadata can be found in the response headers like the following:\n```text\ncontent-md5: zuYxEhwuySMv0i8CitXImw==\nroblox-entry-version: 08D9E6A3F2188CFF.0000000001.08D9E6A3F2188CFF.01\nroblox-entry-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-version-created-time: 2022-02-02T23:30:06.5388799+00:00\nroblox-entry-attributes: { \"myAttribute\": \"myValue\" }\nroblox-entry-userids: [1, 2, 3]\n```\n\n| Header | Description |\n|---|---| \n| `content-md5` | The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5). |\n| `roblox-entry-version` | The version of the returned entry. |\n| `roblox-entry-created-time` | The time at which the entry was created. |\n| `roblox-entry-version-created-time` | The time at which this particular version was created. |\n| `roblox-entry-attributes` | Attributes tagged with the entry. Serialized JSON map object. |\n| `roblox-entry-userids` | Comma-separated list of Roblox user IDs tagged with the entry. |\n",
        "operationId": "Entries_GetEntryVersionAsync",
        "x-roblox-cloud-api-operation-name": "Get Entry Version",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "description": "The identifier of the experience with data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "datastoreName",
            "in": "query",
            "description": "The name of the data store.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "entryKey",
            "in": "query",
            "description": "The key identifying the entry.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "versionId",
            "in": "query",
            "description": "The version to inspect.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "scope",
            "in": "query",
            "description": "The value is `global` by default. See [Scopes](/cloud-services/data-stores/index.md#scopes).",
            "schema": {
              "type": "string",
              "default": "global",
              "nullable": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successfully retrieved the entry.",
            "headers": {
              "content-md5": {
                "schema": {
                  "type": "string",
                  "format": "byte"
                },
                "description": "The base64-encoded MD5 checksum of the content. See [Content-MD5](/cloud/guides/data-stores/request-handling.md#content-md5)."
              },
              "roblox-entry-version": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                },
                "description": "The version of the returned entry."
              },
              "roblox-entry-created-time": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "The time at which the entry was created."
              },
              "roblox-entry-version-created-time": {
                "schema": {
                  "type": "string",
                  "format": "date-time"
                },
                "description": "The time at which this particular version was created."
              },
              "roblox-entry-attributes": {
                "schema": {
                  "type": "object"
                },
                "description": "Attributes tagged with the entry. Serialized JSON map object."
              },
              "roblox-entry-userids": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "description": "Comma-separated list of Roblox user IDs tagged with the entry."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "description": "The user content of the entry."
                }
              }
            }
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe-datastores.versions:read"
          }
        ],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-lua-equivalent": "DataStore:GetVersionAsync",
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --include --location --request GET \"https://apis.roblox.com/datastores/v1/universes/3310576216/standard-datastores/datastore/entries/entry/versions/version\" \\\n--header \"x-api-key: ${API_KEY}\" \\\n--get \\\n-d \"datastoreName=Coins\" \\\n-d \"entryKey=269323\" \\\n-d \"versionId=08D9E6A3F2188CFF.0000000003.08D9E6DE485A7680.01\""
          }
        ],
        "x-roblox-rate-limits": {
          "description": "See [Throttling](/cloud/guides/data-stores/throttling.md).",
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 5000
          }
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/entries/{entry_id}",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetDataStoreEntry__Using_Universes_DataStores"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}/data-stores/{data_store_id}/scopes/{scope_id}/entries/{entry_id}",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetDataStoreEntry__Using_Universes_DataStores_Scopes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#Entries_GetEntryVersionAsync"
        }
      }
    },
    "/developer-products/v2/universes/{universeId}/developer-products": {
      "post": {
        "tags": ["Developer products"],
        "summary": "Create developer product",
        "description": "Creates a new developer product with the provided configuration details.",
        "operationId": "DeveloperProducts_CreateDeveloperProductV2",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": ["name"],
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of the developer product."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the developer product.",
                    "nullable": true
                  },
                  "isForSale": {
                    "type": "boolean",
                    "description": "Whether the developer product should be on sale.",
                    "nullable": true
                  },
                  "price": {
                    "type": "integer",
                    "description": "The default price of the developer product.",
                    "format": "int64",
                    "nullable": true
                  },
                  "imageFile": {
                    "type": "string",
                    "description": "The thumbnail image file to be uploaded.",
                    "format": "binary",
                    "nullable": true
                  },
                  "isRegionalPricingEnabled": {
                    "type": "boolean",
                    "description": "Whether regional pricing should be enabled for the developer product.\r\nShould not be used when setting isManagedPricingEnabled.",
                    "nullable": true,
                    "deprecated": true
                  },
                  "isManagedPricingEnabled": {
                    "type": "boolean",
                    "description": "Whether managed pricing should be enabled for the developer product.",
                    "nullable": true
                  }
                }
              },
              "encoding": {
                "name": {
                  "style": "form"
                },
                "description": {
                  "style": "form"
                },
                "isForSale": {
                  "style": "form"
                },
                "price": {
                  "style": "form"
                },
                "imageFile": {
                  "style": "form"
                },
                "isRegionalPricingEnabled": {
                  "style": "form"
                },
                "isManagedPricingEnabled": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperProductConfigV2"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 3
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 3
          }
        },
        "x-roblox-scopes": [
          {
            "name": "developer-product:write",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          },
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": ["developer-product:write"]
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#DeveloperProducts_CreateDeveloperProductV2"
        }
      }
    },
    "/developer-products/v2/universes/{universeId}/developer-products/creator": {
      "get": {
        "tags": ["Developer products"],
        "summary": "List developer products by universe with configuration details",
        "operationId": "DeveloperProducts_ListDeveloperProductConfigsByUniverseV2",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of results to return. Defaults to 50.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "The cursor token for pagination.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListDeveloperProductConfigsV2Response"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 10
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 10
          }
        },
        "x-roblox-scopes": [
          {
            "name": "developer-product:read",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          },
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": ["developer-product:read"]
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#DeveloperProducts_ListDeveloperProductConfigsByUniverseV2"
        }
      }
    },
    "/developer-products/v2/universes/{universeId}/developer-products/{productId}": {
      "patch": {
        "tags": ["Developer products"],
        "summary": "Update developer product",
        "description": "Updates a developer product with the provided configuration details. \r\nNote that only fields provided in the request will be updated.",
        "operationId": "DeveloperProducts_UpdateDeveloperProductV2",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "productId",
            "in": "path",
            "description": "The product ID of the developer product.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of the developer product.",
                    "nullable": true
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the developer product.",
                    "nullable": true
                  },
                  "isForSale": {
                    "type": "boolean",
                    "description": "Whether the developer product should be on sale.",
                    "nullable": true
                  },
                  "price": {
                    "type": "integer",
                    "description": "The default price of the developer product.",
                    "format": "int64",
                    "nullable": true
                  },
                  "imageFile": {
                    "type": "string",
                    "description": "The thumbnail image file to be uploaded.",
                    "format": "binary",
                    "nullable": true
                  },
                  "isRegionalPricingEnabled": {
                    "type": "boolean",
                    "description": "Whether regional pricing should be enabled for the developer product.\r\nShould not be used when setting isManagedPricingEnabled.",
                    "nullable": true,
                    "deprecated": true
                  },
                  "storePageEnabled": {
                    "type": "boolean",
                    "description": "Whether the developer product should be available for purchase on the external store page.",
                    "nullable": true,
                    "deprecated": true
                  },
                  "isManagedPricingEnabled": {
                    "type": "boolean",
                    "description": "Whether managed pricing should be enabled for the developer product.",
                    "nullable": true
                  }
                }
              },
              "encoding": {
                "name": {
                  "style": "form"
                },
                "description": {
                  "style": "form"
                },
                "isForSale": {
                  "style": "form"
                },
                "price": {
                  "style": "form"
                },
                "imageFile": {
                  "style": "form"
                },
                "isRegionalPricingEnabled": {
                  "style": "form"
                },
                "storePageEnabled": {
                  "style": "form"
                },
                "isManagedPricingEnabled": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 3
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 3
          }
        },
        "x-roblox-scopes": [
          {
            "name": "developer-product:write",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          },
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": ["developer-product:write"]
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#DeveloperProducts_UpdateDeveloperProductV2"
        }
      }
    },
    "/developer-products/v2/universes/{universeId}/developer-products/{productId}/creator": {
      "get": {
        "tags": ["Developer products"],
        "summary": "Get developer product with configuration details",
        "operationId": "DeveloperProducts_GetDeveloperProductConfigV2",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "productId",
            "in": "path",
            "description": "The product ID of the developer product.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeveloperProductConfigV2"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 10
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 10
          }
        },
        "x-roblox-scopes": [
          {
            "name": "developer-product:read",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          },
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": ["developer-product:read"]
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#DeveloperProducts_GetDeveloperProductConfigV2"
        }
      }
    },
    "/game-passes/v1/universes/{universeId}/game-passes": {
      "post": {
        "tags": ["Game passes"],
        "summary": "Create game pass",
        "description": "Creates a new game pass with the provided configuration details.",
        "operationId": "GamePasses_CreateGamePass",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": ["name"],
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of the game pass."
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the game pass.",
                    "nullable": true
                  },
                  "imageFile": {
                    "type": "string",
                    "description": "The thumbnail image file to be uploaded.",
                    "format": "binary",
                    "nullable": true
                  },
                  "isForSale": {
                    "type": "boolean",
                    "description": "Whether the game pass should be on sale.",
                    "nullable": true
                  },
                  "price": {
                    "type": "integer",
                    "description": "The default price of the game pass.",
                    "format": "int64",
                    "nullable": true
                  },
                  "isRegionalPricingEnabled": {
                    "type": "boolean",
                    "description": "Whether regional pricing should be enabled for the game pass.",
                    "nullable": true,
                    "deprecated": true
                  },
                  "isManagedPricingEnabled": {
                    "type": "boolean",
                    "description": "Whether managed pricing should be enabled for the game pass.",
                    "nullable": true
                  }
                }
              },
              "encoding": {
                "name": {
                  "style": "form"
                },
                "description": {
                  "style": "form"
                },
                "imageFile": {
                  "style": "form"
                },
                "isForSale": {
                  "style": "form"
                },
                "price": {
                  "style": "form"
                },
                "isRegionalPricingEnabled": {
                  "style": "form"
                },
                "isManagedPricingEnabled": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePassConfigV2"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 5
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 5
          }
        },
        "x-roblox-scopes": [
          {
            "name": "game-pass:write",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          },
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": ["game-pass:write"]
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#GamePasses_CreateGamePass"
        }
      }
    },
    "/game-passes/v1/universes/{universeId}/game-passes/creator": {
      "get": {
        "tags": ["Game passes"],
        "summary": "List game passes by universe with configuration details",
        "operationId": "GamePasses_ListGamePassConfigsByUniverse",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "description": "The number of results to return. Defaults to 50 if not provided.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pageToken",
            "in": "query",
            "description": "The cursor token for pagination.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListGamePassConfigsByUniverseResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 10
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 10
          }
        },
        "x-roblox-scopes": [
          {
            "name": "game-pass:read",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          },
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": ["game-pass:read"]
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#GamePasses_ListGamePassConfigsByUniverse"
        }
      }
    },
    "/game-passes/v1/universes/{universeId}/game-passes/{gamePassId}": {
      "patch": {
        "tags": ["Game passes"],
        "summary": "Update game pass",
        "description": "Updates a game pass with the provided configuration details.\r\nNote that only fields provided in the request will be updated.",
        "operationId": "GamePasses_UpdateGamePass",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "gamePassId",
            "in": "path",
            "description": "The game pass ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The name of the game pass.",
                    "nullable": true
                  },
                  "description": {
                    "type": "string",
                    "description": "The description of the game pass.",
                    "nullable": true
                  },
                  "file": {
                    "type": "string",
                    "description": "The thumbnail image file to be uploaded. Alias for imageFile - if both are provided, imageFile will be used.",
                    "format": "binary",
                    "nullable": true
                  },
                  "imageFile": {
                    "type": "string",
                    "description": "The thumbnail image file to be uploaded.",
                    "format": "binary",
                    "nullable": true
                  },
                  "isForSale": {
                    "type": "boolean",
                    "description": "Whether the game pass should be on sale.",
                    "nullable": true
                  },
                  "price": {
                    "type": "integer",
                    "description": "The default price of the game pass.",
                    "format": "int64",
                    "nullable": true
                  },
                  "isRegionalPricingEnabled": {
                    "type": "boolean",
                    "description": "Whether regional pricing should be enabled for the game pass.",
                    "nullable": true,
                    "deprecated": true
                  },
                  "isManagedPricingEnabled": {
                    "type": "boolean",
                    "description": "Whether managed pricing should be enabled for the game pass.",
                    "nullable": true
                  }
                }
              },
              "encoding": {
                "name": {
                  "style": "form"
                },
                "description": {
                  "style": "form"
                },
                "file": {
                  "style": "form"
                },
                "imageFile": {
                  "style": "form"
                },
                "isForSale": {
                  "style": "form"
                },
                "price": {
                  "style": "form"
                },
                "isRegionalPricingEnabled": {
                  "style": "form"
                },
                "isManagedPricingEnabled": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 5
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 5
          }
        },
        "x-roblox-scopes": [
          {
            "name": "game-pass:write",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          },
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": ["game-pass:write"]
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#GamePasses_UpdateGamePass"
        }
      }
    },
    "/game-passes/v1/universes/{universeId}/game-passes/{gamePassId}/creator": {
      "get": {
        "tags": ["Game passes"],
        "summary": "Get game pass with configuration details",
        "operationId": "GamePasses_GetGamePassConfig",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The universe ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "gamePassId",
            "in": "path",
            "description": "The game pass ID.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePassConfigV2"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GamePasses.ErrorResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "SECOND",
            "maxInPeriod": 10
          },
          "perOauth2Authorization": {
            "period": "SECOND",
            "maxInPeriod": 10
          }
        },
        "x-roblox-scopes": [
          {
            "name": "game-pass:read",
            "targetResourceSpecifier": "universes"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          },
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": ["game-pass:read"]
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#GamePasses_GetGamePassConfig"
        }
      }
    },
    "/legacy-badges/v1/badges/{badgeId}": {
      "patch": {
        "tags": ["Badges"],
        "summary": "Updates badge configuration.",
        "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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe.badge:write"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#patch_legacy_badges_v1_badges__badgeId_"
        }
      }
    },
    "/legacy-badges/v1/universes/{universeId}/badges": {
      "post": {
        "tags": ["Badges", "Universes"],
        "summary": "Creates a new badge.",
        "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. ['User' = 1, 'Group' = 2]",
                    "type": "integer",
                    "format": "int32",
                    "enum": [1, 2]
                  },
                  "files": {
                    "description": "The badge icon.",
                    "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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe.badge:manage-and-spend-robux"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#post_legacy_badges_v1_universes__universeId__badges"
        }
      }
    },
    "/legacy-develop/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-team-collaboration:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/places#get_legacy_develop_v1_places__placeId__teamcreate_active_session_members"
        }
      }
    },
    "/legacy-develop/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#get_legacy_develop_v1_universes_multiget_permissions"
        }
      }
    },
    "/legacy-develop/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-team-collaboration:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/team-create#get_legacy_develop_v1_universes_multiget_teamcreate"
        }
      }
    },
    "/legacy-develop/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#post_legacy_develop_v1_universes__universeId__activate"
        }
      }
    },
    "/legacy-develop/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#post_legacy_develop_v1_universes__universeId__deactivate"
        }
      }
    },
    "/legacy-develop/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#get_legacy_develop_v1_universes__universeId__permissions"
        }
      }
    },
    "/legacy-develop/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-team-collaboration:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-team-collaboration:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/team-create#patch_legacy_develop_v1_universes__universeId__teamcreate"
        }
      }
    },
    "/legacy-develop/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-team-collaboration:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/team-create#delete_legacy_develop_v1_universes__universeId__teamcreate_memberships"
        }
      }
    },
    "/legacy-develop/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-group:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#get_legacy_develop_v1_user_groups_canmanage"
        }
      }
    },
    "/legacy-develop/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-team-collaboration:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/places#delete_legacy_develop_v2_teamtest__placeId_"
        }
      }
    },
    "/legacy-followings/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe.following:read"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/interactions#get_legacy_followings_v1_users__userId__universes"
        }
      }
    },
    "/legacy-followings/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe.following:write"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe.following:write"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/interactions#post_legacy_followings_v1_users__userId__universes__universeId_"
        }
      }
    },
    "/legacy-followings/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe.following:read"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/interactions#get_legacy_followings_v1_users__userId__universes__universeId__status"
        }
      }
    },
    "/legacy-followings/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe.following:read"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/interactions#get_legacy_followings_v2_users__userId__universes"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-badge:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#patch_legacy_game_internationalization_v1_badges__badgeId__description_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-badge:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#get_legacy_game_internationalization_v1_badges__badgeId__icons"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-badge:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-badge:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#post_legacy_game_internationalization_v1_badges__badgeId__icons_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-badge:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#get_legacy_game_internationalization_v1_badges__badgeId__name_description"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-badge:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-badge:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#patch_legacy_game_internationalization_v1_badges__badgeId__name_description_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-badge:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#patch_legacy_game_internationalization_v1_badges__badgeId__name_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-developer-product:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#patch_legacy_game_internationalization_v1_developer_products__developerProductId__description_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-developer-product:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#get_legacy_game_internationalization_v1_developer_products__developerProductId__icons"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-developer-product:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-developer-product:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#post_legacy_game_internationalization_v1_developer_products__developerProductId__icons_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-developer-product:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#get_legacy_game_internationalization_v1_developer_products__developerProductId__name_description"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-developer-product:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-developer-product:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#patch_legacy_game_internationalization_v1_developer_products__developerProductId__name_description_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-developer-product:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/developer-products#patch_legacy_game_internationalization_v1_developer_products__developerProductId__name_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "500": {
            "description": "0: An unknown error occurred."
          },
          "503": {
            "description": "17: Feature is disabled"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_game_internationalization_v1_game_icon_games__gameId_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_game_icon_games__gameId__language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-game-pass:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#patch_legacy_game_internationalization_v1_game_passes__gamePassId__description_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-game-pass:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#get_legacy_game_internationalization_v1_game_passes__gamePassId__icons"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-game-pass:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-game-pass:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#post_legacy_game_internationalization_v1_game_passes__gamePassId__icons_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-game-pass:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#get_legacy_game_internationalization_v1_game_passes__gamePassId__name_description"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-game-pass:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-game-pass:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#patch_legacy_game_internationalization_v1_game_passes__gamePassId__name_description_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-game-pass:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/game-passes#patch_legacy_game_internationalization_v1_game_passes__gamePassId__name_language_codes__languageCode_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__alt_text"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__image"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images_order"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#delete_legacy_game_internationalization_v1_game_thumbnails_games__gameId__language_codes__languageCode__images__imageId_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_game_internationalization_v1_name_description_games_translation_history"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_name_description_games__gameId_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_source_language_games__gameId_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_supported_languages_games__gameId_"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_game_internationalization_v1_supported_languages_games__gameId__automatic_translation_status"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_supported_languages_games__gameId__languages__languageCode__automatic_translation_status"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_game_internationalization_v1_supported_languages_games__gameId__languages__languageCode__image_translation_status"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
        }
      }
    },
    "/legacy-game-internationalization/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_game_internationalization_v1_supported_languages_games__gameId__universe_display_info_automatic_translation_settings"
        }
      }
    },
    "/legacy-groups/v1/groups/policies": {
      "post": {
        "tags": ["Groups"],
        "summary": "Gets group policy info used for compliance.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPoliciesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPoliciesResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Too many ids in request.\r\n2: Ids could not be parsed from request."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-group:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#post_legacy_groups_v1_groups_policies"
        }
      }
    },
    "/legacy-groups/v1/groups/{groupId}/audit-log": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets the Group's audit log",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "actionType",
            "description": "Filter for specific type of action performed",
            "schema": {
              "type": "string",
              "enum": [
                "DeletePost",
                "RemoveMember",
                "AcceptJoinRequest",
                "DeclineJoinRequest",
                "PostStatus",
                "ChangeRank",
                "BuyAd",
                "SendAllyRequest",
                "CreateEnemy",
                "AcceptAllyRequest",
                "DeclineAllyRequest",
                "DeleteAlly",
                "DeleteEnemy",
                "AddGroupPlace",
                "RemoveGroupPlace",
                "CreateItems",
                "ConfigureItems",
                "SpendGroupFunds",
                "ChangeOwner",
                "Delete",
                "AdjustCurrencyAmounts",
                "Abandon",
                "Claim",
                "Rename",
                "ChangeDescription",
                "InviteToClan",
                "KickFromClan",
                "CancelClanInvite",
                "BuyClan",
                "CreateGroupAsset",
                "UpdateGroupAsset",
                "ConfigureGroupAsset",
                "RevertGroupAsset",
                "CreateGroupDeveloperProduct",
                "ConfigureGroupGame",
                "CreateGroupDeveloperSubscriptionProduct",
                "Lock",
                "Unlock",
                "CreateGamePass",
                "CreateBadge",
                "ConfigureBadge",
                "SavePlace",
                "PublishPlace",
                "UpdateRolesetRank",
                "UpdateRolesetData",
                "BanMember",
                "UnbanMember",
                "CreateForumCategory",
                "UpdateForumCategory",
                "ArchiveForumCategory",
                "DeleteForumCategory",
                "DeleteForumPost",
                "DeleteForumComment",
                "PinForumPost",
                "UnpinForumPost",
                "LockForumPost",
                "UnlockForumPost",
                "CreateRoleset",
                "DeleteRoleset",
                "CreateCommerceProduct",
                "SetCommerceProductActive",
                "ArchiveCommerceProduct",
                "AcceptCommerceProductBundlingFee",
                "SetCommerceProductInactive",
                "ConnectMerchant",
                "DisconnectMerchant",
                "JoinGroup",
                "LeaveGroup",
                "UpdateGroupIcon",
                "UpdateGroupCoverPhoto",
                "AssignRole",
                "UnassignRole",
                "PublishAnnouncement",
                "DeleteAnnouncement"
              ]
            }
          },
          {
            "in": "query",
            "name": "userId",
            "description": "Filter for specific user id",
            "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.Groups.Api.GroupAuditLogPageResponse_Roblox.Groups.Api.Models.Response.GroupAuditLogResponseItem_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupAuditLogPageResponse_Roblox.Groups.Api.Models.Response.GroupAuditLogResponseItem_"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n8: Invalid or missing pagination parameters"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "23: Insufficient permissions to complete the request."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-group:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#get_legacy_groups_v1_groups__groupId__audit_log"
        }
      }
    },
    "/legacy-groups/v1/groups/{groupId}/description": {
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates the groups description",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupDescriptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupDescriptionRequest"
              }
            }
          },
          "description": "The Roblox.Groups.Api.UpdateGroupDescriptionRequest.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupDescriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupDescriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n29: Your group description was empty."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n18: The description is too long.\r\n23: Insufficient permissions to complete the request."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-group:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#patch_legacy_groups_v1_groups__groupId__description"
        }
      }
    },
    "/legacy-groups/v1/groups/{groupId}/notification-preference": {
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates the group's settings",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupNotificationPreferenceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupNotificationPreferenceRequest"
              }
            }
          },
          "description": "Roblox.Groups.Api.UpdateGroupSettingsRequest",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "format": "int32",
                  "description": " ['Unchanged' = 0, 'Created' = 1, 'Deleted' = 2, 'Updated' = 3]",
                  "enum": [0, 1, 2, 3],
                  "type": "integer"
                }
              },
              "text/json": {
                "schema": {
                  "format": "int32",
                  "description": " ['Unchanged' = 0, 'Created' = 1, 'Deleted' = 2, 'Updated' = 3]",
                  "enum": [0, 1, 2, 3],
                  "type": "integer"
                }
              }
            }
          },
          "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-user:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#patch_legacy_groups_v1_groups__groupId__notification_preference"
        }
      }
    },
    "/legacy-groups/v1/groups/{groupId}/settings": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets the Group's settings",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupSettingsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupSettingsResponse"
                }
              }
            }
          },
          "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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-group:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#get_legacy_groups_v1_groups__groupId__settings"
        }
      },
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates the group's settings",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupSettingsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupSettingsRequest"
              }
            }
          },
          "description": "Roblox.Groups.Api.UpdateGroupSettingsRequest",
          "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: 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."
          },
          "503": {
            "description": "31: Service is currently unavailable."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-group:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#patch_legacy_groups_v1_groups__groupId__settings"
        }
      }
    },
    "/legacy-groups/v1/groups/{groupId}/status": {
      "patch": {
        "tags": ["Groups"],
        "summary": "Sets group status",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.PostGroupStatusRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.PostGroupStatusRequest"
              }
            }
          },
          "description": "The Roblox.Groups.Api.PostGroupStatusRequest.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.ShoutResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.ShoutResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n7: Missing group status content.\r\n32: Description was filtered."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n6: You are not authorized to set the status of this group"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-group:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#patch_legacy_groups_v1_groups__groupId__status"
        }
      }
    },
    "/legacy-groups/v1/user/groups/pending": {
      "get": {
        "tags": ["Groups", "Users"],
        "summary": "Gets groups that the authenticated user has requested to join",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupDetailResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupDetailResponse_"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-group:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#get_legacy_groups_v1_user_groups_pending"
        }
      }
    },
    "/legacy-localization-tables/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_localization_tables_v1_autolocalization_games__gameId__autolocalizationtable"
        }
      }
    },
    "/legacy-localization-tables/v1/autolocalization/games/{gameId}/settings": {
      "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_localization_tables_v1_autolocalization_games__gameId__settings"
        }
      }
    },
    "/legacy-localization-tables/v1/autolocalization/metadata": {
      "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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_localization_tables_v1_autolocalization_metadata"
        }
      }
    },
    "/legacy-localization-tables/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_localization_tables_v1_localization_table_limits"
        }
      }
    },
    "/legacy-localization-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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#get_legacy_localization_tables_v1_localization_table_tables__assetId_"
        }
      }
    },
    "/legacy-localization-tables/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#patch_legacy_localization_tables_v1_localization_table_tables__tableId_"
        }
      }
    },
    "/legacy-localization-tables/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_localization_tables_v1_localization_table_tables__tableId__entries"
        }
      }
    },
    "/legacy-localization-tables/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"
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#post_legacy_localization_tables_v1_localization_table_tables__tableId__entries_translation_history"
        }
      }
    },
    "/legacy-localization-tables/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."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-universe:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#get_legacy_localization_tables_v1_localization_table_tables__tableId__entry_count"
        }
      }
    },
    "/legacy-publish/v1/badges/{badgeId}/icon": {
      "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-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 100
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 100
          }
        },
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "legacy-badge:manage"
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#post_legacy_publish_v1_badges__badgeId__icon"
        }
      }
    },
    "/matchmaking-api/v1/client-status": {
      "get": {
        "tags": ["Matchmaking"],
        "summary": "Get the client-status",
        "requestBody": {
          "description": "ClientStatusGetRequest",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ClientStatusGetRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientStatusGetRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientStatusGetRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ClientStatusGetRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_client_status"
        }
      },
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Set the client-status",
        "requestBody": {
          "description": "ClientStatusSetRequest",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ClientStatusSetRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientStatusSetRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ClientStatusSetRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ClientStatusSetRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success"
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_client_status"
        }
      }
    },
    "/matchmaking-api/v1/game-instances/forecast-update": {
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Forecast the outcome of launching an update",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ForecastUpdateRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ForecastUpdateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ForecastUpdateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ForecastUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForecastUpdateResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_game_instances_forecast_update"
        }
      }
    },
    "/matchmaking-api/v1/game-instances/get-update-status": {
      "get": {
        "tags": ["Matchmaking"],
        "summary": "Get the rollout status of an update",
        "parameters": [
          {
            "name": "universeId",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetUpdateStatusResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_game_instances_get_update_status"
        }
      }
    },
    "/matchmaking-api/v1/game-instances/launch-update": {
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Launch a game update",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/LaunchUpdateRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LaunchUpdateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LaunchUpdateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LaunchUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LaunchUpdateResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_game_instances_launch_update"
        }
      }
    },
    "/matchmaking-api/v1/game-instances/shutdown": {
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Shutdown game instances.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ShutdownGameInstancesRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShutdownGameInstancesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ShutdownGameInstancesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ShutdownGameInstancesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShutdownGameInstancesResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_game_instances_shutdown"
        }
      }
    },
    "/matchmaking-api/v1/game-instances/shutdown-all": {
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Shutdown all game instances.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "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."
                  }
                }
              },
              "encoding": {
                "PlaceId": {
                  "style": "form"
                },
                "ReplaceInstances": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShutdownAllGameInstancesResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_game_instances_shutdown_all"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/player-attribute": {
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Create a PlayerAttributeDefinition.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingPlayerAttributeDefinitionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingPlayerAttributeDefinitionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingPlayerAttributeDefinitionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingPlayerAttributeDefinitionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMatchmakingPlayerAttributeDefinitionResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_matchmaking_player_attribute"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/player-attribute/{attributeId}": {
      "delete": {
        "tags": ["Matchmaking"],
        "summary": "Delete the PlayerAttributeDefinition specified by attributeId.",
        "parameters": [
          {
            "name": "attributeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteMatchmakingPlayerAttributeDefinitionResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#delete_matchmaking_api_v1_matchmaking_player_attribute__attributeId_"
        }
      },
      "patch": {
        "tags": ["Matchmaking"],
        "summary": "Update the PlayerAttributeDefinition specified by attributeId.",
        "parameters": [
          {
            "name": "attributeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingPlayerAttributeDefinitionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingPlayerAttributeDefinitionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingPlayerAttributeDefinitionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingPlayerAttributeDefinitionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateMatchmakingPlayerAttributeDefinitionResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#patch_matchmaking_api_v1_matchmaking_player_attribute__attributeId_"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/player-attributes/{universeId}": {
      "get": {
        "tags": ["Matchmaking"],
        "summary": "List all PlayerAttributeDefinitions of a universe.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMatchmakingPlayerAttributeDefinitionsResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_matchmaking_player_attributes__universeId_"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configuration": {
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Creates a matchmaking scoring configuration.",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingScoringConfigurationRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingScoringConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingScoringConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingScoringConfigurationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMatchmakingScoringConfigurationResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_matchmaking_scoring_configuration"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configuration/default-weights": {
      "get": {
        "tags": ["Matchmaking"],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMatchmakingScoringDefaultWeightsResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_matchmaking_scoring_configuration_default_weights"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configuration/generate-mock-servers": {
      "get": {
        "tags": ["Matchmaking"],
        "parameters": [
          {
            "name": "count",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 1
            }
          },
          {
            "name": "capacity",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 6
            }
          },
          {
            "name": "playerAge",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25
            }
          },
          {
            "name": "playerPlayHistory",
            "in": "query",
            "schema": {
              "type": "number",
              "format": "double",
              "default": 2
            }
          },
          {
            "name": "isPlayerVoiceChatEnabled",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GenerateMockServerSignalValuesResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_matchmaking_scoring_configuration_generate_mock_servers"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configuration/place": {
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Sets a matchmaking scoring configuration for a place.",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SetPlaceMatchmakingScoringConfigurationRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPlaceMatchmakingScoringConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetPlaceMatchmakingScoringConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetPlaceMatchmakingScoringConfigurationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SetMatchmakingScoringConfigurationResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_matchmaking_scoring_configuration_place"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configuration/place/{placeId}": {
      "delete": {
        "tags": ["Matchmaking"],
        "summary": "Removes the matchmaking scoring configuration for a place.",
        "parameters": [
          {
            "name": "placeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemovePlaceMatchmakingScoringConfigurationResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#delete_matchmaking_api_v1_matchmaking_scoring_configuration_place__placeId_"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configuration/{scoringConfigurationId}": {
      "delete": {
        "tags": ["Matchmaking"],
        "summary": "Deletes a matchmaking scoring configuration.",
        "parameters": [
          {
            "name": "scoringConfigurationId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteMatchmakingScoringConfigurationResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#delete_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId_"
        }
      },
      "get": {
        "tags": ["Matchmaking"],
        "summary": "Updates a matchmaking scoring configuration.",
        "parameters": [
          {
            "name": "scoringConfigurationId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMatchmakingScoringConfigurationResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId_"
        }
      },
      "patch": {
        "tags": ["Matchmaking"],
        "summary": "Updates a matchmaking scoring configuration.",
        "parameters": [
          {
            "name": "scoringConfigurationId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingScoringConfigurationRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingScoringConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingScoringConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingScoringConfigurationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateMatchmakingScoringConfigurationResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#patch_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId_"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configuration/{scoringConfigurationId}/signals": {
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Creates a matchmaking scoring configuration signal.",
        "parameters": [
          {
            "name": "scoringConfigurationId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomMatchmakingSignalRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomMatchmakingSignalRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomMatchmakingSignalRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomMatchmakingSignalRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateCustomMatchmakingSignalResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId__signals"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configuration/{scoringConfigurationId}/signals/{signalName}": {
      "delete": {
        "tags": ["Matchmaking"],
        "summary": "Deletes a matchmaking scoring configuration custom signal.",
        "parameters": [
          {
            "name": "scoringConfigurationId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signalName",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteCustomMatchmakingSignalResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#delete_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId__signals__signalName_"
        }
      },
      "patch": {
        "tags": ["Matchmaking"],
        "summary": "Updates a matchmaking scoring configuration signal.",
        "parameters": [
          {
            "name": "scoringConfigurationId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "signalName",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomMatchmakingSignalRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomMatchmakingSignalRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomMatchmakingSignalRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomMatchmakingSignalRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateCustomMatchmakingSignalResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#patch_matchmaking_api_v1_matchmaking_scoring_configuration__scoringConfigurationId__signals__signalName_"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configurations/{universeId}": {
      "get": {
        "tags": ["Matchmaking"],
        "summary": "List all matchmaking scoring configurations for a universe.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMatchmakingScoringConfigurationsResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_matchmaking_scoring_configurations__universeId_"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/scoring-configurations/{universeId}/places": {
      "get": {
        "tags": ["Matchmaking"],
        "summary": "List all places with a matchmaking scoring configuration for a universe.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListPlaceMatchmakingScoringConfigurationsResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_matchmaking_scoring_configurations__universeId__places"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/server-attribute": {
      "post": {
        "tags": ["Matchmaking"],
        "summary": "Create a ServerAttributeDefinition.",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingServerAttributeDefinitionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingServerAttributeDefinitionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingServerAttributeDefinitionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateMatchmakingServerAttributeDefinitionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateMatchmakingServerAttributeDefinitionResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#post_matchmaking_api_v1_matchmaking_server_attribute"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/server-attribute/{attributeId}": {
      "delete": {
        "tags": ["Matchmaking"],
        "summary": "Delete the ServerAttributeDefinition specified by attributeId.",
        "parameters": [
          {
            "name": "attributeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteMatchmakingServerAttributeDefinitionResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#delete_matchmaking_api_v1_matchmaking_server_attribute__attributeId_"
        }
      },
      "patch": {
        "tags": ["Matchmaking"],
        "summary": "Update the ServerAttributeDefinition specified by attributeId.",
        "parameters": [
          {
            "name": "attributeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingServerAttributeDefinitionRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingServerAttributeDefinitionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingServerAttributeDefinitionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateMatchmakingServerAttributeDefinitionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateMatchmakingServerAttributeDefinitionResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#patch_matchmaking_api_v1_matchmaking_server_attribute__attributeId_"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/server-attributes/{universeId}": {
      "get": {
        "tags": ["Matchmaking"],
        "summary": "List all ServerAttributeDefinitions of a universe.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListMatchmakingServerAttributeDefinitionsResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_matchmaking_server_attributes__universeId_"
        }
      }
    },
    "/matchmaking-api/v1/matchmaking/universe/{universeId}/feature-flags": {
      "get": {
        "tags": ["Matchmaking"],
        "summary": "Gets feature flags for a customized matchmaking for a given universe.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMatchmakingCustomizationFeatureFlagsResponse"
                }
              }
            }
          }
        },
        "x-roblox-stability": "BETA",
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/matchmaking#get_matchmaking_api_v1_matchmaking_universe__universeId__feature_flags"
        }
      }
    },
    "/messaging-service/v1/universes/{universeId}/topics/{topic}": {
      "post": {
        "tags": ["Universes"],
        "operationId": "CrossServerMessaging_Publish",
        "x-roblox-cloud-api-operation-name": "Publish a Message",
        "x-roblox-stability": "BETA",
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/universes/{universe_id}:publishMessage",
            "httpMethod": "POST",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/universes#Cloud_PublishUniverseMessage"
          }
        ],
        "summary": "Publish a cross-server message to a universe",
        "description": "Publish a message to a pre-defined topic of an experience, with the size of the message up to 1,024 characters (1 KB). Requires the **Publish** permission for API keys and the **universe-messaging-service:publish** scope for OAuth 2.0 apps. See [Cross-server messaging](/cloud-services/cross-server-messaging.md#subscribe-users-to-receive-messages) for defining and subscribing users to a topic.",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "description": "The identifier of the experience in which you want to send your messages to. You can [copy your experience's Universe ID](/cloud/guides/usage-messaging.md#publishing-messages-to-live-servers) on **Creator Dashboard**.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "topic",
            "in": "path",
            "required": true,
            "description": "The topic that you want to publish your message to, with up to 80 characters.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PublishRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PublishRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PublishRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Returns an empty response body."
          },
          "400": {
            "description": "Invalid request."
          },
          "401": {
            "description": "The API key is not valid for this operation / You don't have the authorization."
          },
          "403": {
            "description": "Publishing is not allowed on this experience."
          },
          "500": {
            "description": "Server internal error / Unknown error."
          }
        },
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          },
          "perOauth2Authorization": {
            "period": "MINUTE",
            "maxInPeriod": 5000
          }
        },
        "security": [
          {
            "roblox-api-key": []
          },
          {
            "roblox-oauth2": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe-messaging-service:publish"
          }
        ],
        "x-roblox-cloud-api-operation": true,
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": true
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#CrossServerMessaging_Publish"
        }
      }
    },
    "/ordered-data-stores/v1/universes/{universeId}/orderedDataStores/{orderedDataStore}/scopes/{scope}/entries": {
      "get": {
        "tags": ["Data and memory stores"],
        "description": "Returns a list of entries from an ordered data store.",
        "operationId": "OrderedDataStores_ListEntries",
        "x-roblox-cloud-api-operation-name": "List",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderedDataStore",
            "in": "path",
            "description": "The name of the target ordered data store.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "path",
            "description": "The name of the data store scope. See [Scopes](/cloud/guides/data-stores/request-handling.md#scopes).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "max_page_size",
            "in": "query",
            "description": "The maximum number of entries to return. The service may return fewer than this value. The default value is `10`. The maximum value is `100`, and any input above 100 is coerced to `100`.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "page_token",
            "in": "query",
            "description": "A page token received from a previous `List` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `List` must match the call providing the page token.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order_by",
            "in": "query",
            "description": "The enumeration direction. The order by default is ascending. Input a `desc` suffix for descending.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter",
            "in": "query",
            "description": "The range of qualifying values of entries to return. See [Filters](/cloud/guides/data-stores/request-handling.md#filters).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListEntriesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request: invalid orderedDataStore, scope or entry name or encoding."
          },
          "403": {
            "description": "Forbidden: studio access to APIs is not allowed, incorrect API key or scope."
          },
          "429": {
            "description": "Too Many Requests."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:read"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --location 'https://apis.roblox.com/ordered-data-stores/v1/universes/<universeId>/orderedDataStores/<orderedDataStore>/scopes/<scope>/entries' \\\n --header 'x-api-key: <insert-api-key>' \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",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_ListOrderedDataStoreEntries"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#OrderedDataStores_ListEntries"
        }
      },
      "post": {
        "tags": ["Data and memory stores"],
        "description": "Creates a new entry with the content value provided.",
        "operationId": "OrderedDataStores_CreateEntry",
        "x-roblox-cloud-api-operation-name": "Create",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderedDataStore",
            "in": "path",
            "description": "The name of the ordered data store.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "path",
            "description": "The name of the data store scope. See [Scopes](/cloud/guides/data-stores/request-handling.md#scopes).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "id",
            "in": "query",
            "description": "The name of the entry.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEntryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Entry"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request: invalid orderedDataStore, scope or entry name or encoding."
          },
          "403": {
            "description": "Forbidden: studio access to APIs is not allowed, incorrect API key or scope."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too Many Requests."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:write"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --location 'https://apis.roblox.com/ordered-data-stores/v1/universes/<universeId>/orderedDataStores/<orderedDataStore>/scopes/<scope>/entries?id=<id>' \\\n--header 'x-api-key: <insert-api-key>' \\\n--header 'Content-Type: application/json' \\\n--data '{ \n    \"value\": <long> \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",
            "httpMethod": "POST",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_CreateOrderedDataStoreEntry"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#OrderedDataStores_CreateEntry"
        }
      }
    },
    "/ordered-data-stores/v1/universes/{universeId}/orderedDataStores/{orderedDataStore}/scopes/{scope}/entries/{entry}": {
      "delete": {
        "tags": ["Data and memory stores"],
        "description": "Deletes the specified entry. Unlike standard data stores, which mark entries for deletion, ordered data store entries are deleted immediately.",
        "operationId": "OrderedDataStores_DeleteEntry",
        "x-roblox-cloud-api-operation-name": "Delete",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderedDataStore",
            "in": "path",
            "description": "The name of the ordered data store.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "path",
            "description": "The name of the data store scope. See [Scopes](/cloud/guides/data-stores/request-handling.md#scopes).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success: the entry was successfully deleted or didn't exist."
          },
          "400": {
            "description": "Bad Request: invalid orderedDataStore, scope or entry name or encoding."
          },
          "403": {
            "description": "Forbidden: Studio access to APIs is not allowed, incorrect API key or scope."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too Many Requests."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:write"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --location --request DELETE 'https://apis.roblox.com/ordered-data-stores/v1/universes/<universeId>/orderedDataStores/<orderedDataStore>/scopes/<scope>/entries/<entry>' \\\n --header 'x-api-key: <insert-api-key>' \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}",
            "httpMethod": "DELETE",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_DeleteOrderedDataStoreEntry"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#OrderedDataStores_DeleteEntry"
        }
      },
      "get": {
        "tags": ["Data and memory stores"],
        "description": "Gets and returns the specified entry.",
        "operationId": "OrderedDataStores_GetEntry",
        "x-roblox-cloud-api-operation-name": "Get",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderedDataStore",
            "in": "path",
            "description": "The name of the ordered data store.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "path",
            "description": "The name of the data store scope. See [Scopes](/cloud/guides/data-stores/request-handling.md#scopes).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Entry"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request: invalid orderedDataStore, scope or entry name or encoding."
          },
          "403": {
            "description": "Forbidden: studio access to APIs is not allowed, incorrect API key or scope."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too Many Requests."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:read"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --location 'https://apis.roblox.com/ordered-data-stores/v1/universes/<universeId>/orderedDataStores/<orderedDataStore>/scopes/<scope>/entries/<entry>' \\\n --header 'x-api-key: <insert-api-key>' \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}",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_GetOrderedDataStoreEntry"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#OrderedDataStores_GetEntry"
        }
      },
      "patch": {
        "tags": ["Data and memory stores"],
        "description": "Updates an entry value and returns the updated entry.",
        "operationId": "OrderedDataStores_UpdateEntry",
        "x-roblox-cloud-api-operation-name": "Update",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderedDataStore",
            "in": "path",
            "description": "The name of the ordered data store.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "path",
            "description": "The name of the data store scope. See [Scopes](/cloud/guides/data-stores/request-handling.md#scopes).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "allow_missing",
            "in": "query",
            "description": "The flag to allow the creation of an entry if the entry doesn't exist. See [Allow missing flags](/cloud/guides/data-stores/request-handling.md.md#allow-missing-flags).",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEntryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Entry"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request: invalid orderedDataStore, scope or entry name or encoding."
          },
          "403": {
            "description": "Forbidden: studio access to APIs is not allowed, incorrect API key or scope."
          },
          "404": {
            "description": "Not found."
          },
          "409": {
            "description": "Aborted."
          },
          "429": {
            "description": "Too Many Requests."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:write"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --location --request PATCH 'https://apis.roblox.com/ordered-data-stores/v1/universes/<universeId>/orderedDataStores/<orderedDataStore>/scopes/<scope>/entries/<entry>' \\\n--header 'x-api-key: <insert-api-key>' \\\n--header 'Content-Type: application/json' \\\n--data '{ \n    \"value\": <long> \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}",
            "httpMethod": "PATCH",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/storage#Cloud_UpdateOrderedDataStoreEntry"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/storage#OrderedDataStores_UpdateEntry"
        }
      }
    },
    "/ordered-data-stores/v1/universes/{universeId}/orderedDataStores/{orderedDataStore}/scopes/{scope}/entries/{entry}:increment": {
      "post": {
        "tags": ["Data and memory stores"],
        "description": "Increments the value of the key by the provided amount and returns the updated entry.\n\nKnown issue: Entry values can increment past the valid range and this may persist in the backend. Returned values will clamp to the valid range.",
        "operationId": "OrderedDataStores_IncrementEntry",
        "x-roblox-cloud-api-operation-name": "Increment",
        "x-roblox-stability": "BETA",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "description": "The identifier of the experience with ordered data stores that you want to access. You can find your experience's universe ID on Creator Hub.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "orderedDataStore",
            "in": "path",
            "description": "The name of the ordered data store.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "scope",
            "in": "path",
            "description": "The name of the data store scope. See [Scopes](/cloud/guides/data-stores/request-handling.md#scopes).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entry",
            "in": "path",
            "description": "The entry ID.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IncrementEntryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Entry"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request: invalid orderedDataStore, scope or entry name or encoding."
          },
          "403": {
            "description": "Forbidden: studio access to APIs is not allowed, incorrect API key or scope."
          },
          "404": {
            "description": "Not found."
          },
          "429": {
            "description": "Too Many Requests."
          }
        },
        "security": [
          {
            "roblox-api-key": []
          }
        ],
        "x-roblox-scopes": [
          {
            "name": "universe.ordered-data-store.scope.entry:write"
          }
        ],
        "x-roblox-cloud-api-operation-code-samples": [
          {
            "language": "curl",
            "script": "curl --location 'https://apis.roblox.com/ordered-data-stores/v1/universes/<universeId>/orderedDataStores/<orderedDataStore>/scopes/<scope>/entries/<entry>:increment' \\\n--header 'x-api-key: <insert-api-key>' \\\n--header 'Content-Type: application/json' \\\n--data '{ \n    \"amount\": <long> \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": 1000
          }
        },
        "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": 1000
          }
        },
        "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": ["Places"],
        "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/places#GameServers_GetFilterOptions"
        }
      }
    },
    "/server-management/v1/universes/{universeId}/places/{placeId}/versions/{versionNumber}/game-servers": {
      "get": {
        "tags": ["Places"],
        "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.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "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/places#GameServers_ListGameServers"
        }
      }
    },
    "/server-management/v1/universes/{universeId}/places/{placeId}/versions/{versionNumber}/game-servers/{jobId}/logs": {
      "get": {
        "tags": ["Places"],
        "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 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.",
            "schema": {
              "maximum": 100,
              "minimum": 1,
              "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/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/places#GameServers_ListGameServerLogs"
        }
      }
    },
    "/server-management/v1/universes/{universeId}/restarts": {
      "get": {
        "tags": ["Universes"],
        "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/universes#Restarts_ListRestartStatuses"
        }
      },
      "post": {
        "tags": ["Universes"],
        "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/universes#Restarts_LaunchRestart"
        }
      }
    },
    "/server-management/v1/universes/{universeId}/restarts:forecast": {
      "get": {
        "tags": ["Universes"],
        "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/universes#Restarts_ForecastRestart"
        }
      }
    },
    "/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\r\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": "Success",
            "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.\r\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": "Success",
            "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": "Success",
            "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": {
              "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": {
              "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\r\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": "Success",
            "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": "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": "Success",
            "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": "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"
          }
        ],
        "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 '<roblox></roblox>'\n"
          }
        ],
        "x-roblox-rate-limits": {
          "perApiKeyOwner": {
            "period": "MINUTE",
            "maxInPeriod": 30
          }
        },
        "x-roblox-throttling-limit": {
          "perApiKey": {
            "periodInSeconds": "60",
            "maxInPeriod": 30
          }
        },
        "x-roblox-size-limit": 10485760,
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/places#Places_CreatePlaceVersionApiKey"
        }
      }
    },
    "/v1/account/settings/account-country": {
      "get": {
        "tags": ["Accounts"],
        "summary": "Get a user's current account country setting.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.Models.Response.AccountCountrySettingsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.Models.Response.AccountCountrySettingsResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_get_v1_account_settings_account_country"
        }
      },
      "post": {
        "tags": ["Accounts"],
        "summary": "Updates the user's account country.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.UpdateAccountCountryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.UpdateAccountCountryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.Models.Response.UpdateAccountCountryResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.Models.Response.UpdateAccountCountryResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: InvalidRequest"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n2: OperationNotPermitted"
          },
          "404": {
            "description": "2: OperationNotPermitted"
          },
          "500": {
            "description": "0: Unknown"
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_post_v1_account_settings_account_country"
        }
      }
    },
    "/v1/account/settings/metadata": {
      "get": {
        "tags": ["Accounts"],
        "summary": "Returns metadata used by the account settings page",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.Models.AccountsSettingsMetadataModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.Models.AccountsSettingsMetadataModel"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_get_v1_account_settings_metadata"
        }
      }
    },
    "/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": "Accept",
            "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": "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",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "contentRepresentationPriorityList",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "in": "query",
            "name": "assetResolutionMode",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "accessContext",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usageContext",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "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-quotas": {
      "get": {
        "tags": ["Assets"],
        "summary": "List asset quotas of the given resource type and asset type.",
        "parameters": [
          {
            "in": "query",
            "name": "resourceType",
            "description": "Resource type of the asset quota",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "assetType",
            "description": "Asset type of the asset quota",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "useDummyData",
            "description": "Use dummy data for testing. This is for internal use only",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Publish.Api.AssetQuotasResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Publish.Api.AssetQuotasResponse"
                }
              }
            }
          },
          "400": {
            "description": "7: The asset type is not appropriate for this request.\r\n8: The resource type is not appropriate for this request."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "500": {
            "description": "0: Reserved for base level errors. Do not use in your endpoint directly, do not document."
          }
        },
        "servers": [
          {
            "url": "https://publish.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#publish_get_v1_asset_quotas"
        }
      }
    },
    "/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/asset-to-category": {
      "get": {
        "tags": ["Assets", "Avatars"],
        "summary": "Lists a mapping for assets to category IDs to convert from inventory ID to catalog ID. Creates a mapping to link 'Get More' button in inventory page to the relevant catalog page.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "format": "int64",
                    "type": "integer"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "format": "int64",
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_asset_to_category"
        }
      }
    },
    "/v1/asset-to-subcategory": {
      "get": {
        "tags": ["Assets", "Avatars"],
        "summary": "Lists a mapping for assets to subcategory IDs to convert from inventory ID to catalog ID. Creates a mapping to link 'Get More' button in inventory page to the relevant catalog page.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "format": "int64",
                    "type": "integer"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "format": "int64",
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_asset_to_subcategory"
        }
      }
    },
    "/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": "Accept",
            "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": ""
            }
          },
          {
            "in": "query",
            "name": "doNotFallbackToBaselineRepresentation",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "contentRepresentationPriorityList",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "in": "query",
            "name": "accessContext",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usageContext",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              }
            }
          }
        },
        "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": "Accept",
            "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": ""
            }
          },
          {
            "in": "query",
            "name": "doNotFallbackToBaselineRepresentation",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "contentRepresentationPriorityList",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "in": "query",
            "name": "accessContext",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usageContext",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              }
            }
          }
        },
        "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#ThumbnailsApi": {
      "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": "Accept",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                  }
                }
              }
            }
          }
        },
        "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/voting": {
      "get": {
        "tags": ["Assets", "Interactions"],
        "summary": "Gets the voting information of the given assets",
        "parameters": [
          {
            "in": "query",
            "name": "assetIds",
            "description": "The ids of the Roblox.Platform.Assets.IAsset.",
            "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.Api.Develop.Models.Response.AssetVotingModel_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Api.Develop.Models.Response.AssetVotingModel_"
                }
              }
            }
          }
        },
        "deprecated": true,
        "servers": [
          {
            "url": "https://develop.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "description": "Please use toolbox service to get asset voting information.",
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#develop_get_v1_assets_voting"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/toolbox-service/v2/assets/{id}",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#Toolbox_GetAssetDetails"
          }
        ]
      }
    },
    "/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-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/audio": {
      "post": {
        "tags": ["Assets"],
        "summary": "Published an audio file and returns the new asset info.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Publish.Api.UploadAudioRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Publish.Api.UploadAudioRequest"
              }
            }
          },
          "description": "The file upload request body. Roblox.Publish.Api.UploadAudioRequest",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Publish.Api.PublishAudioResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Publish.Api.PublishAudioResponse"
                }
              }
            }
          },
          "400": {
            "description": "3: The request did not contain a file to be uploaded.\r\n4: The file in the request is too large.\r\n5: The duration of the audio file is too long.\r\n7: Failed to parse the file.\r\n8: The file type is not supported.\r\n9: The file is corrupted\r\n11: Missing permissions to spend group funds.\r\n14: The user/group does not have suffiecient funds to publish.\r\n14: The user/group does not have suffiecient funds to publish.\r\n15: The audio file has already been reviewed and rejected.\r\n18: Too many requests. Try again later.\r\n20: Error while trying to purchase the product.\r\n22: The file size estimation error was greater than the acceptable margin of error.\r\n23: The duration estimation error was greater than the acceptable margin of error.\r\n24: Asset privacy is invalid.\r\n29: Invalid argument in the request."
          },
          "401": {
            "description": "0: Authorization has been denied for this request.\r\n1: The request did not include an authorization."
          },
          "403": {
            "description": "0: Token Validation Failed"
          },
          "500": {
            "description": "19: Asset creation was unavailable. Please try again."
          }
        },
        "servers": [
          {
            "url": "https://publish.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#publish_post_v1_audio"
        }
      }
    },
    "/v1/audio/verify": {
      "post": {
        "tags": ["Assets"],
        "summary": "Verifies an audio file and returns a product that you can purchase to publish the audio file.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Publish.Api.VerifyAudioRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Publish.Api.VerifyAudioRequest"
              }
            }
          },
          "description": "The verify audio request body. Roblox.Publish.Api.VerifyAudioRequest",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Publish.Api.VerifyAudioResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Publish.Api.VerifyAudioResponse"
                }
              }
            }
          },
          "400": {
            "description": "3: The request did not contain a file to be uploaded.\r\n4: The file in the request is too large.\r\n5: The duration of the audio file is too long.\r\n7: Failed to parse the file.\r\n8: The file type is not supported.\r\n9: The file is corrupted\r\n18: Too many requests. Try again later."
          },
          "401": {
            "description": "0: Authorization has been denied for this request.\r\n1: The request did not include an authorization."
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "servers": [
          {
            "url": "https://publish.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#publish_post_v1_audio_verify"
        }
      }
    },
    "/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-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-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/auto-localization-table/games/{gameId}/ingestion": {
      "patch": {
        "tags": ["Localization", "Universes"],
        "summary": "Ingests entries for auto localization. Needs to be an authorized user.",
        "parameters": [
          {
            "in": "path",
            "name": "gameId",
            "description": "The game id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Roblox.LocalizationTables.Api.IngestAutoScrapedContentForGameRequest"
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              },
              "text/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "10: Maximum entries exceeded. Please keep the number of entries per request below the maximum.\r\n13: Request body can't be null\r\n16: Entries can't be null or empty\r\n34: Actor provided is invalid"
          },
          "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://localizationtables.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_patch_v1_auto_localization_table_games__gameId__ingestion"
        }
      }
    },
    "/v1/autolocalization/games/{gameId}/autolocalizationtable": {
      "patch": {
        "tags": ["Localization"],
        "parameters": [
          {
            "in": "path",
            "name": "gameId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.SetAutolocalizationTableForGameRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.GameInternationalization.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"
          }
        },
        "deprecated": true,
        "servers": [
          {
            "url": "https://gameinternationalization.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "description": "Use the Autolocalization controller in LocalizationTables API",
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_patch_v1_autolocalization_games__gameId__autolocalizationtable"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://localizationtables.roblox.com/v1/autolocalization/games/{gameId}/autolocalizationtable",
            "httpMethod": "PATCH",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/localization#localizationtables_patch_v1_autolocalization_games__gameId__autolocalizationtable"
          }
        ]
      },
      "post": {
        "tags": ["Localization"],
        "parameters": [
          {
            "in": "path",
            "name": "gameId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GameAutolocalizationInformationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.GameAutolocalizationInformationResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "deprecated": true,
        "servers": [
          {
            "url": "https://gameinternationalization.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "description": "Use the Autolocalization controller in LocalizationTables API",
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_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}/autolocalizationtable#LocalizationTablesApi": {
      "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-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-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": {
      "patch": {
        "tags": ["Localization"],
        "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.GameInternationalization.Api.SetAutolocalizationSettingsForGameRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.GameInternationalization.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"
          },
          "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"
          }
        },
        "deprecated": true,
        "servers": [
          {
            "url": "https://gameinternationalization.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "description": "Use the Autolocalization controller in LocalizationTables API",
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/localization#gameinternationalization_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/games/{gameId}/settings#LocalizationTablesApi": {
      "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-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": {
      "get": {
        "tags": ["Metadata"],
        "summary": "Metadata for AutoLocalization Configuration",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.AutoLocalizationMetadataResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.AutoLocalizationMetadataResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "deprecated": true,
        "servers": [
          {
            "url": "https://gameinternationalization.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "description": "Use the Autolocalization controller in LocalizationTables API",
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/metadata#gameinternationalization_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/autolocalization/metadata#LocalizationTablesApi": {
      "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-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-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-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-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."
          }
        },
        "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"
        },
        "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.",
        "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-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.",
        "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-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.",
        "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-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-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": {
      "post": {
        "tags": ["Assets", "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": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "Files": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Badges.Api.IconUploadResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Badges.Api.IconUploadResponse"
                }
              }
            }
          },
          "400": {
            "description": "6: Text moderated.\r\n22: Icon file is not present in the request."
          },
          "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."
          },
          "429": {
            "description": "13: Too many requests, try again later."
          }
        },
        "servers": [
          {
            "url": "https://badges.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#badges_post_v1_badges__badgeId__icon"
        }
      }
    },
    "/v1/badges/{badgeId}/icon#PublishApi": {
      "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."
          }
        },
        "servers": [
          {
            "url": "https://publish.roblox.com"
          }
        ],
        "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"
        },
        "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"
          }
        ]
      }
    },
    "/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-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-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-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-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-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-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-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:\r\n            1. Avatar\r\n            2. AvatarHeadShot\r\n            3. GameIcon\r\n            4. BadgeIcon\r\n            5. GameThumbnail\r\n            6. GamePass\r\n            7. Asset\r\n            8. BundleThumbnail\r\n            9. Outfit\r\n            10. GroupIcon\r\n            11. DeveloperProduct\r\n            12. AutoGeneratedAsset\r\n            13. AvatarBust\r\n            14. PlaceIcon\r\n            15. AutoGeneratedGameIcon\r\n            16. ForceAutoGeneratedGameIcon\r\n            17. Look\r\n            18. CreatorContextAsset\r\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#UsersApi": {
      "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-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-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/bundles/{bundleId}/recommendations": {
      "get": {
        "tags": ["Assets", "Avatars"],
        "summary": "Gets recommendations for a given bundle, bundleId of 0 returns randomized bundles\r\n- Accepts both public and authenticated users.",
        "parameters": [
          {
            "in": "path",
            "name": "bundleId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "numItems",
            "description": "The number of recommended items to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Catalog.Api.BundleDetailsModel_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Catalog.Api.BundleDetailsModel_"
                }
              }
            }
          },
          "400": {
            "description": "1: Invalid bundle\r\n2: Error retrieving bundles\r\n3: Error getting bundle recommendations\r\n4: NumItems exceed maximum"
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "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__recommendations"
        }
      }
    },
    "/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-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/categories": {
      "get": {
        "tags": ["Assets", "Avatars", "Metadata"],
        "summary": "Lists Category Names and their Ids.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Roblox.Catalog.Api.CategoryModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Roblox.Catalog.Api.CategoryModel"
                  }
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_categories"
        }
      }
    },
    "/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/creations/get-asset-details": {
      "post": {
        "tags": ["Assets"],
        "summary": "Gets the asset status and other configuration details for the given assetIds list.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.AssetCreationsDetailsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.AssetCreationsDetailsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.AssetCreationsDetailsResponse"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.AssetCreationsDetailsResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "1: Missing AssetIds parameters\r\n2: Invalid asset Ids"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed"
          },
          "414": {
            "description": "3: Too many asset Ids"
          },
          "429": {
            "description": "9: Flood Limit Exceeded"
          },
          "503": {
            "description": "6: Service Unavailable"
          }
        },
        "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_creations_get_asset_details"
        }
      }
    },
    "/v1/creations/get-assets": {
      "get": {
        "tags": ["Assets"],
        "summary": "Gets the user created asset information filtered by the given asset type.",
        "parameters": [
          {
            "in": "query",
            "name": "assetType",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "isArchived",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "groupId",
            "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.ApiPageResponse_Roblox.ItemConfiguration.Api.AssetCreationsResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.ItemConfiguration.Api.AssetCreationsResponse_"
                }
              }
            }
          },
          "400": {
            "description": "5: Invalid assetType\r\n10: Invalid Asset Category"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "7: User does not have necessary permissions for group\r\n8: Asset type does not have necessary permissions for group"
          },
          "429": {
            "description": "9: Flood Limit Exceeded"
          },
          "503": {
            "description": "6: Service Unavailable"
          }
        },
        "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_creations_get_assets"
        }
      }
    },
    "/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#UsersApi": {
      "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-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-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-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-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-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-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-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-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": {
      "get": {
        "tags": ["Accounts"],
        "summary": "Gets the authenticated user's email address and verified status",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.EmailResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.EmailResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_get_v1_email"
        }
      },
      "patch": {
        "tags": ["Accounts"],
        "summary": "Updates the authenticated user's email address",
        "requestBody": {
          "$ref": "#/components/requestBodies/Roblox.AccountSettings.Api.UpdateEmailRequest"
        },
        "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": "8: Password is incorrect.\r\n9: Invalid email address."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n2: This feature is currently disabled. Please try again later.\r\n3: There are too many accounts associated with this email address.\r\n11: You must be on the Corporate network to log in."
          },
          "409": {
            "description": "4: This is already the current email."
          },
          "429": {
            "description": "6: Too many attempts to update email. Please try again later.\r\n7: Too many attempts to send verification email. Please try again later."
          },
          "503": {
            "description": "2: This feature is currently disabled. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_patch_v1_email"
        }
      },
      "post": {
        "tags": ["Accounts"],
        "summary": "Updates the authenticated user's email address",
        "requestBody": {
          "$ref": "#/components/requestBodies/Roblox.AccountSettings.Api.UpdateEmailRequest"
        },
        "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": "8: Password is incorrect.\r\n9: Invalid email address."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n2: This feature is currently disabled. Please try again later.\r\n3: There are too many accounts associated with this email address.\r\n11: You must be on the Corporate network to log in."
          },
          "409": {
            "description": "4: This is already the current email."
          },
          "429": {
            "description": "6: Too many attempts to update email. Please try again later.\r\n7: Too many attempts to send verification email. Please try again later."
          },
          "503": {
            "description": "2: This feature is currently disabled. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_post_v1_email"
        }
      }
    },
    "/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/email/verify#AccountSettingsApi": {
      "post": {
        "tags": ["Accounts"],
        "summary": "Send verify email to the authenticated user's email address",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.SendVerifyEmailRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.SendVerifyEmailRequest"
              }
            }
          },
          "description": "The request body."
        },
        "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": "10: No email address is associated with the account."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n2: This feature is currently disabled. Please try again later.\r\n11: You must be on the Corporate network to log in."
          },
          "409": {
            "description": "5: The email is already verified."
          },
          "429": {
            "description": "7: Too many attempts to send verification email. Please try again later."
          },
          "503": {
            "description": "2: This feature is currently disabled. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_post_v1_email_verify"
        }
      }
    },
    "/v1/emails": {
      "get": {
        "tags": ["Accounts"],
        "summary": "Gets the authenticated user's verified email and pending (unverified) email if one exists",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.CurrentEmailsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.CurrentEmailsResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_get_v1_emails"
        }
      }
    },
    "/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-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-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}/assets/{assetId}/favorite": {
      "delete": {
        "tags": ["Assets", "Avatars", "Interactions", "Users"],
        "summary": "Delete a favorite for an asset by the authenticated user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "assetId",
            "description": "",
            "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: Invalid user Id.\r\n2: Invalid asset Id."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n6: You are not authorized to perform this action."
          },
          "409": {
            "description": "4: Asset is already not favorited."
          },
          "429": {
            "description": "5: This action was floodchecked. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_delete_v1_favorites_users__userId__assets__assetId__favorite"
        }
      },
      "get": {
        "tags": ["Assets", "Avatars", "Interactions", "Users"],
        "summary": "Gets the favorite model for the asset and user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "assetId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Catalog.Api.AssetFavoriteModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Catalog.Api.AssetFavoriteModel"
                }
              }
            }
          },
          "400": {
            "description": "1: Invalid user Id.\r\n2: Invalid asset Id."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "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__assets__assetId__favorite"
        }
      },
      "post": {
        "tags": ["Assets", "Avatars", "Interactions", "Users"],
        "summary": "Create a favorite for an asset by the authenticated user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "assetId",
            "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: Invalid user Id.\r\n2: Invalid asset Id."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n6: You are not authorized to perform this action."
          },
          "409": {
            "description": "3: Asset is already favorited."
          },
          "429": {
            "description": "5: This action was floodchecked. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_post_v1_favorites_users__userId__assets__assetId__favorite"
        }
      }
    },
    "/v1/favorites/users/{userId}/bundles/{bundleId}/favorite": {
      "delete": {
        "tags": ["Assets", "Avatars", "Interactions", "Users"],
        "summary": "Delete favorite for the bundle by the authenticated user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "bundleId",
            "description": "",
            "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: Invalid user Id.\r\n2: Invalid bundle Id."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n6: You are not authorized to perform this action."
          },
          "409": {
            "description": "4: Bundle is already not favorited."
          },
          "429": {
            "description": "5: This action was floodchecked. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_delete_v1_favorites_users__userId__bundles__bundleId__favorite"
        }
      },
      "get": {
        "tags": ["Assets", "Avatars", "Interactions", "Users"],
        "summary": "Gets the favorite model for the bundle and user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "bundleId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Catalog.Api.BundleFavoriteModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Catalog.Api.BundleFavoriteModel"
                }
              }
            }
          },
          "400": {
            "description": "1: Invalid user Id.\r\n2: Invalid bundle Id."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "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__bundles__bundleId__favorite"
        }
      },
      "post": {
        "tags": ["Assets", "Avatars", "Interactions", "Users"],
        "summary": "Create a favorite for the bundle by the authenticated user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "bundleId",
            "description": "",
            "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: Invalid user Id.\r\n2: Invalid bundle Id."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n6: You are not authorized to perform this action."
          },
          "409": {
            "description": "3: Bundle is already favorited."
          },
          "429": {
            "description": "5: This action was floodchecked. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_post_v1_favorites_users__userId__bundles__bundleId__favorite"
        }
      }
    },
    "/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-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/favorites/users/{userId}/favorites/{subtypeId}/bundles": {
      "get": {
        "tags": ["Assets", "Avatars", "Interactions", "Users"],
        "summary": "Lists the bundles favorited by a given user with the given bundle subtypeId.Switched to EAAS style pagination cursors since July 2024.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "subtypeId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "query",
            "name": "itemsPerPage",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 24
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "isPrevious",
            "description": "",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Catalog.Api.FavoriteBundlesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Catalog.Api.FavoriteBundlesResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Invalid user Id.\r\n3: Cannot request so many bundles at once.\r\n10: Invalid previous pagination request. Please provide a cursor when isPrevious is true"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "6: You are not authorized to perform this action."
          },
          "500": {
            "description": "11: Internal server error. Please check if you have provided correct pagination cursor"
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "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__subtypeId__bundles"
        }
      }
    },
    "/v1/featured-content/event": {
      "delete": {
        "tags": ["Groups"],
        "summary": "Deletes the featured event for a group",
        "parameters": [
          {
            "in": "query",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "eventId",
            "description": "The event Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "403": {
            "description": "0: Token Validation Failed\r\n3: User is not authorized to set featured content for this group."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_featured_content_event"
        }
      },
      "get": {
        "tags": ["Groups"],
        "summary": "Gets the featured event for a group",
        "parameters": [
          {
            "in": "query",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.GroupFeaturedContentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.GroupFeaturedContentResponse"
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_get_v1_featured_content_event"
        }
      },
      "post": {
        "tags": ["Groups"],
        "summary": "Sets the featured event for a group",
        "parameters": [
          {
            "in": "query",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "eventId",
            "description": "The event Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.GroupFeaturedContentResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.GroupFeaturedContentResponse"
                }
              }
            }
          },
          "403": {
            "description": "0: Token Validation Failed\r\n3: User is not authorized to set featured content for this group."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_post_v1_featured_content_event"
        }
      }
    },
    "/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"
          },
          "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_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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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.\r\nThe ordering of the results is not guaranteed to be the same as the inputs. In order to correlated inputs with outputs please\r\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"],
              "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-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."
          }
        },
        "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/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-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/vip-servers/{universeId}": {
      "post": {
        "tags": ["Private servers", "Universes"],
        "operationId": "PrivateServers_CreatePrivateServer",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreatePrivateServerRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreatePrivateServerRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreatePrivateServerRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GameServerResponse"
                }
              }
            }
          }
        },
        "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/private-servers#PrivateServers_CreatePrivateServer"
        }
      }
    },
    "/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": "Success",
            "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/{gameId}/thumbnail/image": {
      "post": {
        "tags": ["Assets", "Thumbnails", "Universes"],
        "summary": "Uploads a game thumbnail.",
        "parameters": [
          {
            "in": "path",
            "name": "gameId",
            "description": "The universe 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": "1: File uploaded does not match known image format. Try converting to png.\r\n2: File not present in request."
          },
          "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."
          }
        },
        "servers": [
          {
            "url": "https://publish.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#publish_post_v1_games__gameId__thumbnail_image"
        }
      }
    },
    "/v1/games/{placeId}/private-servers": {
      "get": {
        "tags": ["Private servers", "Universes"],
        "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": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPrivateServerListResponse"
                }
              }
            }
          }
        },
        "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/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-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-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-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}/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"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Games.Api.Models.Response.GameMediaItem_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Games.Api.Models.Response.GameMediaItem_"
                }
              }
            }
          },
          "400": {
            "description": "3: The universe's root place is invalid."
          },
          "404": {
            "description": "2: The requested universe does not exist."
          }
        },
        "deprecated": true,
        "servers": [
          {
            "url": "https://games.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "description": "Use https://games.roblox.com/v2/games/{universeId}/media instead",
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#games_get_v1_games__universeId__media"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://games.roblox.com/v2/games/{universeId}/media",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/thumbnails#games_get_v2_games__universeId__media"
          }
        ]
      }
    },
    "/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": "Success",
            "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": "Success",
            "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": "Success",
            "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-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#UsersApi": {
      "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/configuration/metadata": {
      "get": {
        "tags": ["Groups", "Metadata"],
        "summary": "Gets Group configuration contextual information",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupConfigurationDisplayOptionsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupConfigurationDisplayOptionsResponse"
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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_configuration_metadata"
        }
      }
    },
    "/v1/groups/create": {
      "post": {
        "tags": ["Groups"],
        "summary": "Creates a new group.",
        "description": "This endpoint will charge Robux for the group purchase.\r\nAccepts \"icon\" and \"coverPhoto\" in Files object. Defaults to first file if \"icon\" is not present.\r\nHttp status code 413 is thrown when the group icon file size is too large.",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "name": {
                    "description": "The name of the group.",
                    "type": "string"
                  },
                  "description": {
                    "description": "The group description.",
                    "type": "string"
                  },
                  "publicGroup": {
                    "description": "Whether or not the group is open for anyone to join.",
                    "type": "boolean"
                  },
                  "buildersClubMembersOnly": {
                    "description": "Whether or not the group is only open to join for builders club members.",
                    "type": "boolean"
                  },
                  "Files": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Responses.Groups.GroupResponseV2"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Responses.Groups.GroupResponseV2"
                }
              }
            }
          },
          "400": {
            "description": "13: The name is invalid.\r\n15: The group icon is invalid.\r\n16: The group icon is missing from the request.\r\n18: The description is too long.\r\n19: The name is too long.\r\n20: The name has been taken.\r\n46: Invalid file format or dimensions for group cover photo."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n10: User must have builders club membership.\r\n11: User is in maximum number of groups.\r\n12: Insufficient Robux funds.\r\n14: The name is moderated."
          },
          "409": {
            "description": "37: The name was in use too recently."
          },
          "413": {
            "description": "0: Unknown error."
          },
          "429": {
            "description": "17: Too many requests."
          },
          "503": {
            "description": "21: Group creation is currently disabled."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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_create"
        }
      }
    },
    "/v1/groups/icon": {
      "patch": {
        "tags": ["Groups", "Thumbnails"],
        "summary": "Updates the group icon.",
        "parameters": [
          {
            "in": "query",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "Files": {
                    "type": "string",
                    "format": "binary"
                  }
                }
              }
            }
          }
        },
        "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: Group is invalid or does not exist.\r\n16: The group icon is missing from the request.\r\n17: Too many requests.\r\n30: Invalid file type for group icon."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n23: Insufficient permissions to complete the request."
          },
          "413": {
            "description": "0: Unknown error."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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_icon"
        }
      }
    },
    "/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/metadata": {
      "get": {
        "tags": ["Groups", "Metadata"],
        "summary": "Gets Groups contextual information:\r\nMax number of groups a user can be part of.\r\nCurrent number of groups a user is a member of.\r\nWhether to show/hide certain features based on device type.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupsDisplayOptionsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupsDisplayOptionsResponse"
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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_metadata"
        }
      }
    },
    "/v1/groups/policies": {
      "post": {
        "tags": ["Groups"],
        "summary": "Gets group policy info used for compliance.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPolicyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPolicyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPoliciesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPoliciesResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Too many ids in request.\r\n2: Ids could not be parsed from request."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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_policies"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/legacy-groups/v1/groups/policies",
            "httpMethod": "POST",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#post_legacy_groups_v1_groups_policies"
          }
        ]
      }
    },
    "/v1/groups/search": {
      "get": {
        "tags": ["Groups"],
        "summary": "Search for groups by keyword.",
        "parameters": [
          {
            "in": "query",
            "name": "keyword",
            "description": "The keyword or phrase to use as the search parameter.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "prioritizeExactMatch",
            "description": "Whether or not to prioritize the exact match for the keyword (optional, defaults to false).",
            "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"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupSearchPageResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupSearchPageResponse"
                }
              }
            }
          },
          "400": {
            "description": "2: Search term not appropriate for Roblox.\r\n3: Search term was left empty.\r\n4: Search terms can be 2 to 50 characters long."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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_search"
        }
      }
    },
    "/v1/groups/search/lookup": {
      "get": {
        "tags": ["Groups"],
        "summary": "Looks up groups by a name. Prioritizes an exact match as the first result.",
        "description": "Should only be used for direct lookups where a user is inputting a group name, shouldn't be used for search pages.",
        "parameters": [
          {
            "in": "query",
            "name": "groupName",
            "description": "The group name.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Groups.GroupBasicResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Groups.GroupBasicResponse_"
                }
              }
            }
          },
          "400": {
            "description": "1: Name is missing or has invalid characters."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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_search_lookup"
        }
      }
    },
    "/v1/groups/search/metadata": {
      "get": {
        "tags": ["Groups", "Metadata"],
        "summary": "Get suggested groups and other miscellaneous information needed for the group/join page like flags",
        "description": "Although there is no reason for this to require an authenticated user right now, in the future,\r\nwe will use coco to return different suggested groups based upon that user's request context",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupSearchMetadataResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupSearchMetadataResponse"
                }
              }
            }
          },
          "404": {
            "description": "5: No Localized Version of group search category exists"
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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_search_metadata"
        }
      }
    },
    "/v1/groups/{groupId}": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets group information",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupDetailResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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_"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}",
            "httpMethod": "GET",
            "description": "For core group information.",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_GetGroup"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/shout",
            "httpMethod": "GET",
            "description": "For the group shout information"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/audit-log": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets the Group's audit log",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "actionType",
            "description": "Filter for specific type of action performed",
            "schema": {
              "type": "string",
              "enum": [
                "DeletePost",
                "RemoveMember",
                "AcceptJoinRequest",
                "DeclineJoinRequest",
                "PostStatus",
                "ChangeRank",
                "BuyAd",
                "SendAllyRequest",
                "CreateEnemy",
                "AcceptAllyRequest",
                "DeclineAllyRequest",
                "DeleteAlly",
                "DeleteEnemy",
                "AddGroupPlace",
                "RemoveGroupPlace",
                "CreateItems",
                "ConfigureItems",
                "SpendGroupFunds",
                "ChangeOwner",
                "Delete",
                "AdjustCurrencyAmounts",
                "Abandon",
                "Claim",
                "Rename",
                "ChangeDescription",
                "InviteToClan",
                "KickFromClan",
                "CancelClanInvite",
                "BuyClan",
                "CreateGroupAsset",
                "UpdateGroupAsset",
                "ConfigureGroupAsset",
                "RevertGroupAsset",
                "CreateGroupDeveloperProduct",
                "ConfigureGroupGame",
                "CreateGroupDeveloperSubscriptionProduct",
                "Lock",
                "Unlock",
                "CreateGamePass",
                "CreateBadge",
                "ConfigureBadge",
                "SavePlace",
                "PublishPlace",
                "UpdateRolesetRank",
                "UpdateRolesetData",
                "BanMember",
                "UnbanMember",
                "CreateForumCategory",
                "UpdateForumCategory",
                "ArchiveForumCategory",
                "DeleteForumCategory",
                "DeleteForumPost",
                "DeleteForumComment",
                "PinForumPost",
                "UnpinForumPost",
                "LockForumPost",
                "UnlockForumPost",
                "CreateRoleset",
                "DeleteRoleset",
                "CreateCommerceProduct",
                "SetCommerceProductActive",
                "ArchiveCommerceProduct",
                "AcceptCommerceProductBundlingFee",
                "SetCommerceProductInactive",
                "ConnectMerchant",
                "DisconnectMerchant",
                "JoinGroup",
                "LeaveGroup",
                "UpdateGroupIcon",
                "UpdateGroupCoverPhoto",
                "AssignRole",
                "UnassignRole",
                "PublishAnnouncement",
                "DeleteAnnouncement"
              ]
            }
          },
          {
            "in": "query",
            "name": "userId",
            "description": "Filter for specific user id",
            "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.Groups.Api.GroupAuditLogPageResponse_Roblox.Groups.Api.Models.Response.GroupAuditLogResponseItem_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupAuditLogPageResponse_Roblox.Groups.Api.Models.Response.GroupAuditLogResponseItem_"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n8: Invalid or missing pagination parameters"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "23: Insufficient permissions to complete the request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__audit_log"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/legacy-groups/v1/groups/{groupId}/audit-log",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#get_legacy_groups_v1_groups__groupId__audit_log"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/bans": {
      "get": {
        "tags": ["Bans and blocks", "Groups"],
        "summary": "Gets the bans for the group",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group 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": "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.Groups.Api.GroupBanMemberResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.GroupBanMemberResponse_"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "19: You have insufficient permissions for this request."
          },
          "404": {
            "description": "1: The group is invalid or does not exist."
          },
          "405": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#groups_get_v1_groups__groupId__bans"
        }
      }
    },
    "/v1/groups/{groupId}/bans/{userId}": {
      "delete": {
        "tags": ["Bans and blocks", "Groups"],
        "summary": "Unbans a user from a group",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "userId",
            "description": "The Id of the user being unbanned.",
            "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": "29: The user is not banned from the group."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n19: You have insufficient permissions for this request."
          },
          "404": {
            "description": "1: The group is invalid or does not exist."
          },
          "405": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#groups_delete_v1_groups__groupId__bans__userId_"
        }
      },
      "get": {
        "tags": ["Bans and blocks", "Groups"],
        "summary": "Fetch the group ban of a user from a group",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "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.Groups.Api.GroupBanMemberResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupBanMemberResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "19: You have insufficient permissions for this request."
          },
          "404": {
            "description": "1: The group is invalid or does not exist.\r\n3: The user is invalid or does not exist."
          },
          "405": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#groups_get_v1_groups__groupId__bans__userId_"
        }
      },
      "post": {
        "tags": ["Bans and blocks", "Groups"],
        "summary": "Bans a user from a group",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "userId",
            "description": "The Id of the user being banned.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupBanMemberResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupBanMemberResponse"
                }
              }
            }
          },
          "400": {
            "description": "28: The user is already banned from the group.\r\n31: You cannot perform this action against the group owner."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n19: You have insufficient permissions for this request."
          },
          "404": {
            "description": "1: The group is invalid or does not exist.\r\n3: The user is invalid or does not exist.\r\n3: The user is invalid or does not exist.\r\n15: User is not a member of the group."
          },
          "405": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#groups_post_v1_groups__groupId__bans__userId_"
        }
      }
    },
    "/v1/groups/{groupId}/blocked-keywords": {
      "get": {
        "tags": ["Bans and blocks", "Groups"],
        "summary": "Retrieves a paginated list of blocked keywords for a specific Group.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "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.Groups.Api.BlockedKeywordPageResponse_Roblox.Groups.Client.BlockedKeywordModel_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.BlockedKeywordPageResponse_Roblox.Groups.Client.BlockedKeywordModel_"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n6: Limit is invalid."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "9: User is invalid or does not exist.\r\n10: Insufficient permissions to complete the request."
          },
          "405": {
            "description": "31: Service is currently unavailable."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#groups_get_v1_groups__groupId__blocked_keywords"
        }
      },
      "post": {
        "tags": ["Bans and blocks", "Groups"],
        "summary": "Adds new blocked keyword(s) to the specified Group.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.CreateBlockedKeywordsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.CreateBlockedKeywordsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.CreateBlockedKeywordsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.CreateBlockedKeywordsResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n2: One or more keywords are invalid.\r\n4: Invalid request.\r\n12: The provided content was moderated."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n8: Insufficient permissions to complete the request.\r\n9: User is invalid or does not exist.\r\n10: Insufficient permissions to complete the request."
          },
          "405": {
            "description": "31: Service is currently unavailable."
          },
          "409": {
            "description": "11: There was a conflict in your request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#groups_post_v1_groups__groupId__blocked_keywords"
        }
      }
    },
    "/v1/groups/{groupId}/blocked-keywords/{keywordId}": {
      "delete": {
        "tags": ["Bans and blocks", "Groups"],
        "summary": "Deletes a specific blocked keyword from the specified Group.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "keywordId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n3: KeywordId is invalid.\r\n4: Invalid request."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n9: User is invalid or does not exist.\r\n10: Insufficient permissions to complete the request."
          },
          "404": {
            "description": "7: Not found."
          },
          "405": {
            "description": "31: Service is currently unavailable."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#groups_delete_v1_groups__groupId__blocked_keywords__keywordId_"
        }
      },
      "patch": {
        "tags": ["Bans and blocks", "Groups"],
        "summary": "Updates an existing blocked keyword for the specified Group.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "keywordId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateBlockedKeywordRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateBlockedKeywordRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.BlockedKeywordModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.BlockedKeywordModel"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n3: KeywordId is invalid.\r\n4: Invalid request.\r\n12: The provided content was moderated."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n8: Insufficient permissions to complete the request.\r\n9: User is invalid or does not exist.\r\n10: Insufficient permissions to complete the request."
          },
          "404": {
            "description": "7: Not found."
          },
          "405": {
            "description": "31: Service is currently unavailable."
          },
          "409": {
            "description": "11: There was a conflict in your request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/bans-and-blocks#groups_patch_v1_groups__groupId__blocked_keywords__keywordId_"
        }
      }
    },
    "/v1/groups/{groupId}/change-owner": {
      "post": {
        "tags": ["Groups"],
        "summary": "Changes the group owner to another user.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.ChangeOwnerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.ChangeOwnerRequest"
              }
            }
          },
          "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": "1: The group is invalid or does not exist.\r\n3: The user is invalid or does not exist.\r\n15: User is not a member of the group.\r\n16: The user does not have the necessary level of premium membership."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n17: You are not authorized to change the owner of this group.\r\n25: 2-Step Verification is required to make further transactions. Go to Settings > Security to complete 2-Step Verification."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__change_owner"
        }
      }
    },
    "/v1/groups/{groupId}/claim-ownership": {
      "post": {
        "tags": ["Groups"],
        "summary": "Claims ownership of the group as the authenticated user",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group 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 group is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n11: You are not authorized to claim this group\r\n12: This group already has an owner\r\n13: Too many attempts to claim groups. Please try again later."
          },
          "503": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__claim_ownership"
        }
      }
    },
    "/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-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}/configuration": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets group configuration information",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupConfigurationDetailsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupConfigurationDetailsResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n15: User is not a member of the group."
          },
          "403": {
            "description": "1: Group is invalid or does not exist.\r\n23: Insufficient permissions to complete the request."
          },
          "503": {
            "description": "31: Service is currently unavailable."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__configuration"
        }
      }
    },
    "/v1/groups/{groupId}/description": {
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates the groups description",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupDescriptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupDescriptionRequest"
              }
            }
          },
          "description": "The Roblox.Groups.Api.UpdateGroupDescriptionRequest.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupDescriptionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupDescriptionResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n29: Your group description was empty."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n18: The description is too long.\r\n23: Insufficient permissions to complete the request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__description"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/legacy-groups/v1/groups/{groupId}/description",
            "httpMethod": "PATCH",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#patch_legacy_groups_v1_groups__groupId__description"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/emotes": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets a groups emote sets.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.GetGroupEmoteSetsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Client.GetGroupEmoteSetsResponse"
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__emotes"
        }
      }
    },
    "/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-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.\r\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-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}/features/status": {
      "get": {
        "tags": ["Groups"],
        "summary": "Checks whether a group has ANY feature disabled (includes feature freezes and group lock).\r\nUsed to display a banner on Creator Hub/Studio to inform group members that some features may not be available.",
        "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.HasGroupFeaturesBlockedResponse"
                }
              }
            }
          },
          "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-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_status"
        }
      }
    },
    "/v1/groups/{groupId}/join-requests": {
      "delete": {
        "tags": ["Groups"],
        "summary": "Batch declines group join requests",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Roblox.Groups.Api.MembersRequest"
        },
        "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 group is invalid or does not exist.\r\n3: The user is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_groups__groupId__join_requests"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/join-requests/{join_request_id}:decline",
            "httpMethod": "DELETE"
          }
        ]
      },
      "get": {
        "tags": ["Groups"],
        "summary": "Gets a page of Group Join Requests for a group.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group 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": "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.Groups.Api.GroupJoinRequestResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.GroupJoinRequestResponse_"
                }
              }
            }
          },
          "400": {
            "description": "1: The group is invalid or does not exist.\r\n36: The pagination cursor is invalid."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "19: You have insufficient permissions for this request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__join_requests"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/join-requests",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupJoinRequests"
          }
        ]
      },
      "post": {
        "tags": ["Groups"],
        "summary": "Batch accepts group join requests",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Roblox.Groups.Api.MembersRequest"
        },
        "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 group is invalid or does not exist.\r\n3: The user is invalid or does not exist.\r\n20: The group join request is invalid."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n6: You are already in the maximum number of groups.\r\n19: You have insufficient permissions for this request."
          },
          "500": {
            "description": "0: Something went wrong."
          },
          "503": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__join_requests"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/join-requests/{join_request_id}:accept",
            "httpMethod": "POST",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_AcceptGroupJoinRequest"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/join-requests/users/{userId}": {
      "delete": {
        "tags": ["Groups", "Users"],
        "summary": "Declines/cancels a group join request.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "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.Web.WebAPI.ApiEmptyResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "1: The group is invalid or does not exist.\r\n3: The user is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n4: You do not have permission to manage this member."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_groups__groupId__join_requests_users__userId_"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/join-requests/{join_request_id}:decline",
            "httpMethod": "DELETE"
          }
        ]
      },
      "get": {
        "tags": ["Groups", "Users"],
        "summary": "Gets a group join request by userId.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "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.Groups.Api.GroupJoinRequestResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupJoinRequestResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: The group is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "19: You have insufficient permissions for this request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__join_requests_users__userId_"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/join-requests",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupJoinRequests"
          }
        ]
      },
      "post": {
        "tags": ["Groups", "Users"],
        "summary": "Accepts a group join request.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "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.Web.WebAPI.ApiEmptyResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.ApiEmptyResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "1: The group is invalid or does not exist.\r\n3: The user is invalid or does not exist.\r\n20: The group join request is invalid."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n6: You are already in the maximum number of groups.\r\n19: You have insufficient permissions for this request."
          },
          "503": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__join_requests_users__userId_"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/join-requests/{join_request_id}:accept",
            "httpMethod": "POST",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_AcceptGroupJoinRequest"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/membership": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets group membership information in the context of the authenticated user",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "includeNotificationPreferences",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupMembershipMetadataResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupMembershipMetadataResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: The group is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__membership"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/join-requests",
            "httpMethod": "GET",
            "description": "To get group role id.",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupJoinRequests"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/roles/{role_id}",
            "httpMethod": "GET",
            "description": "To get role and permissions information.",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_GetGroupRole"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/name": {
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates the group's name.",
        "description": "This endpoint will charge Robux for the group rename.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupNameRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupNameRequest"
              }
            }
          },
          "description": "The Roblox.Groups.Api.UpdateGroupNameRequest.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupNameResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupNameResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n13: The name is invalid.\r\n19: The name is too long.\r\n20: The name has been taken."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n12: Insufficient Robux funds.\r\n14: The name is moderated.\r\n23: Insufficient permissions to complete the request.\r\n38: Your account must be verified in order to change your group's name.\r\n39: The group ownership was changed too recently."
          },
          "409": {
            "description": "36: The name was changed too recently.\r\n37: The name was in use too recently."
          },
          "413": {
            "description": "0: Unknown error."
          },
          "429": {
            "description": "17: Too many requests."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__name"
        }
      }
    },
    "/v1/groups/{groupId}/name-history": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets the Group's name change history.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group.",
            "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.Groups.Api.Models.Response.GroupNameHistoryResponseItem_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.Models.Response.GroupNameHistoryResponseItem_"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist."
          },
          "403": {
            "description": "23: Insufficient permissions to complete the request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__name_history"
        }
      }
    },
    "/v1/groups/{groupId}/notification-preference": {
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates the group's settings",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupNotificationPreferenceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupNotificationPreferenceRequest"
              }
            }
          },
          "description": "Roblox.Groups.Api.UpdateGroupSettingsRequest",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "format": "int32",
                  "description": " ['Unchanged' = 0, 'Created' = 1, 'Deleted' = 2, 'Updated' = 3]",
                  "enum": [0, 1, 2, 3],
                  "type": "integer"
                }
              },
              "text/json": {
                "schema": {
                  "format": "int32",
                  "description": " ['Unchanged' = 0, 'Created' = 1, 'Deleted' = 2, 'Updated' = 3]",
                  "enum": [0, 1, 2, 3],
                  "type": "integer"
                }
              }
            }
          },
          "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"
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__notification_preference"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/legacy-groups/v1/groups/{groupId}/notification-preference",
            "httpMethod": "PATCH",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#patch_legacy_groups_v1_groups__groupId__notification_preference"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/payout-restriction": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets a value indicating whether the group can use payout feature",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPayoutRestrictionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPayoutRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "9: You don't have permission to view this group's payouts."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__payout_restriction"
        }
      }
    },
    "/v1/groups/{groupId}/payouts": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets a list of the group payout percentages",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group 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.Groups.Api.GroupPayoutResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupPayoutResponse_"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "9: You don't have permission to view this group's payouts."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__payouts"
        }
      },
      "post": {
        "tags": ["Groups"],
        "summary": "Pays out a user in Robux.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Roblox.Groups.Api.PayoutRequest"
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.OneTimePayoutResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.OneTimePayoutResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n12: Insufficient Robux funds.\r\n24: Invalid payout type.\r\n25: The amount is invalid.\r\n26: Too many recipients."
          },
          "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\n28: Group has paid out too recently. Please wait and try again.\r\n35: 2-Step Verification is required to make further transactions. Go to Settings > Security to complete 2-Step Verification.\r\n52: Group has paid out to this recipient too many times recently. Please try again later."
          },
          "503": {
            "description": "22: The feature is disabled."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__payouts"
        }
      }
    },
    "/v1/groups/{groupId}/payouts/recurring": {
      "post": {
        "tags": ["Groups"],
        "summary": "Updates recurring payouts.",
        "description": "This endpoint will remove any recipients not sent in the request.\r\nIf a recipient in the request is not a valid member in the group they will not be added to the recurring payouts.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Roblox.Groups.Api.PayoutRequest"
        },
        "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: Group is invalid or does not exist.\r\n24: Invalid payout type.\r\n25: The amount is invalid.\r\n26: Too many recipients.\r\n27: The recipients are invalid."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n12: Insufficient Robux funds.\r\n28: Group has paid out too recently. Please wait and try again.\r\n35: 2-Step Verification is required to make further transactions. Go to Settings > Security to complete 2-Step Verification."
          },
          "503": {
            "description": "22: The feature is disabled."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__payouts_recurring"
        }
      }
    },
    "/v1/groups/{groupId}/relationships/{groupRelationshipType}": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets a group's relationships",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "groupRelationshipType",
            "description": "The group relationship type, enemies or allies.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "StartRowIndex",
            "description": "The start index of the page request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "query",
            "name": "MaxRows",
            "description": "The maximum number of rows for the page request, should be at least 1.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRelationshipsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRelationshipsResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n4: Group relationship type or request type is invalid.\r\n8: Invalid or missing pagination parameters"
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__relationships__groupRelationshipType_"
        }
      }
    },
    "/v1/groups/{groupId}/relationships/{groupRelationshipType}/requests": {
      "delete": {
        "tags": ["Groups"],
        "summary": "Batch declines group affiliate requests",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "groupRelationshipType",
            "description": "The type of group relationship being made",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Roblox.Groups.Api.RelationshipsRequest"
        },
        "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://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_groups__groupId__relationships__groupRelationshipType__requests"
        }
      },
      "get": {
        "tags": ["Groups"],
        "summary": "Gets a group's relationship requests",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "groupRelationshipType",
            "description": "The group relationship type of the request, only allies are supported.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "StartRowIndex",
            "description": "The start index of the page request",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "in": "query",
            "name": "MaxRows",
            "description": "The maximum number of rows for the page request, should be at least 1.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRelationshipsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRelationshipsResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n4: Group relationship type or request type is invalid.\r\n8: Invalid or missing pagination parameters"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "5: You don't have permission to manage this group's relationships."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__relationships__groupRelationshipType__requests"
        }
      },
      "post": {
        "tags": ["Groups"],
        "summary": "Batch accepts group affiliate requests",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "groupRelationshipType",
            "description": "The type of group relationship being made",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/Roblox.Groups.Api.RelationshipsRequest"
        },
        "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://groups.roblox.com"
          }
        ],
        "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__relationships__groupRelationshipType__requests"
        }
      }
    },
    "/v1/groups/{groupId}/relationships/{groupRelationshipType}/requests/{relatedGroupId}": {
      "delete": {
        "tags": ["Groups"],
        "summary": "Declines a group relationship request.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "groupRelationshipType",
            "description": "The group relationship type, enemies or allies.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "relatedGroupId",
            "description": "The id of the group you want to accept the relationship request with.",
            "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: Group relationship type or request type is invalid.\r\n2: Invalid group.\r\n3: Target group is invalid or does not exist.\r\n10: Relationship request does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n9: Insufficient permissions."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_groups__groupId__relationships__groupRelationshipType__requests__relatedGroupId_"
        }
      },
      "post": {
        "tags": ["Groups"],
        "summary": "Accepts a group relationship request.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "groupRelationshipType",
            "description": "The group relationship type, enemies or allies, only allies are supported.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "relatedGroupId",
            "description": "The id of the group you want to accept the relationship request with.",
            "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: Group relationship type or request type is invalid.\r\n2: Invalid group.\r\n3: Target group is invalid or does not exist.\r\n10: Relationship request does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n9: Insufficient permissions."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__relationships__groupRelationshipType__requests__relatedGroupId_"
        }
      }
    },
    "/v1/groups/{groupId}/relationships/{groupRelationshipType}/{relatedGroupId}": {
      "delete": {
        "tags": ["Groups"],
        "summary": "Deletes a group relationship.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "groupRelationshipType",
            "description": "The group relationship type, enemies or allies.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "relatedGroupId",
            "description": "The id of the group you want to delete the relationship with.",
            "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: Invalid group.\r\n3: Target group is invalid or does not exist.\r\n11: Relationship does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n8: You are blocked from communicating with this user."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_groups__groupId__relationships__groupRelationshipType___relatedGroupId_"
        }
      },
      "post": {
        "tags": ["Groups"],
        "summary": "Create a group relationship.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "groupRelationshipType",
            "description": "The group relationship type, enemies or allies.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "relatedGroupId",
            "description": "The id of the group you want to create a relationship with.",
            "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: Group relationship type or request type is invalid.\r\n2: Invalid group.\r\n3: Target group is invalid or does not exist.\r\n4: Your group cannot establish a relationship with itself."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n5: Your group does not allow enemy declarations.\r\n6: Other group does not allow enemy declarations.\r\n7: Your group already has a relationship with the target group.\r\n8: You are blocked from communicating with this user.\r\n9: Insufficient permissions."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__relationships__groupRelationshipType___relatedGroupId_"
        }
      }
    },
    "/v1/groups/{groupId}/revenue/summary/{timeFrame}": {
      "get": {
        "tags": ["Groups"],
        "operationId": "RevenueSummary_GetGroupRevenueSummary",
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "timeFrame",
            "in": "path",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/RevenueSummaryTimeFrame"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RevenueSummaryResponse"
                }
              }
            }
          }
        },
        "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/groups#RevenueSummary_GetGroupRevenueSummary"
        }
      }
    },
    "/v1/groups/{groupId}/roles": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets a list of the rolesets in a group.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupAllRolesResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupAllRolesResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: The group is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__roles"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/roles",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupRoles"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/roles/guest/permissions": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets the permissions for a group's guest roleset. These can be viewed by all (members and guests) users.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPermissionsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPermissionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__roles_guest_permissions"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/roles",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupRoles"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/roles/permissions": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets all permissions for each role",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group 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.Groups.Api.GroupPermissionsResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupPermissionsResponse_"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__roles_permissions"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/roles",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupRoles"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/roles/{roleSetId}/permissions": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets the permissions for a group's roleset. The authorized user must either be the group owner or the roleset being requested, except for guest roles, which can be viewed by all (members and guests).",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "roleSetId",
            "description": "The group's role set id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPermissionsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPermissionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist.\r\n2: The roleset is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "3: You are not authorized to view/edit permissions for this role."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__roles__roleSetId__permissions"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/roles",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupRoles"
          }
        ]
      },
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates the permissions for a group's roleset. The authorized user must be the group owner.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group's id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "roleSetId",
            "description": "The roleset's id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdatePermissionsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdatePermissionsRequest"
              }
            }
          },
          "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": "1: Group is invalid or does not exist.\r\n2: The roleset is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n3: You are not authorized to view/edit permissions for this role.\r\n4: This role's permissions can not be modified."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__roles__roleSetId__permissions"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/roles",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupRoles"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/roles/{roleSetId}/users": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets a list of users in a group for a specific roleset.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "roleSetId",
            "description": "The group's role set 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": "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.Groups.Api.Models.Response.UserModel_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.Models.Response.UserModel_"
                }
              }
            }
          },
          "400": {
            "description": "1: The group is invalid or does not exist.\r\n36: The pagination cursor is invalid."
          },
          "403": {
            "description": "2: The roleset is invalid or does not exist.\r\n35: You do not have permission to view this group's member list."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__roles__roleSetId__users"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/memberships",
            "httpMethod": "GET",
            "description": "See filtering documentation.",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupMemberships"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/rolesets/create": {
      "post": {
        "tags": ["Groups"],
        "summary": "Creates new group roleset.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Request.CreateRoleSetRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Request.CreateRoleSetRequest"
              }
            }
          },
          "description": "The Roblox.Groups.Api.Models.Request.CreateRoleSetRequest.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRoleResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRoleResponse"
                }
              }
            }
          },
          "400": {
            "description": "0: Something went wrong.\r\n3: You do not have enough funds to purchase this role.\r\n5: Role name already exists.\r\n6: Rank value is out of bounds.\r\n7: The role name is too long.\r\n8: The role description is too long.\r\n10: This group does not exist.\r\n11: Failed to process payment to purchase role.\r\n12: Limit for roles have been reached on this group.\r\n14: Role name can not be empty.\r\n15: This role does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n9: You do not have permissions to perform this action."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__rolesets_create"
        }
      }
    },
    "/v1/groups/{groupId}/rolesets/{rolesetId}": {
      "delete": {
        "tags": ["Groups"],
        "summary": "Deletes existing group roleset.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "rolesetId",
            "description": "The roleset 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": "10: This group does not exist.\r\n15: This role does not exist.\r\n17: Cannot remove any more roles\r\n18: Cannot delete this role."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n9: You do not have permissions to perform this action.\r\n16: There are users in this role."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_groups__groupId__rolesets__rolesetId_"
        }
      },
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates existing group roleset.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "rolesetId",
            "description": "The roleset Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Request.UpdateRoleSetRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Request.UpdateRoleSetRequest"
              }
            }
          },
          "description": "The Roblox.Groups.Api.Models.Request.UpdateRoleSetRequest.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRoleResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRoleResponse"
                }
              }
            }
          },
          "400": {
            "description": "5: Role name already exists.\r\n6: Rank value is out of bounds.\r\n7: The role name is too long.\r\n8: The role description is too long.\r\n10: This group does not exist.\r\n14: Role name can not be empty.\r\n15: This role does not exist.\r\n19: Cannot update Guest role.\r\n20: Cannot update Owner role rank."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n9: You do not have permissions to perform this action."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__rolesets__rolesetId_"
        }
      }
    },
    "/v1/groups/{groupId}/settings": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets the Group's settings",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupSettingsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupSettingsResponse"
                }
              }
            }
          },
          "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."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__settings"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/legacy-groups/v1/groups/{groupId}/settings",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#get_legacy_groups_v1_groups__groupId__settings"
          }
        ]
      },
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates the group's settings",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupSettingsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateGroupSettingsRequest"
              }
            }
          },
          "description": "Roblox.Groups.Api.UpdateGroupSettingsRequest",
          "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: 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."
          },
          "503": {
            "description": "31: Service is currently unavailable."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__settings"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/legacy-groups/v1/groups/{groupId}/settings",
            "httpMethod": "PATCH",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#patch_legacy_groups_v1_groups__groupId__settings"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/social-links": {
      "get": {
        "tags": ["Groups"],
        "summary": "Get social link data associated with a group",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "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.Groups.Api.GetSocialLinkResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GetSocialLinkResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "13: Only users who are over thirteen years of age may edit social links."
          },
          "404": {
            "description": "11: Social links cannot be processed as this time."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__social_links"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_GetGroup"
          }
        ]
      },
      "post": {
        "tags": ["Groups"],
        "summary": "Posts a social links",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.SocialLinkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.SocialLinkRequest"
              }
            }
          },
          "description": "The Roblox.Groups.Api.SocialLinkRequest",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.SocialLinkResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.SocialLinkResponse"
                }
              }
            }
          },
          "400": {
            "description": "3: The social link title is too long.\r\n4: The social link title cannot be empty.\r\n5: The social link url cannot be empty.\r\n7: The request was null.\r\n9: The social link type is invalid.\r\n12: The social link title was moderated."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n2: You do not have permission to configure this social link."
          },
          "404": {
            "description": "8: The requested group or social link was not found."
          },
          "503": {
            "description": "11: Social links cannot be processed as this time."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__social_links"
        }
      }
    },
    "/v1/groups/{groupId}/social-links/{socialLinkId}": {
      "delete": {
        "tags": ["Groups"],
        "summary": "Deletes a social link",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the game you are editing, required for permissions checking",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "socialLinkId",
            "description": "The id of the social link",
            "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: Group is invalid or does not exist.\r\n10: The social link is not for a group.\r\n15: The social link id doesn't match the group 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 configure this social link.\r\n13: Only users who are over thirteen years of age may edit social links."
          },
          "404": {
            "description": "11: Social links cannot be processed as this time."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_groups__groupId__social_links__socialLinkId_"
        }
      },
      "patch": {
        "tags": ["Groups"],
        "summary": "Updates a social link",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the universe",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "socialLinkId",
            "description": "The id of the social link being updated",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.SocialLinkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.SocialLinkRequest"
              }
            }
          },
          "description": "The Roblox.Groups.Api.SocialLinkRequest.",
          "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: Group is invalid or does not exist.\r\n3: The social link title is too long.\r\n4: The social link title cannot be empty.\r\n5: The social link url cannot be empty.\r\n6: The social link url was improperly formatted.\r\n7: The request was null.\r\n8: The requested group or social link was not found.\r\n9: The social link type is invalid.\r\n10: The social link is not for a group.\r\n12: The social link title was moderated.\r\n16: A social link with this type already exists on this group."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n2: You do not have permission to configure this social link."
          },
          "404": {
            "description": "11: Social links cannot be processed as this time."
          },
          "503": {
            "description": "11: Social links cannot be processed as this time."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__social_links__socialLinkId_"
        }
      }
    },
    "/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-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/groups/{groupId}/users": {
      "get": {
        "tags": ["Groups", "Users"],
        "summary": "Gets a list of users in a group.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group 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": "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.Groups.Api.UserGroupRoleResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.UserGroupRoleResponse_"
                }
              }
            }
          },
          "400": {
            "description": "1: The group is invalid or does not exist.\r\n36: The pagination cursor is invalid."
          },
          "403": {
            "description": "35: You do not have permission to view this group's member list."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__users"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/memberships",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupMemberships"
          }
        ]
      },
      "post": {
        "tags": ["Groups", "Users"],
        "summary": "Joins a group",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "header",
            "name": "Roblox-Place-Id",
            "description": "The place ID of the experience the player is in.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "header",
            "name": "Roblox-Game-Id",
            "description": "The player's current game Id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Roblox-Session-Id",
            "description": "The player's current session Id.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.JoinGroupRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.JoinGroupRequest"
              }
            }
          },
          "description": "Only supplied when captcha has been solved.",
          "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: The group is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n6: You are already in the maximum number of groups.\r\n9: You do not have the builders club membership necessary to join this group.\r\n14: You cannot join a closed group.\r\n33: You do not have the required verification level to join this group.\r\n34: You do not have the required account tenure to join this group."
          },
          "409": {
            "description": "7: You have already requested to join this group.\r\n8: You are already a member of this group."
          },
          "429": {
            "description": "10: Too many attempts to join the group. Please try again later."
          },
          "503": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__users"
        }
      }
    },
    "/v1/groups/{groupId}/users/{userId}": {
      "delete": {
        "tags": ["Groups", "Users"],
        "summary": "Removes a user from a group",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "userId",
            "description": "The Id of the user being removed.",
            "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 group is invalid or does not exist.\r\n3: The user is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n4: You do not have permission to manage this member.\r\n25: 2-Step Verification is required to make further transactions. Go to Settings > Security to complete 2-Step Verification."
          },
          "503": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_groups__groupId__users__userId_"
        }
      },
      "patch": {
        "tags": ["Groups", "Users"],
        "summary": "Updates a users role in a group.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The id of the group the user is in.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "userId",
            "description": "The id of the user being updated.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateUserRoleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.UpdateUserRoleRequest"
              }
            }
          },
          "description": "The Roblox.Groups.Api.UpdateUserRoleRequest.",
          "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: The group is invalid or does not exist.\r\n2: The roleset is invalid or does not exist.\r\n3: The user is invalid or does not exist.\r\n23: You cannot change your own role.\r\n26: You cannot change the user's role to the same role."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n4: You do not have permission to manage this member."
          },
          "503": {
            "description": "18: The operation is temporarily unavailable. Please try again later."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__users__userId_"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/memberships/{membership_id}",
            "httpMethod": "PATCH",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_UpdateGroupMembership"
          }
        ]
      }
    },
    "/v1/groups/{groupId}/users/{userId}/permissions": {
      "get": {
        "tags": ["Groups", "Users"],
        "summary": "Gets the permissions a user has in a group. Only available to group owner and RCC",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "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.Groups.Api.GroupPermissionsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPermissionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: Group is invalid or does not exist."
          },
          "403": {
            "description": "3: You are not authorized to view/edit permissions for this role."
          },
          "404": {
            "description": "3: The user is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "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__users__userId__permissions"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/memberships",
            "httpMethod": "GET",
            "description": "Fetch the role associated with the user's membership first.",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupMemberships"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/roles",
            "httpMethod": "GET",
            "description": "Fetch the permissions from the role id.",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupRoles"
          }
        ]
      }
    },
    "/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-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-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-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-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-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-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}/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-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-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-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-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/localizationtable/gametables/{gameId}": {
      "patch": {
        "tags": ["Localization", "Universes"],
        "parameters": [
          {
            "in": "path",
            "name": "gameId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.AssociateLocalizationTablesToGameRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.AssociateLocalizationTablesToGameRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.AssociateLocalizationTablesToGameResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.AssociateLocalizationTablesToGameResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "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_patch_v1_localizationtable_gametables__gameId_"
        }
      }
    },
    "/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": "Accept",
            "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",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV1"
                }
              }
            }
          },
          "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#FriendsApi": {
      "get": {
        "tags": ["Connections", "Metadata"],
        "parameters": [
          {
            "in": "query",
            "name": "targetUserId",
            "schema": {
              "type": "integer",
              "format": "int64",
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.FriendsPageMetadataResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.FriendsPageMetadataResponse"
                }
              }
            }
          }
        },
        "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_metadata"
        }
      }
    },
    "/v1/metadata#TwoStepVerificationApi": {
      "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-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/refresh-qr-session": {
      "post": {
        "tags": ["Connections"],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.RefreshQrSessionResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.RefreshQrSessionResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "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_post_v1_my_friends_refresh_qr_session"
        }
      }
    },
    "/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
            }
          }
        ],
        "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."
          },
          "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_friends_requests"
        }
      }
    },
    "/v1/my/friends/{userId}/check-qr-session": {
      "get": {
        "tags": ["Connections"],
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "user Id that shows the qr code",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "boolean"
                }
              },
              "text/json": {
                "schema": {
                  "type": "boolean"
                }
              }
            }
          },
          "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_my_friends__userId__check_qr_session"
        }
      }
    },
    "/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-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/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-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-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-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-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."
          }
        },
        "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_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/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"],
              "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-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-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-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-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-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/plugins/{pluginId}/icon": {
      "post": {
        "tags": ["Assets"],
        "summary": "Overwrites a plugin icon with a new one.",
        "parameters": [
          {
            "in": "path",
            "name": "pluginId",
            "description": "The plugin 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."
          },
          "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."
          }
        },
        "servers": [
          {
            "url": "https://publish.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#publish_post_v1_plugins__pluginId__icon"
        }
      }
    },
    "/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/private-servers/enabled-in-universe/{universeId}": {
      "get": {
        "tags": ["Private servers", "Universes"],
        "operationId": "PrivateServers_PrivateServersEnabledInUniverse",
        "parameters": [
          {
            "name": "universeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivateServersEnabledInUniverseResponse"
                }
              }
            }
          }
        },
        "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/private-servers#PrivateServers_PrivateServersEnabledInUniverse"
        }
      }
    },
    "/v1/private-servers/my-private-servers": {
      "get": {
        "tags": ["Private servers", "Universes"],
        "operationId": "PrivateServersApi.PrivateServers_GetMyPrivateServers",
        "parameters": [
          {
            "name": "privateServersTab",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PrivateServersTab"
                }
              ],
              "default": "MyPrivateServers"
            }
          },
          {
            "name": "itemsPerPage",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPrivateServersResponse"
                }
              }
            }
          }
        },
        "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/private-servers#PrivateServersApi.PrivateServers_GetMyPrivateServers"
        }
      }
    },
    "/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/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/roles": {
      "get": {
        "tags": ["Groups"],
        "summary": "Gets the Roles by their ids.",
        "parameters": [
          {
            "in": "query",
            "name": "ids",
            "description": "A list of role 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.Groups.Api.GroupRoleDetailResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupRoleDetailResponse_"
                }
              }
            }
          },
          "400": {
            "description": "1: Ids could not be parsed from request.\r\n2: Too many ids in request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_get_v1_roles"
        }
      }
    },
    "/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/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-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-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-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/subcategories": {
      "get": {
        "tags": ["Assets", "Avatars", "Metadata"],
        "summary": "Lists Subcategory Names and their Ids.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "format": "int64",
                    "type": "integer"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "format": "int64",
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [{}],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_get_v1_subcategories"
        }
      }
    },
    "/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-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-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-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-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-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-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-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-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-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/themes/types": {
      "get": {
        "tags": ["Accounts"],
        "summary": "returns all the enabled theme types.",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_System.String_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_System.String_"
                }
              }
            }
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_get_v1_themes_types"
        }
      }
    },
    "/v1/themes/{consumerType}/{consumerId}": {
      "get": {
        "tags": ["Accounts"],
        "summary": "returns the theme type for a specific consumer.",
        "parameters": [
          {
            "in": "path",
            "name": "consumerType",
            "description": "The consumer type",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [1]
            }
          },
          {
            "in": "path",
            "name": "consumerId",
            "description": "The consumer's theme configuration to get. If the consumerType is User always return the AuthenticatedUser's theme type.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.ThemeConfigurationResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.ThemeConfigurationResponse"
                }
              }
            }
          },
          "400": {
            "description": "3: Invalid consumer type."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_get_v1_themes__consumerType___consumerId_"
        }
      },
      "patch": {
        "tags": ["Accounts"],
        "summary": "Modify the theme type for consumer.",
        "parameters": [
          {
            "in": "path",
            "name": "consumerType",
            "description": "The consumer type",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [1]
            }
          },
          {
            "in": "path",
            "name": "consumerId",
            "description": "The consumer's theme configuration to modify. If the consumerType is User always modify the AuthenticatedUser's theme type.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64",
              "default": 0
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.ThemeConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.ThemeConfigurationRequest"
              }
            }
          },
          "description": "An Roblox.AccountSettings.Api.ThemeConfigurationRequest.",
          "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 theme type."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_patch_v1_themes__consumerType___consumerId_"
        }
      }
    },
    "/v1/topic/get-topics": {
      "post": {
        "tags": ["Assets", "Avatars"],
        "summary": "Get topic given TopicRequestModel.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Catalog.Api.TopicRequestModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Catalog.Api.TopicRequestModel"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Catalog.Api.TopicResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Catalog.Api.TopicResponse"
                }
              }
            }
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#catalog_post_v1_topic_get_topics"
        }
      }
    },
    "/v1/trade-privacy": {
      "get": {
        "tags": ["Accounts"],
        "summary": "Get a user's trade privacy setting",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.TradePrivacyResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.TradePrivacyResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_get_v1_trade_privacy"
        }
      },
      "post": {
        "tags": ["Accounts"],
        "summary": "Updates a user's trade privacy setting",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.UpdateTradePrivacyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.UpdateTradePrivacyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.TradePrivacyUpdateResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.TradePrivacyUpdateResponse"
                }
              }
            }
          },
          "400": {
            "description": "Roblox.AccountSettings.Api.ResponseEnums.TradeSettingsErrors.InvalidTradePrivacy"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "Roblox.AccountSettings.Api.ResponseEnums.TradeSettingsErrors.AccountLocked\r\n            OR\r\n            Roblox.AccountSettings.Api.ResponseEnums.TradeSettingsErrors.UserCannotTrade\r\n0: Token Validation Failed"
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_post_v1_trade_privacy"
        }
      }
    },
    "/v1/trade-value": {
      "get": {
        "tags": ["Accounts"],
        "summary": "Get a user's trade quality filter setting",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.TradeValueResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.AccountSettings.Api.TradeValueResponse"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_get_v1_trade_value"
        }
      },
      "post": {
        "tags": ["Accounts"],
        "summary": "Updates a user's trade quality filter setting",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.TradeValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.AccountSettings.Api.TradeValueRequest"
              }
            }
          },
          "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.AccountSettings.Api.ResponseEnums.TradeSettingsErrors.InvalidTradeValue"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "Roblox.AccountSettings.Api.ResponseEnums.TradeSettingsErrors.AccountLocked\r\n            OR\r\n            Roblox.AccountSettings.Api.ResponseEnums.TradeSettingsErrors.UserCannotTrade\r\n0: Token Validation Failed"
          }
        },
        "servers": [
          {
            "url": "https://accountsettings.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/accounts#accountsettings_post_v1_trade_value"
        }
      }
    },
    "/v1/trades/expire-outdated": {
      "post": {
        "tags": ["Trades"],
        "summary": "Deprecated. TradeSession are automatically set to expire while the inbound/outbound trades are fetched.\r\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.\r\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-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-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-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-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/universe-payout-history": {
      "get": {
        "tags": ["Universes"],
        "summary": "Gets the engagement payout history for a specific universe and a given date range, specified by start and end dates.",
        "parameters": [
          {
            "in": "query",
            "name": "universeId",
            "description": "The ID of the universe in question.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "startDate",
            "description": "The first date in the range, specified as yyyy-MM-dd.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "endDate",
            "description": "The last date in the range, specified as yyyy-MM-dd.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/Roblox.EngagementPayouts.Api.PayoutResponseModel"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "$ref": "#/components/schemas/Roblox.EngagementPayouts.Api.PayoutResponseModel"
                  }
                }
              }
            }
          },
          "400": {
            "description": "1: InvalidUniverseId\r\n2: InvalidStartDate\r\n3: InvalidEndDate\r\n4: InvalidDateRange\r\n5: Forbidden\r\n6: TooManyDays"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://engagementpayouts.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/universes#engagementpayouts_get_v1_universe_payout_history"
        }
      }
    },
    "/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-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-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-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-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-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-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-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.",
        "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-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.",
        "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. ['User' = 1, 'Group' = 2]",
                    "type": "integer",
                    "format": "int32",
                    "enum": [1, 2]
                  },
                  "files": {
                    "description": "The badge icon.",
                    "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-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-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-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/vip-servers": {
      "get": {
        "tags": ["Private servers", "Universes"],
        "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-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-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.",
        "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-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}/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-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-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-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-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-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-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-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.",
        "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-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/following-exists": {
      "post": {
        "tags": ["Interactions"],
        "summary": "Returns whether or not the current user is following each userId in a list of userIds",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Friends.Api.FollowingExistsRequestModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Friends.Api.FollowingExistsRequestModel"
              }
            }
          },
          "description": "The userIds potentially being followed",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.FollowingExistsResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.FollowingExistsResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "0: An invalid userId was passed in."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed"
          },
          "503": {
            "description": "1: Followers are disabled at this time."
          }
        },
        "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/interactions#friends_post_v1_user_following_exists"
        }
      }
    },
    "/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-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-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-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/groups/pending": {
      "get": {
        "tags": ["Groups", "Users"],
        "summary": "Gets groups that the authenticated user has requested to join",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupDetailResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupDetailResponse_"
                }
              }
            }
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_get_v1_user_groups_pending"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/legacy-groups/v1/user/groups/pending",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#get_legacy_groups_v1_user_groups_pending"
          }
        ]
      }
    },
    "/v1/user/groups/primary": {
      "delete": {
        "tags": ["Groups", "User profiles"],
        "summary": "Removes the authenticated user's primary group",
        "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://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_delete_v1_user_groups_primary"
        }
      },
      "post": {
        "tags": ["Groups", "User profiles"],
        "summary": "Sets the authenticated user's primary group",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.PrimaryGroupRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Groups.Api.PrimaryGroupRequest"
              }
            }
          },
          "description": "The request body containing the group id.",
          "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: Group is invalid or does not exist."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n2: You aren't a member of the group specified."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_post_v1_user_groups_primary"
        }
      }
    },
    "/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/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-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/user/{userId}/multiget-are-friends": {
      "post": {
        "tags": ["Connections"],
        "summary": "Check if the requesting user is friends with the specified users.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The requesting userId.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Friends.Api.MultigetAreFriendsRequestModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Friends.Api.MultigetAreFriendsRequestModel"
              }
            }
          },
          "description": "The user ids to check against with the requesting user.",
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.MultigetAreFriendsResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.MultigetAreFriendsResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: The target user is invalid or does not exist."
          },
          "403": {
            "description": "0: Token Validation Failed"
          }
        },
        "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_post_v1_user__userId__multiget_are_friends"
        }
      }
    },
    "/v1/usernames/users": {
      "post": {
        "tags": ["Users"],
        "summary": "Get users by usernames.",
        "description": "This endpoint will also check previous usernames.\r\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/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": "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/{targetUserId}/follow": {
      "post": {
        "tags": ["Interactions"],
        "summary": "Creates the following between a user and user with targetUserId",
        "parameters": [
          {
            "in": "path",
            "name": "targetUserId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Web.Captcha.Models.Request.CaptchaTokenRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/Roblox.Web.Captcha.Models.Request.CaptchaTokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.CaptchaStatusResponseModel"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.CaptchaStatusResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "1: The target user is invalid or does not exist.\r\n6: Invalid parameters.\r\n8: The user cannot follow itself."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n2: The user is banned from performing operation.\r\n3: The user is blocked from performing this action.\r\n14: The user has not passed the captcha."
          },
          "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/interactions#friends_post_v1_users__targetUserId__follow"
        }
      }
    },
    "/v1/users/{targetUserId}/followers": {
      "get": {
        "tags": ["Interactions", "Users"],
        "summary": "Get all users that follow user with targetUserId in page response format",
        "parameters": [
          {
            "in": "path",
            "name": "targetUserId",
            "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, 18, 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.Friends.Api.Models.Response.UserResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Friends.Api.Models.Response.UserResponse_"
                }
              }
            }
          },
          "400": {
            "description": "1: The target user is invalid or does not exist.\r\n6: Invalid parameters."
          },
          "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/interactions#friends_get_v1_users__targetUserId__followers"
        }
      }
    },
    "/v1/users/{targetUserId}/followers/count": {
      "get": {
        "tags": ["Interactions", "Users"],
        "summary": "Get the number of following a user has",
        "parameters": [
          {
            "in": "path",
            "name": "targetUserId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.FollowCountResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.FollowCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: The target user is invalid or does not exist."
          }
        },
        "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/interactions#friends_get_v1_users__targetUserId__followers_count"
        }
      }
    },
    "/v1/users/{targetUserId}/followings": {
      "get": {
        "tags": ["Interactions", "Users"],
        "summary": "Get all users that user with targetUserId is following in page response format",
        "parameters": [
          {
            "in": "path",
            "name": "targetUserId",
            "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, 18, 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.Friends.Api.Models.Response.UserResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Friends.Api.Models.Response.UserResponse_"
                }
              }
            }
          },
          "400": {
            "description": "1: The target user is invalid or does not exist.\r\n6: Invalid parameters."
          },
          "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/interactions#friends_get_v1_users__targetUserId__followings"
        }
      }
    },
    "/v1/users/{targetUserId}/followings/count": {
      "get": {
        "tags": ["Interactions", "Users"],
        "summary": "Get the number of following a user has",
        "parameters": [
          {
            "in": "path",
            "name": "targetUserId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.FollowCountResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Friends.Api.FollowCountResponse"
                }
              }
            }
          },
          "400": {
            "description": "1: The target user is invalid or does not exist."
          }
        },
        "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/interactions#friends_get_v1_users__targetUserId__followings_count"
        }
      }
    },
    "/v1/users/{targetUserId}/unfollow": {
      "post": {
        "tags": ["Interactions"],
        "summary": "Deletes the following between a user and user with targetUserId",
        "parameters": [
          {
            "in": "path",
            "name": "targetUserId",
            "description": "",
            "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 target user is invalid or does not exist.\r\n6: Invalid parameters.\r\n8: The user cannot follow itself."
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          },
          "403": {
            "description": "0: Token Validation Failed\r\n2: The user is banned from performing operation.\r\n3: The user is blocked from performing this action.\r\n14: The user has not passed the captcha."
          },
          "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/interactions#friends_post_v1_users__targetUserId__unfollow"
        }
      }
    },
    "/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."
          }
        },
        "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
              ]
            }
          },
          {
            "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}/badges": {
      "get": {
        "tags": ["Badges", "User profiles", "Users"],
        "summary": "Gets a list of badges a user has been awarded.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The user 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": "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.GetBadgesByUserResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Badges.Api.GetBadgesByUserResponse_"
                }
              }
            }
          },
          "404": {
            "description": "4: User is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://badges.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_get_v1_users__userId__badges"
        },
        "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}/badges/awarded-dates": {
      "get": {
        "tags": ["Badges", "Users"],
        "summary": "Gets timestamps for when badges were awarded to a user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The user Id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "badgeIds",
            "description": "The CSV of badge 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.Badges.Api.BadgeAwardResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Badges.Api.BadgeAwardResponse_"
                }
              }
            }
          },
          "400": {
            "description": "5: Too many badge Ids."
          },
          "404": {
            "description": "4: User is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://badges.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_get_v1_users__userId__badges_awarded_dates"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/users/{user_id}/inventory-items",
            "httpMethod": "GET",
            "description": "The addTime response field corresponds with the badge awarded date",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/inventories#Cloud_ListInventoryItems"
          }
        ]
      }
    },
    "/v1/users/{userId}/badges/{badgeId}/awarded-date": {
      "get": {
        "tags": ["Badges", "Users"],
        "summary": "Gets timestamp for when a single badge was awarded to a user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "User id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "path",
            "name": "badgeId",
            "description": "Badge id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "404": {
            "description": "4: User is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://badges.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/badges#badges_get_v1_users__userId__badges__badgeId__awarded_date"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/users/{user_id}/inventory-items",
            "httpMethod": "GET",
            "description": "The addTime response field corresponds with the badge awarded date",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/inventories#Cloud_ListInventoryItems"
          }
        ]
      }
    },
    "/v1/users/{userId}/bundles": {
      "get": {
        "tags": ["Assets", "Avatars", "Interactions", "Users"],
        "summary": "Lists the bundles owned by a given user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "description": "",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "description": "",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          },
          {
            "in": "query",
            "name": "sortOrder",
            "description": "",
            "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_"
                }
              }
            }
          },
          "400": {
            "description": "1: Invalid bundle"
          }
        },
        "servers": [
          {
            "url": "https://catalog.roblox.com"
          }
        ],
        "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"
        }
      }
    },
    "/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",
            "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",
            "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-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": {
      "get": {
        "tags": ["Connections", "Users"],
        "summary": "Get list of all friends for the specified user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The user Id to get the friends for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "userSort",
            "description": "Specifies how to sort the returned friends.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [0, 1, 2]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.Models.Response.UserResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.Models.Response.UserResponse_"
                }
              }
            }
          },
          "400": {
            "description": "1: The target user is invalid or does not exist."
          }
        },
        "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_users__userId__friends"
        }
      }
    },
    "/v1/users/{userId}/friends/count": {
      "get": {
        "tags": ["Connections", "Users"],
        "summary": "Get the number of friends a user has",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "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"
                }
              }
            }
          },
          "400": {
            "description": "1: The target user is invalid or does not exist."
          }
        },
        "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_users__userId__friends_count"
        }
      }
    },
    "/v1/users/{userId}/friends/find": {
      "get": {
        "tags": ["Connections", "Users"],
        "summary": "Get a paginated list of all friends for the specified user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The user Id to get the friends for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "userSort",
            "description": "Specifies how to sort the returned friends.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [0, 1, 2],
              "default": 2
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "description": "The paging cursor for the previous or next page.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "description": "The number of results per request.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "in": "query",
            "name": "findFriendsType",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [0, 1],
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Paging.CursoredPagedResult_Roblox.Friends.Api.Models.Response.FriendResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Paging.CursoredPagedResult_Roblox.Friends.Api.Models.Response.FriendResponse_"
                }
              }
            }
          },
          "400": {
            "description": "1: The target user is invalid or does not exist.\r\n6: Invalid parameters."
          }
        },
        "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_users__userId__friends_find"
        }
      }
    },
    "/v1/users/{userId}/friends/groups/roles": {
      "get": {
        "tags": ["Connections", "Groups", "Users"],
        "summary": "Gets a list of all groups the specified users' friends are in.",
        "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.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.UserGroupMembershipResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.UserGroupMembershipResponse_"
                }
              }
            }
          },
          "400": {
            "description": "3: The user is invalid or does not exist."
          },
          "403": {
            "description": "3: The user is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/friends#groups_get_v1_users__userId__friends_groups_roles"
        }
      }
    },
    "/v1/users/{userId}/friends/inactive": {
      "get": {
        "tags": ["Connections", "Users"],
        "summary": "Get list of inactive friends for the specified user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The user Id to get the friends for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.Models.Response.UserResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.Models.Response.UserResponse_"
                }
              }
            }
          },
          "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."
          }
        },
        "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_users__userId__friends_inactive"
        }
      }
    },
    "/v1/users/{userId}/friends/online": {
      "get": {
        "tags": ["Connections", "Users"],
        "summary": "Get list of all online friends for the specified user.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The user Id to get the friends for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "userSort",
            "description": "The sort order to return the friends.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [0, 1, 2]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.Models.Response.UserPresenceResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.Models.Response.UserPresenceResponse_"
                }
              }
            }
          },
          "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."
          }
        },
        "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_users__userId__friends_online"
        }
      }
    },
    "/v1/users/{userId}/friends/search": {
      "get": {
        "tags": ["Connections", "Users"],
        "summary": "Search for friends by name using a text query.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The user Id to get the friends for.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "query",
            "description": "The string to search names of friends for.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "cursor",
            "description": "The paging cursor for the previous or next page.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "description": "The number of results per request.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Paging.CursoredPagedResult_Roblox.Friends.Api.Models.Response.FriendResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Paging.CursoredPagedResult_Roblox.Friends.Api.Models.Response.FriendResponse_"
                }
              }
            }
          },
          "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."
          }
        },
        "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_users__userId__friends_search"
        }
      }
    },
    "/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-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}/groups/primary/role": {
      "get": {
        "tags": ["Groups", "User profiles", "Users"],
        "summary": "Gets a user's primary group.",
        "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.Groups.Api.GroupMembershipDetailResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Groups.Api.GroupMembershipDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "4: User is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_get_v1_users__userId__groups_primary_role"
        }
      }
    },
    "/v1/users/{userId}/groups/roles": {
      "get": {
        "tags": ["Groups", "Users"],
        "summary": "Gets a list of all group roles for groups the specified user is in.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The user id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "includeLocked",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "includeNotificationPreferences",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "discoveryType",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [0, 1, 2]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupMembershipDetailResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupMembershipDetailResponse_"
                }
              }
            }
          },
          "400": {
            "description": "3: The user is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_get_v1_users__userId__groups_roles"
        }
      }
    },
    "/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.\r\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}/premium-upsell-precheck": {
      "get": {
        "tags": ["User profiles", "Users"],
        "summary": "Premium upsell precheck",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "universeId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "placeId",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://premiumfeatures.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/user-profiles#premiumfeatures_get_v1_users__userId__premium_upsell_precheck"
        }
      }
    },
    "/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/users/{userId}/validate-membership": {
      "get": {
        "tags": ["User profiles", "Users"],
        "summary": "Get if a user has a Premium membership",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "User ID",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "0: Authorization has been denied for this request."
          }
        },
        "servers": [
          {
            "url": "https://premiumfeatures.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/user-profiles#premiumfeatures_get_v1_users__userId__validate_membership"
        }
      }
    },
    "/v1/vip-server/can-invite/{userId}": {
      "get": {
        "tags": ["Private servers", "Users"],
        "operationId": "PrivateServers_CanInviteUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CanInviteUserResponse"
                }
              }
            }
          }
        },
        "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/private-servers#PrivateServers_CanInviteUser"
        }
      }
    },
    "/v1/vip-servers/my-private-servers": {
      "get": {
        "tags": ["Private servers"],
        "operationId": "PrivateServers_GetMyPrivateServers",
        "parameters": [
          {
            "name": "privateServersTab",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/PrivateServersTab"
                }
              ],
              "default": "MyPrivateServers"
            }
          },
          {
            "name": "itemsPerPage",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string",
              "default": ""
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MyPrivateServersResponse"
                }
              }
            }
          }
        },
        "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/private-servers#PrivateServers_GetMyPrivateServers"
        }
      }
    },
    "/v1/vip-servers/{id}": {
      "get": {
        "tags": ["Metadata", "Private servers", "Universes"],
        "operationId": "PrivateServers_GetPrivateServer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivateServerResponse"
                }
              }
            }
          }
        },
        "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/metadata#PrivateServers_GetPrivateServer"
        }
      },
      "patch": {
        "tags": ["Private servers", "Universes"],
        "operationId": "PrivateServers_UpdatePrivateServer",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PrivateServerUpdateRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PrivateServerUpdateRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PrivateServerUpdateRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivateServerResponse"
                }
              }
            }
          }
        },
        "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/private-servers#PrivateServers_UpdatePrivateServer"
        }
      }
    },
    "/v1/vip-servers/{id}/permissions": {
      "patch": {
        "tags": ["Groups", "Private servers", "Universes"],
        "operationId": "PrivateServers_UpdatePrivateServerPermissions",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PrivateServerUpdatePermissionsRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PrivateServerUpdatePermissionsRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PrivateServerUpdatePermissionsRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivateServerPermissionsResponse"
                }
              }
            }
          }
        },
        "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/groups#PrivateServers_UpdatePrivateServerPermissions"
        }
      }
    },
    "/v1/vip-servers/{id}/subscription": {
      "patch": {
        "tags": ["Private servers", "Universes"],
        "operationId": "PrivateServers_UpdatePrivateServerSubscription",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PrivateServerUpdateSubscriptionRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PrivateServerUpdateSubscriptionRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PrivateServerUpdateSubscriptionRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivateServerSubscriptionResponse"
                }
              }
            }
          }
        },
        "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/private-servers#PrivateServers_UpdatePrivateServerSubscription"
        }
      }
    },
    "/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": "Accept",
            "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": "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",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "contentRepresentationPriorityList",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "in": "query",
            "name": "accessContext",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usageContext",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                }
              }
            }
          }
        },
        "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": "Accept",
            "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": ""
            }
          },
          {
            "in": "query",
            "name": "doNotFallbackToBaselineRepresentation",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "contentRepresentationPriorityList",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "in": "query",
            "name": "accessContext",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usageContext",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                }
              }
            }
          }
        },
        "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": "Accept",
            "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": ""
            }
          },
          {
            "in": "query",
            "name": "doNotFallbackToBaselineRepresentation",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "contentRepresentationPriorityList",
            "schema": {
              "type": "string",
              "default": ""
            }
          },
          {
            "in": "query",
            "name": "accessContext",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "usageContext",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                }
              }
            }
          }
        },
        "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": "Accept",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "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",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                  }
                }
              }
            }
          }
        },
        "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/assets/{id}/versions": {
      "get": {
        "tags": ["Assets"],
        "summary": "Retrieves asset information for the specified asset ID. The authenticated user must be able to manage the asset\r\nor granted by package permission.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "description": "The ID of the asset.Roblox.Platform.Assets.IAsset",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "header",
            "name": "Roblox-Place-Id",
            "description": "The ID of the place.Roblox.Platform.Assets.IPlace",
            "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": "Sort by version number, default is desc.",
            "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.Api.Develop.AssetVersion_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.AssetVersion_"
                }
              }
            }
          }
        },
        "deprecated": true,
        "servers": [
          {
            "url": "https://develop.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "description": "Use OpenCloud Assets API instead.",
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/assets#develop_get_v2_assets__id__versions"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/assets/v1/assets/{assetId}",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/assets#Assets_GetAsset"
          }
        ]
      }
    },
    "/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"
          }
        },
        "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_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.",
        "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."
          }
        },
        "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.\r\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-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": {
      "get": {
        "tags": ["Groups"],
        "summary": "Multi-get groups information by Ids.",
        "description": "If a group comes back as null, it will not be returned in the response.",
        "parameters": [
          {
            "in": "query",
            "name": "groupIds",
            "description": "The group 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.Groups.GroupResponseV2_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Groups.GroupResponseV2_"
                }
              }
            }
          },
          "400": {
            "description": "2: Too many ids in request.\r\n3: Ids could not be parsed from request."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_get_v2_groups"
        }
      }
    },
    "/v2/groups/{groupId}/games": {
      "get": {
        "tags": ["Groups", "Universes"],
        "summary": "Gets experiences created by the specified group id.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "accessFilter",
            "description": "The access type of the experiences.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [1, 2, 4],
              "default": 1
            }
          },
          {
            "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.Groups.Api.Models.Response.GroupExperienceResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.Models.Response.GroupExperienceResponse_"
                }
              }
            }
          },
          "501": {
            "description": "47: Code path is not implemented."
          }
        },
        "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/groups#games_get_v2_groups__groupId__games"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://games.roblox.com/v2/groups/{groupId}/gamesV2",
            "httpMethod": "GET",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#games_get_v2_groups__groupId__gamesV2"
          }
        ]
      }
    },
    "/v2/groups/{groupId}/gamesV2": {
      "get": {
        "tags": ["Groups", "Universes"],
        "summary": "Gets experiences created by the specified group id.",
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "description": "The group Id",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "accessFilter",
            "description": "The access type of the experiences.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [1, 2, 4],
              "default": 1
            }
          },
          {
            "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.Groups.Api.Models.Response.GroupExperienceResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.Models.Response.GroupExperienceResponse_"
                }
              }
            }
          },
          "501": {
            "description": "47: Code path is not implemented."
          }
        },
        "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/groups#games_get_v2_groups__groupId__gamesV2"
        }
      }
    },
    "/v2/groups/{groupId}/transactions": {
      "get": {
        "tags": ["Groups"],
        "operationId": "TransactionHistory_GetGroupTransactions",
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "exclusiveStartRequest",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Int64ExclusiveStartKeyCursor"
                }
              ]
            }
          },
          {
            "name": "transactionType",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/TransactionType"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionResponseApiPageResponse"
                }
              }
            }
          }
        },
        "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/groups#TransactionHistory_GetGroupTransactions"
        }
      }
    },
    "/v2/inventory/asset/{assetId}": {
      "delete": {
        "tags": ["Assets", "Inventories"],
        "summary": "Give up an asset owned by the authenticated user.\r\nAssets that are created by Roblox user or are limited edition are not eligible for deletion\r\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/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": "Accept",
            "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",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.Assets.AssetResponseItemV2"
                }
              }
            }
          }
        },
        "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/ota-version/{binaryType}": {
      "get": {
        "tags": ["Metadata"],
        "summary": "Get OTA information for a specific binary type with a given version on some channel.\r\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."
          }
        },
        "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 v3/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 v3/outfits/{userOutfitId}",
        "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/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-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-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/sales/sales-report-download": {
      "post": {
        "tags": ["Universes"],
        "operationId": "TransactionRecordsApi.SalesReportDownload_PublishSalesReportDownloadMessage",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SalesReportDownloadRequest"
                  }
                ]
              }
            },
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SalesReportDownloadRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SalesReportDownloadRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/SalesReportDownloadRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpResponseMessage"
                }
              }
            }
          }
        },
        "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/universes#TransactionRecordsApi.SalesReportDownload_PublishSalesReportDownloadMessage"
        }
      }
    },
    "/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",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [0, 1, 2, 3, 4, 5, 6, 7]
            }
          },
          {
            "in": "query",
            "name": "SortAggregation",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [0, 1, 2, 3, 4, 5]
            }
          },
          {
            "in": "query",
            "name": "SortType",
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [0, 1, 2, 3, 4, 5]
            }
          },
          {
            "in": "query",
            "name": "CreatorType",
            "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",
            "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-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/sponsored-campaigns": {
      "get": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#adconfiguration_get_v2_sponsored_campaigns"
        }
      }
    },
    "/v2/sponsored-campaigns/create": {
      "post": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#adconfiguration_post_v2_sponsored_campaigns_create"
        }
      }
    },
    "/v2/sponsored-campaigns/eligible-asset-type-ids": {
      "get": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#adconfiguration_get_v2_sponsored_campaigns_eligible_asset_type_ids"
        }
      }
    },
    "/v2/sponsored-campaigns/eligible-campaign-targets": {
      "post": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#adconfiguration_post_v2_sponsored_campaigns_eligible_campaign_targets"
        }
      }
    },
    "/v2/sponsored-campaigns/multi-get-can-user-sponsor": {
      "get": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#adconfiguration_get_v2_sponsored_campaigns_multi_get_can_user_sponsor"
        }
      }
    },
    "/v2/sponsored-campaigns/stop": {
      "post": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#adconfiguration_post_v2_sponsored_campaigns_stop"
        }
      }
    },
    "/v2/sponsored-games": {
      "get": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#adconfiguration_get_v2_sponsored_games"
        }
      }
    },
    "/v2/sponsored-games/create": {
      "post": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#adconfiguration_post_v2_sponsored_games_create"
        }
      }
    },
    "/v2/sponsored-games/stop": {
      "post": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#adconfiguration_post_v2_sponsored_games_stop"
        }
      }
    },
    "/v2/sponsored-games/universes": {
      "get": {
        "tags": ["Sponsored campaigns"],
        "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/sponsored-campaigns#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-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-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."
          },
          "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."
          }
        },
        "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_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/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-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-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}/groups/roles": {
      "get": {
        "tags": ["Groups", "Users"],
        "summary": "Gets a list of all group roles for groups the specified user is in.",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "description": "The user id.",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "in": "query",
            "name": "includeLocked",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "includeNotificationPreferences",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "discoveryType",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32",
              "enum": [0, 1, 2]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupMembershipResponse_"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupMembershipResponse_"
                }
              }
            }
          },
          "400": {
            "description": "3: The user is invalid or does not exist."
          }
        },
        "servers": [
          {
            "url": "https://groups.roblox.com"
          }
        ],
        "x-roblox-engine-usability": {
          "apiKeyWithHttpService": false
        },
        "security": [
          {},
          {
            "roblox-legacy-cookie": []
          }
        ],
        "externalDocs": {
          "url": "https://create.roblox.com/docs/cloud/reference/features/groups#groups_get_v2_users__userId__groups_roles"
        },
        "x-roblox-recommended-alternatives": [
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/memberships",
            "httpMethod": "GET",
            "description": "Fetch the role associated with the user's membership first.",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupMemberships"
          },
          {
            "url": "https://apis.roblox.com/cloud/v2/groups/{group_id}/roles",
            "httpMethod": "GET",
            "description": "Fetch the permissions from the role id",
            "documentationUrl": "https://create.roblox.com/docs/cloud/reference/features/groups#Cloud_ListGroupRoles"
          }
        ]
      }
    },
    "/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]",
                "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
                ]
              }
            }
          },
          {
            "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}/transaction-totals": {
      "get": {
        "tags": ["Users"],
        "operationId": "TransactionRecords_GetUserRevenueSummary",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "usedTypes",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "timeFrame",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/RevenueSummaryTimeFrame"
                }
              ]
            }
          },
          {
            "name": "transactionType",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/TransactionType"
                }
              ]
            }
          },
          {
            "name": "exclusiveStartCursor",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Int64ExclusiveStartKeyCursor"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionTotalsResponse"
                }
              }
            }
          }
        },
        "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/users#TransactionRecords_GetUserRevenueSummary"
        }
      }
    },
    "/v2/users/{userId}/transaction-types": {
      "get": {
        "tags": ["Users"],
        "operationId": "TransactionRecords_GetUsedTransactionTypes",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionUsedTypesResponse"
                }
              }
            }
          }
        },
        "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/users#TransactionRecords_GetUsedTransactionTypes"
        }
      }
    },
    "/v2/users/{userId}/transactions": {
      "get": {
        "tags": ["Users"],
        "operationId": "TransactionRecordsApi.TransactionRecords_GetUserTransactions",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "exclusiveStartCursor",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/Int64ExclusiveStartKeyCursor"
                }
              ]
            }
          },
          {
            "name": "transactionType",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/TransactionType"
                }
              ]
            }
          },
          {
            "name": "itemPricingType",
            "in": "query",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/ItemPricingType"
                }
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TransactionRecordResponseApiPageResponse"
                }
              }
            }
          }
        },
        "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/users#TransactionRecordsApi.TransactionRecords_GetUserTransactions"
        }
      }
    },
    "/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/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.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"
          }
        },
        "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.",
        "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"
          }
        },
        "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"
        }
      }
    }
  },
  "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.AccountSettings.Api.UpdateEmailRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.AccountSettings.Api.UpdateEmailRequest"
            }
          },
          "text/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.AccountSettings.Api.UpdateEmailRequest"
            }
          }
        },
        "description": "The request body.",
        "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.Groups.Api.MembersRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.MembersRequest"
            }
          },
          "text/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.MembersRequest"
            }
          }
        },
        "description": "The Roblox.Groups.Api.MembersRequest.",
        "required": true
      },
      "Roblox.Groups.Api.PayoutRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.PayoutRequest"
            }
          },
          "text/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.PayoutRequest"
            }
          }
        },
        "description": "The Roblox.Groups.Api.PayoutRequest.",
        "required": true
      },
      "Roblox.Groups.Api.RelationshipsRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.RelationshipsRequest"
            }
          },
          "text/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.RelationshipsRequest"
            }
          }
        },
        "description": "The Roblox.Groups.Api.RelationshipsRequest.",
        "required": true
      },
      "Roblox.LocalizationTables.Api.IngestAutoScrapedContentForGameRequest": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.LocalizationTables.Api.IngestAutoScrapedContentForGameRequest"
            }
          },
          "text/json": {
            "schema": {
              "$ref": "#/components/schemas/Roblox.LocalizationTables.Api.IngestAutoScrapedContentForGameRequest"
            }
          }
        },
        "description": "The request body.",
        "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
      },
      "AgentResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AgentType"
              }
            ]
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AgentType": {
        "enum": ["User", "Group"],
        "type": "string"
      },
      "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"
        ],
        "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."
      },
      "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."
      },
      "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
      },
      "CanInviteUserResponse": {
        "type": "object",
        "properties": {
          "canInvite": {
            "type": "boolean"
          },
          "doesOwnerPrivacyRestrictJoins": {
            "type": "boolean"
          },
          "inviteResponseType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PrivateServerInviteResponseType"
              }
            ]
          }
        },
        "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."
      },
      "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, aligned with `roblox.creatorexperienceconfig.conditionrules.v1.RpnRule`."
      },
      "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."
      },
      "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."
      },
      "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."
      },
      "CreatePrivateServerRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "expectedPrice": {
            "type": "integer",
            "format": "int64"
          },
          "isPurchaseConfirmed": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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.\r\nThis field should be omitted.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a save",
        "nullable": true
      },
      "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": {
        "type": "object",
        "properties": {
          "creator": {
            "type": "string",
            "description": "Deprecated: Please refer to the 'userId' and 'groupId' properties instead.\r\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": {
        "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).\r\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"]
        }
      },
      "CurrencyHolderType": {
        "enum": ["Undefined", "User", "Group", "UserKey"],
        "type": "string"
      },
      "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."
      },
      "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/DataStatus"
          }
        },
        "additionalProperties": false,
        "description": "A single data point in a metric query result."
      },
      "DataStatus": {
        "enum": ["Valid", "Projected", "NotStatisticallySignificant"],
        "type": "string",
        "description": "The status of a data point in a query result."
      },
      "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."
          },
          "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": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Users associated with the entry."
          },
          "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.\r\nThis field should be omitted.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for deleting a save",
        "nullable": true
      },
      "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."
      },
      "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."
      },
      "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/DimensionValuesResponse"
          },
          "metadata": {
            "$ref": "#/components/schemas/OperationMetadata"
          }
        },
        "additionalProperties": false,
        "description": "A completed long-running dimension values operation with results."
      },
      "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/QueryFilter"
            },
            "description": "Filters to apply to the query."
          },
          "granularity": {
            "$ref": "#/components/schemas/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."
      },
      "DimensionValuesResponse": {
        "type": "object",
        "properties": {
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DimensionValues"
            },
            "description": "The dimension values returned by the query."
          }
        },
        "additionalProperties": false,
        "description": "The response for a dimension values query."
      },
      "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."
      },
      "FilterField": {
        "enum": ["EngineVersion", "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."
      },
      "FilterOperation": {
        "enum": [
          "In",
          "NotIn",
          "GreaterThan",
          "GreaterThanOrEqual",
          "LessThan",
          "LessThanOrEqual",
          "Match"
        ],
        "type": "string",
        "description": "The operation to apply to a query filter."
      },
      "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."
      },
      "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."
      },
      "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."
      },
      "GameResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "rootPlace": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PlaceResponse"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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"
          }
        },
        "additionalProperties": false,
        "description": "Response model for listing a game server log"
      },
      "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
      },
      "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",
        "properties": {},
        "description": "Represents metadata about the long-running operation corresponding to a\nGenerateUserThumbnail request.\n\nThis is the type of the `Operation.metadata` field in the response to\n`GetOperation` requests for GenerateUserThumbnail operations."
      },
      "GenerateUserThumbnailResponse": {
        "type": "object",
        "properties": {
          "imageUri": {
            "type": "string",
            "description": "URI for the generated thumbnail."
          }
        },
        "description": "Returns the URL for the user's avatar thumbnail."
      },
      "GenericCurrencyResponse": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "integer",
            "format": "int64"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionRecordsApi.CurrencyType"
              }
            ]
          }
        },
        "additionalProperties": false
      },
      "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/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
      },
      "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
      },
      "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."
      },
      "HttpContent": {
        "type": "object",
        "properties": {
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StringStringIEnumerableKeyValuePair"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HttpMethod": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HttpRequestMessage": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string",
            "nullable": true
          },
          "versionPolicy": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpVersionPolicy"
              }
            ]
          },
          "content": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpContent"
              }
            ],
            "nullable": true
          },
          "method": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpMethod"
              }
            ],
            "nullable": true
          },
          "requestUri": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StringStringIEnumerableKeyValuePair"
            },
            "nullable": true,
            "readOnly": true
          },
          "properties": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "readOnly": true,
            "deprecated": true
          },
          "options": {
            "type": "object",
            "additionalProperties": {},
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HttpResponseMessage": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string",
            "nullable": true
          },
          "content": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpContent"
              }
            ],
            "nullable": true
          },
          "statusCode": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionRecordsApi.HttpStatusCode"
              }
            ]
          },
          "reasonPhrase": {
            "type": "string",
            "nullable": true
          },
          "headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StringStringIEnumerableKeyValuePair"
            },
            "nullable": true,
            "readOnly": true
          },
          "trailingHeaders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StringStringIEnumerableKeyValuePair"
            },
            "nullable": true,
            "readOnly": true
          },
          "requestMessage": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HttpRequestMessage"
              }
            ],
            "nullable": true
          },
          "isSuccessStatusCode": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HttpValidationProblemDetails": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/ProblemDetails"
          }
        ],
        "properties": {
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "nullable": true
            },
            "nullable": true
          }
        },
        "additionalProperties": {
          "nullable": true
        },
        "nullable": true
      },
      "HttpVersionPolicy": {
        "enum": [
          "RequestVersionOrLower",
          "RequestVersionOrHigher",
          "RequestVersionExact"
        ],
        "type": "string"
      },
      "HydratedSave": {
        "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
      },
      "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": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Users associated with the entry.\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.\r\nSee [Instance](https://create.roblox.com/docs/reference/engine/classes/Instance).",
        "nullable": true
      },
      "Int64ExclusiveStartKeyCursor": {
        "type": "object",
        "properties": {
          "key": {
            "type": "integer",
            "format": "int64"
          },
          "sortOrder": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionRecordsApi.SortOrder"
              }
            ]
          },
          "pagingDirection": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CursorPagingDirection"
              }
            ]
          },
          "pageNumber": {
            "type": "integer",
            "format": "int32"
          },
          "discriminator": {
            "type": "string",
            "nullable": true
          },
          "count": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "InventoryItem": {
        "type": "object",
        "properties": {
          "path": {
            "example": "users/123/inventory-items/some-inventory-item-id",
            "type": "string",
            "description": "The resource path of the inventory item.\n\nFormat: `users/{user_id}/inventory-items/{inventory_item_id}`"
          },
          "assetDetails": {
            "$ref": "#/components/schemas/InventoryItem_AssetDetails",
            "description": "Populated if this item is an asset."
          },
          "badgeDetails": {
            "$ref": "#/components/schemas/InventoryItem_BadgeDetails",
            "description": "Populated if this item is a badge."
          },
          "gamePassDetails": {
            "$ref": "#/components/schemas/InventoryItem_GamePassDetails",
            "description": "Populated if this item is a game pass."
          },
          "privateServerDetails": {
            "$ref": "#/components/schemas/InventoryItem_PrivateServerDetails",
            "description": "Populated if this item is a private server."
          },
          "addTime": {
            "readOnly": true,
            "example": "2023-07-05T12:34:56Z",
            "type": "string",
            "description": "The time when the item was added to the user's inventory. For example, the\ntime when the user purchased a private server or was awarded a badge.\n\nThis field is currently not populated for passes.",
            "format": "date-time"
          }
        },
        "description": "Represents an item in a user's inventory.",
        "x-aep-resource": {
          "patterns": ["users/{user_id}/inventory-items/{inventory_item_id}"],
          "plural": "inventory-items",
          "singular": "inventory-item"
        },
        "x-resource": true,
        "x-oneOf": {
          "details": [
            "assetDetails",
            "badgeDetails",
            "gamePassDetails",
            "privateServerDetails"
          ]
        }
      },
      "InventoryItem_AssetDetails": {
        "type": "object",
        "properties": {
          "assetId": {
            "example": "12928981934",
            "type": "string",
            "description": "A unique ID that identifies an asset."
          },
          "inventoryItemAssetType": {
            "example": "INVENTORY_ITEM_ASSET_TYPE_UNSPECIFIED",
            "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.\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | INVENTORY_ITEM_ASSET_TYPE_UNSPECIFIED | Default InventoryItemAssetType |\n  | CLASSIC_TSHIRT | Classic Tshirt |\n  | AUDIO | Audio |\n  | HAT | Hat |\n  | MODEL | Model |\n  | CLASSIC_SHIRT | Classic Shirt |\n  | CLASSIC_PANTS | Classic Pants |\n  | DECAL | Decal |\n  | CLASSIC_HEAD | Classic 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  | PACKAGE | Package |\n  | PLUGIN | Plugin |\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  | EMOTE_ANIMATION | Emote Animation |\n  | VIDEO | Video |\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  | EYEBROW_ACCESSORY | Eyebrow Accessory |\n  | EYELASH_ACCESSORY | Eyelash Accessory |\n  | MOOD_ANIMATION | Mood Animation |\n  | DYNAMIC_HEAD | Dynamic Head |\n  | CREATED_PLACE | Created Place |\n  | PURCHASED_PLACE | Purchased Place |",
            "format": "enum"
          },
          "instanceId": {
            "example": "173413781720",
            "type": "string",
            "description": "A unique ID that identifies an instance or \"copy\" of the asset that's\nowned by a user."
          },
          "collectibleDetails": {
            "$ref": "#/components/schemas/InventoryItem_CollectibleDetails",
            "description": "Additional details if this asset is a collectible. Otherwise, this\nattribute will be omitted."
          }
        },
        "description": "Specific fields only applicable to assets",
        "x-oneOf": {
          "CollectibleDetails": ["collectibleDetails"]
        }
      },
      "InventoryItem_BadgeDetails": {
        "type": "object",
        "properties": {
          "badgeId": {
            "example": "119925991",
            "type": "string",
            "description": "A unique ID that identifies a badge."
          }
        },
        "description": "Specific fields that are applicable to a badge."
      },
      "InventoryItem_CollectibleDetails": {
        "type": "object",
        "properties": {
          "itemId": {
            "example": "521cca19-75bb-4e05-a0af-633b1532c24d",
            "type": "string",
            "description": "A unique ID of a Roblox item that is a collectible."
          },
          "instanceId": {
            "example": "a8a27d38-ee51-4cf4-8b0a-485d0dfd8607",
            "type": "string",
            "description": "A unique ID of an individual copy of a collectible with ownership tied\nto a group or user."
          },
          "instanceState": {
            "example": "COLLECTIBLE_ITEM_INSTANCE_STATE_UNSPECIFIED",
            "enum": [
              "COLLECTIBLE_ITEM_INSTANCE_STATE_UNSPECIFIED",
              "AVAILABLE",
              "HOLD"
            ],
            "type": "string",
            "description": "The instance state of this specific Collectible Item Instance which\naffects whether it can be resold or traded.\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | COLLECTIBLE_ITEM_INSTANCE_STATE_UNSPECIFIED | Default CollectibleItemInstanceState |\n  | AVAILABLE | Collectible item is available for all actions |\n  | HOLD | Collectible item is on hold (can't be resold or traded) |",
            "format": "enum"
          },
          "serialNumber": {
            "example": 160,
            "type": "integer",
            "description": "If the asset is a Limited, a user-visible number that shows this item is\nthe nth replica of the asset. Otherwise, this attribute will be omitted.",
            "format": "int64"
          }
        },
        "description": "Specific fields that are applicable to a collectible.",
        "x-oneOf": {
          "InstanceId": ["instanceId"],
          "InstanceState": ["instanceState"],
          "ItemId": ["itemId"],
          "SerialNumber": ["serialNumber"]
        }
      },
      "InventoryItem_GamePassDetails": {
        "type": "object",
        "properties": {
          "gamePassId": {
            "example": "83167572",
            "type": "string",
            "description": "A unique ID that identifies a game pass."
          }
        },
        "description": "Specific fields that are applicable to a game pass."
      },
      "InventoryItem_PrivateServerDetails": {
        "type": "object",
        "properties": {
          "privateServerId": {
            "example": "175156",
            "type": "string",
            "description": "A unique ID that identifies a private server."
          }
        },
        "description": "Specific fields that are applicable to a private server."
      },
      "ItemPricingType": {
        "enum": ["Undefined", "All", "PaidAndLimited"],
        "type": "string"
      },
      "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."
      },
      "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\npage. If this field is omitted, there are no subsequent pages."
          }
        },
        "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": {
          "memoryStoreSortedMapItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MemoryStoreSortedMapItem"
            },
            "description": "The MemoryStoreSortedMapItems from the specified MemoryStoreSortedMap."
          },
          "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 (proto `LiteralValue` oneof as independent fields for JSON)."
      },
      "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."
      },
      "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."
      },
      "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."
      },
      "MetricGranularity": {
        "enum": [
          "OneMinute",
          "HalfHour",
          "OneHour",
          "OneDay",
          "OneWeek",
          "OneMonth",
          "None"
        ],
        "type": "string",
        "description": "The time granularity of metric data points in a query."
      },
      "MetricValue": {
        "type": "object",
        "properties": {
          "breakdowns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BreakdownValue"
            },
            "description": "The breakdown values for this series."
          },
          "dataPoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DataPoint"
            },
            "description": "The data points for this series."
          }
        },
        "additionalProperties": false,
        "description": "A metric value for a single breakdown series."
      },
      "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.\r\nSee [Instance](https://create.roblox.com/docs/reference/engine/classes/Instance).\r\nThese are broken down into specific types, such as MeshPart, Part, Script,\r\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"]
      },
      "MyPrivateServersData": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean"
          },
          "universeId": {
            "type": "integer",
            "format": "int64"
          },
          "placeId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "ownerId": {
            "type": "integer",
            "format": "int64"
          },
          "ownerName": {
            "type": "string",
            "nullable": true
          },
          "priceInRobux": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "privateServerId": {
            "type": "integer",
            "format": "int64"
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time"
          },
          "willRenew": {
            "type": "boolean"
          },
          "universeName": {
            "type": "string",
            "nullable": true
          },
          "purchaseScheduleId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "totalDiscountAmountInRobux": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PrivateServerSubscriptionMetadata"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MyPrivateServersResponse": {
        "type": "object",
        "properties": {
          "nextPageCursor": {
            "type": "string",
            "nullable": true
          },
          "previousPageCursor": {
            "type": "string",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MyPrivateServersData"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "O18EligibilityTag": {
        "enum": ["None", "O18Eligible", "O18EligibleAndPlus"],
        "type": "string"
      },
      "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
      },
      "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"]
        }
      },
      "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/QueryError"
          },
          "metadata": {
            "$ref": "#/components/schemas/OperationMetadata"
          }
        },
        "additionalProperties": false,
        "description": "A completed long-running operation that failed with an error."
      },
      "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
      },
      "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."
      },
      "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/OperationMetadata"
          }
        },
        "additionalProperties": false,
        "description": "A long-running operation that is still in progress."
      },
      "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"]
        }
      },
      "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."
      },
      "PlaceResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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."
      },
      "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"
      },
      "PrivateServerInviteResponseType": {
        "enum": [
          "Invalid",
          "CanInvite",
          "UnableToAddAnyUser",
          "UnableToAddNonFriends",
          "UnableToAddSpecificUser"
        ],
        "type": "string"
      },
      "PrivateServerPermissionsResponse": {
        "type": "object",
        "properties": {
          "clanAllowed": {
            "type": "boolean"
          },
          "enemyClanId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "friendsAllowed": {
            "type": "boolean"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SkinnyUserResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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
      },
      "PrivateServerResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "game": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GameResponse"
              }
            ],
            "nullable": true
          },
          "joinCode": {
            "type": "string",
            "nullable": true
          },
          "active": {
            "type": "boolean"
          },
          "subscription": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PrivateServerSubscriptionResponse"
              }
            ],
            "nullable": true
          },
          "permissions": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PrivateServerPermissionsResponse"
              }
            ],
            "nullable": true
          },
          "voiceSettings": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PrivateServerVoiceSettingsResponse"
              }
            ],
            "nullable": true
          },
          "link": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PrivateServerSubscriptionMetadata": {
        "type": "object",
        "properties": {
          "privateServerSubscriptionTags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PrivateServerSubscriptionTag"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PrivateServerSubscriptionResponse": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean"
          },
          "expired": {
            "type": "boolean"
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time"
          },
          "price": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "canRenew": {
            "type": "boolean"
          },
          "hasInsufficientFunds": {
            "type": "boolean"
          },
          "hasRecurringProfile": {
            "type": "boolean"
          },
          "hasPriceChanged": {
            "type": "boolean"
          },
          "purchaseScheduleId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "totalDiscountAmountInRobux": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/PrivateServerSubscriptionMetadata"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PrivateServerSubscriptionTag": {
        "enum": ["Invalid", "RobloxSubscription"],
        "type": "string"
      },
      "PrivateServerUpdatePermissionsRequest": {
        "type": "object",
        "properties": {
          "clanAllowed": {
            "type": "boolean",
            "nullable": true
          },
          "enemyClanId": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "friendsAllowed": {
            "type": "boolean",
            "nullable": true
          },
          "usersToAdd": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "nullable": true
          },
          "usersToRemove": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PrivateServerUpdateRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "newJoinCode": {
            "type": "boolean",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PrivateServerUpdateSubscriptionRequest": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean",
            "nullable": true
          },
          "price": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PrivateServerVoiceSettingsResponse": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PrivateServersApi.SortOrder": {
        "enum": ["Asc", "Desc"],
        "type": "string"
      },
      "PrivateServersEnabledInUniverseResponse": {
        "type": "object",
        "properties": {
          "privateServersEnabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "PrivateServersTab": {
        "enum": ["MyPrivateServers", "OtherPrivateServers"],
        "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
      },
      "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
      },
      "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."
      },
      "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
      },
      "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/FilterOperation"
          }
        },
        "additionalProperties": false,
        "description": "A filter applied to a query dimension."
      },
      "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/QueryResponse"
          },
          "metadata": {
            "$ref": "#/components/schemas/OperationMetadata"
          }
        },
        "additionalProperties": false,
        "description": "A completed long-running query operation with results."
      },
      "QueryRequest": {
        "required": ["endTime", "granularity", "metric", "startTime"],
        "type": "object",
        "properties": {
          "metric": {
            "type": "string",
            "description": "The metric to query."
          },
          "granularity": {
            "$ref": "#/components/schemas/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/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."
      },
      "QueryResponse": {
        "type": "object",
        "properties": {
          "values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MetricValue"
            },
            "description": "The metric values returned by the query."
          }
        },
        "additionalProperties": false,
        "description": "The response for a metric query."
      },
      "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"
        ],
        "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",
        "x-enum-varnames": [
          "InExperienceConfig",
          "RecommendationServicesConfig",
          "DataStoresConfig",
          "ExtendedServicesConfig",
          "LeaderboardsConfig",
          "ExperienceUserConfig",
          "JourneysConfig"
        ]
      },
      "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."
      },
      "RevenueSummaryResponse": {
        "type": "object",
        "properties": {
          "recurringRobuxStipend": {
            "type": "integer",
            "format": "int64"
          },
          "itemSaleRobux": {
            "type": "integer",
            "format": "int64"
          },
          "purchasedRobux": {
            "type": "integer",
            "format": "int64"
          },
          "tradeSystemRobux": {
            "type": "integer",
            "format": "int64"
          },
          "pendingRobux": {
            "type": "integer",
            "format": "int64"
          },
          "groupPayoutRobux": {
            "type": "integer",
            "format": "int64"
          },
          "individualToGroupRobux": {
            "type": "integer",
            "format": "int64"
          },
          "premiumPayouts": {
            "type": "integer",
            "format": "int64"
          },
          "groupPremiumPayouts": {
            "type": "integer",
            "format": "int64"
          },
          "adjustmentRobux": {
            "type": "integer",
            "format": "int64"
          },
          "immersiveAdPayouts": {
            "type": "integer",
            "format": "int64"
          },
          "subscriptionPayouts": {
            "type": "integer",
            "format": "int64"
          },
          "subscriptionClawbacks": {
            "type": "integer",
            "format": "int64"
          },
          "isShowImmersiveAdPayoutSummaryOnZeroEnabled": {
            "type": "boolean"
          },
          "commissionRobux": {
            "type": "integer",
            "format": "int64"
          },
          "publishingAdvanceRebates": {
            "type": "integer",
            "format": "int64"
          },
          "groupAffiliatePayoutRobux": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "RevenueSummaryTimeFrame": {
        "enum": ["Day", "Week", "Month", "Year"],
        "type": "string"
      },
      "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.AccountSettings.Api.CurrentEmailsResponse": {
        "description": "Response model for getting the user's verified and pending email addresses",
        "type": "object",
        "properties": {
          "verifiedEmail": {
            "description": "The user's most recent verified email address (masked)",
            "type": "string"
          },
          "pendingEmail": {
            "description": "The user's pending (unverified) email address if one exists (masked)",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.EmailResponse": {
        "description": "Response model for getting the user's email address and verified status",
        "type": "object",
        "properties": {
          "emailAddress": {
            "description": "The masked and formatted email address",
            "type": "string"
          },
          "verified": {
            "description": "The verified status of the email",
            "type": "boolean"
          },
          "canBypassPasswordForEmailUpdate": {
            "description": "Whether password is required for updating email",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.Models.AccountsSettingsMetadataModel": {
        "description": "A model containing website metadata for avatars",
        "type": "object",
        "properties": {
          "IsAccountsRestrictionsSpamBugFixEnabled": {
            "description": "Whether or not account restrictions spam bug fix is enabled",
            "type": "boolean"
          },
          "MaximumParentalControlsMonthlySpendLimitInUSD": {
            "format": "int32",
            "description": "The max amount a user can enter as their monthly spending limit in USD",
            "type": "integer"
          },
          "IsParentalMonthlyLimitInUIEnabled": {
            "description": "Enables/disables the section in the account parental controls page where you can set the monthly spend limit",
            "type": "boolean"
          },
          "IsParentalNotificationSettingsInUIEnabled": {
            "description": "Enables/disables the section in the account parental controls page where you can set the parental notifications settings",
            "type": "boolean"
          },
          "IsContentControlsEnabled": {
            "description": "Enables/disables the section in the account parental controls page where you can set the content control settings",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.Models.Response.AccountCountrySettingsResponse": {
        "description": "",
        "type": "object",
        "properties": {
          "value": {
            "$ref": "#/components/schemas/Roblox.AccountSettings.Api.Models.Response.UserAccountCountry"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.Models.Response.UpdateAccountCountryResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.Models.Response.UserAccountCountry": {
        "description": "",
        "type": "object",
        "properties": {
          "countryName": {
            "description": "",
            "type": "string"
          },
          "subdivisionIso": {
            "description": "",
            "type": "string"
          },
          "localizedSubdivision": {
            "description": "",
            "type": "string"
          },
          "localizedName": {
            "description": "",
            "type": "string"
          },
          "countryId": {
            "format": "int32",
            "description": "",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.SendVerifyEmailRequest": {
        "description": "Request model for sending a verify email request",
        "type": "object",
        "properties": {
          "freeItem": {
            "description": "Whether the user will see messaging that they received a free item after verifying their email",
            "type": "boolean"
          },
          "isAdsAccount": {
            "description": "Whether the request is coming from ads site",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.ThemeConfigurationRequest": {
        "description": "Response model for get user's theme type",
        "type": "object",
        "properties": {
          "themeType": {
            "description": "theme Type",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.ThemeConfigurationResponse": {
        "description": "Response model for get user's theme type",
        "type": "object",
        "properties": {
          "themeType": {
            "description": "theme Type",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.TradePrivacyResponse": {
        "description": "Response model for getting the user's trade privacy settings",
        "type": "object",
        "properties": {
          "tradePrivacy": {
            "description": "The current trade privacy setting for the current user",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.TradePrivacyUpdateResponse": {
        "description": "Response model for updating the user's trade privacy settings",
        "type": "object",
        "properties": {
          "tradePrivacy": {
            "format": "int32",
            "description": "The trade privacy setting after updating ['Undefined' = 0, 'Disabled' = 1, 'NoOne' = 2, 'Friends' = 3, 'TopFriends' = 4, 'Following' = 5, 'Followers' = 6, 'All' = 7]",
            "enum": [0, 1, 2, 3, 4, 5, 6, 7],
            "type": "integer"
          },
          "inventoryPrivacy": {
            "format": "int32",
            "description": "The inventory privacy setting after updating ['NoOne' = 1, 'Friends' = 2, 'FriendsAndFollowing' = 3, 'FriendsFollowingAndFollowers' = 4, 'AllAuthenticatedUsers' = 5, 'AllUsers' = 6]",
            "enum": [1, 2, 3, 4, 5, 6],
            "type": "integer"
          },
          "privacySettingResponse": {
            "format": "int32",
            "description": "The response state after updating trade privacy ['Success' = 0, 'Conflict' = 1]",
            "enum": [0, 1],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.TradeValueRequest": {
        "description": "Request model for trade value setting update",
        "type": "object",
        "properties": {
          "tradeValue": {
            "format": "int32",
            "description": "The desired trade value setting for the active user ['Undefined' = 0, 'None' = 1, 'Low' = 2, 'Medium' = 3, 'High' = 4]",
            "enum": [0, 1, 2, 3, 4],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.TradeValueResponse": {
        "description": "Response model for getting the user's trade value settings",
        "type": "object",
        "properties": {
          "tradeValue": {
            "description": "The current trade value setting for the current user",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.UpdateAccountCountryRequest": {
        "description": "Request Model for updating a user's account country",
        "type": "object",
        "properties": {
          "targetCountryId": {
            "format": "int32",
            "description": "The targetCountryId",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.UpdateEmailRequest": {
        "description": "Request model for updating an email",
        "type": "object",
        "properties": {
          "password": {
            "description": "The user's password.",
            "type": "string"
          },
          "emailAddress": {
            "description": "The new email address to set.",
            "type": "string"
          },
          "skipVerificationEmail": {
            "description": "Should the email controller skip sending the verification email.",
            "type": "boolean"
          },
          "isAdsAccount": {
            "description": "Whether the request is coming from ads site.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.AccountSettings.Api.UpdateTradePrivacyRequest": {
        "description": "Request model for trade privacy setting update",
        "type": "object",
        "properties": {
          "tradePrivacy": {
            "format": "int32",
            "description": "The desired trade privacy setting for the active user ['Undefined' = 0, 'Disabled' = 1, 'NoOne' = 2, 'Friends' = 3, 'TopFriends' = 4, 'Following' = 5, 'Followers' = 6, 'All' = 7]",
            "enum": [0, 1, 2, 3, 4, 5, 6, 7],
            "type": "integer"
          }
        },
        "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.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.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.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.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.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.AssetVersion": {
        "description": "Model of an asset version.",
        "type": "object",
        "properties": {
          "Id": {
            "format": "int64",
            "description": "The VersionID of the asset version.",
            "type": "integer"
          },
          "assetId": {
            "format": "int64",
            "description": "The ID of the asset.",
            "type": "integer"
          },
          "assetVersionNumber": {
            "format": "int32",
            "description": "The version number.",
            "type": "integer"
          },
          "creatorType": {
            "description": "Type of the asset version creator.",
            "type": "string"
          },
          "creatorTargetId": {
            "format": "int64",
            "description": "ID of the asset version creator.",
            "type": "integer"
          },
          "creatingUniverseId": {
            "format": "int64",
            "description": "ID of the universe this asset version was created in.",
            "type": "integer"
          },
          "created": {
            "format": "date-time",
            "description": "The created date of this asset version.",
            "type": "string"
          },
          "isEqualToCurrentPublishedVersion": {
            "description": "Indicates if this version is same to current published version.\r\nThis property is available on /v1/{assetId}/published-versions and /v1/{assetId}/version/{versionNumber}.",
            "type": "boolean"
          },
          "isPublished": {
            "description": "Indicates if this version is / was published.\r\nThis property is available on /v1/{assetId}/saved-versions.\r\nThis should be true for all assets coming from GetAssetPublishedVersionsByAssetId",
            "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": {
            "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"
            }
          }
        },
        "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.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.AssetVotingModel": {
        "description": "Asset voting information",
        "type": "object",
        "properties": {
          "assetId": {
            "format": "int64",
            "description": "The !:IAsset's id.",
            "type": "integer"
          },
          "hasUserVoted": {
            "description": "Whether the user has voted on this !:IAsset.",
            "type": "boolean"
          },
          "canUserVote": {
            "description": "Whether the user can vote on this !:IAsset.",
            "type": "boolean"
          },
          "shouldShowVotes": {
            "description": "Whether votes should be shown.",
            "type": "boolean"
          },
          "upVotes": {
            "format": "int64",
            "description": "The number of up votes.",
            "type": "integer"
          },
          "downVotes": {
            "format": "int64",
            "description": "The number of down votes.",
            "type": "integer"
          },
          "reasonForNotAbleToVote": {
            "description": "The reason this !:IAsset cannot be voted on.",
            "type": "string"
          }
        },
        "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"
          },
          "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"
          },
          "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"
          },
          "demoModeLastChangedTime": {
            "format": "date-time",
            "description": "When demo mode was last toggled. For client-side throttle UX.",
            "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"
          },
          "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"
          },
          "demoModeLastChangedTime": {
            "format": "date-time",
            "description": "When demo mode was last toggled. For client-side throttle UX.",
            "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"
          }
        },
        "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.AssetDelivery.Api.AssetMetadata": {
        "description": "An asset piece of metadata.",
        "type": "object",
        "properties": {
          "metadataType": {
            "format": "int32",
            "description": "Asset metadata type. ['UncompressedSize' = 1]",
            "enum": [1],
            "type": "integer"
          },
          "value": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Badges.Api.BadgeAwardResponse": {
        "description": "The result of being awarded a badge.",
        "type": "object",
        "properties": {
          "badgeId": {
            "format": "int64",
            "description": "The badge Id.",
            "type": "integer"
          },
          "awardedDate": {
            "format": "date-time",
            "description": "When the badge was awarded.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Badges.Api.BadgeCreatorResponse": {
        "description": "Represents information about the badge creator. (Creator of the place that awarded the badge)",
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "description": "The creator ID",
            "type": "integer"
          },
          "name": {
            "description": "The name of the creator",
            "type": "string"
          },
          "type": {
            "description": "The type of the creator",
            "type": "string"
          }
        },
        "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"
          }
        },
        "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.GetBadgesByUserResponse": {
        "description": "Response for the GetBadgesByUser endpoint.",
        "type": "object",
        "properties": {
          "creator": {
            "$ref": "#/components/schemas/Roblox.Badges.Api.BadgeCreatorResponse"
          },
          "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.Badges.Api.IconUploadResponse": {
        "description": "Badge icon upload response.",
        "type": "object",
        "properties": {
          "targetId": {
            "format": "int64",
            "description": "The asset id of the uploaded icon.",
            "type": "integer"
          }
        },
        "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.AssetFavoriteModel": {
        "description": "A model to represent asset favorites.",
        "type": "object",
        "properties": {
          "assetId": {
            "format": "int64",
            "description": "The Id of the asset being favorited.",
            "type": "integer"
          },
          "userId": {
            "format": "int64",
            "description": "The Id of the user favoriting the asset.",
            "type": "integer"
          },
          "created": {
            "format": "date-time",
            "description": "The time at which the user favorited the asset.",
            "type": "string"
          }
        },
        "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.\r\nBound in the game-engine MarketplaceService.GetProductInfo method.\r\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.BundleFavoriteModel": {
        "description": "A model to represent bundle favorites.",
        "type": "object",
        "properties": {
          "bundleId": {
            "format": "int64",
            "description": "The Id of the bundle being favorited.",
            "type": "integer"
          },
          "userId": {
            "format": "int64",
            "description": "The Id of the user favoriting the bundle.",
            "type": "integer"
          },
          "created": {
            "format": "date-time",
            "description": "The time at which the user favorited the bundle.",
            "type": "string"
          }
        },
        "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.\r\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
            ],
            "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.\r\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"
          },
          "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
            ],
            "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.\r\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.CategoryModel": {
        "description": "Response model for category.",
        "type": "object",
        "properties": {
          "category": {
            "format": "int32",
            "description": "Category type.",
            "enum": [0, 1, 2, 3, 4, 5, 11, 12, 13, 14, 15, 16, 17, 18],
            "type": "integer"
          },
          "taxonomy": {
            "description": "The associated public facing web_stable_id corresponding to internal taxonomy uuid for this category.",
            "type": "string"
          },
          "assetTypeIds": {
            "description": "List of AssetTypeIds corresponding to AssetType enum that this category returns.",
            "type": "array",
            "items": {
              "format": "int32",
              "type": "integer"
            }
          },
          "bundleTypeIds": {
            "description": "List of bundleTypeIds corresponding to BundleType enum that this category returns.",
            "type": "array",
            "items": {
              "format": "int32",
              "type": "integer"
            }
          },
          "categoryId": {
            "format": "int32",
            "description": "Category id.",
            "type": "integer"
          },
          "name": {
            "description": "Category name.",
            "type": "string"
          },
          "orderIndex": {
            "format": "int32",
            "description": "Category order index.",
            "type": "integer"
          },
          "subcategories": {
            "description": "Subcategories under this category.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Catalog.Api.SubcategoryModel"
            }
          },
          "isSearchable": {
            "description": "Gets or sets whether the category is searchable in search bar.",
            "type": "boolean"
          }
        },
        "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.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.FavoriteBundlesResponse": {
        "description": "A response containing favorited bundles and whether there are more.",
        "type": "object",
        "properties": {
          "favorites": {
            "description": "Collection of favorited bundles and associated details.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Catalog.Api.BundleDetailsModel"
            }
          },
          "moreFavorites": {
            "description": "True if there exists a next page of favorited bundles.",
            "type": "boolean"
          },
          "nextCursor": {
            "description": "Pagination cursor for the next page.",
            "type": "string"
          },
          "previousCursor": {
            "description": "Pagination cursor for the previous page.",
            "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.SubcategoryModel": {
        "description": "Response model for subcategory.",
        "type": "object",
        "properties": {
          "subcategory": {
            "format": "int32",
            "description": "Subcategory type.",
            "enum": [
              0, 1, 2, 3, 4, 5, 9, 10, 12, 13, 14, 15, 19, 20, 21, 22, 23, 24,
              25, 26, 27, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
              50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
              66, 67
            ],
            "type": "integer"
          },
          "taxonomy": {
            "description": "The taxonomy UUID associated with this node.",
            "type": "string"
          },
          "assetTypeIds": {
            "description": "List of AssetTypeIds corresponding to AssetType enum that this category returns.",
            "type": "array",
            "items": {
              "format": "int32",
              "type": "integer"
            }
          },
          "bundleTypeIds": {
            "description": "List of bundleTypeIds corresponding to BundleType enum that this category returns.",
            "type": "array",
            "items": {
              "format": "int32",
              "type": "integer"
            }
          },
          "subcategoryId": {
            "format": "int32",
            "description": "Subcategory id.",
            "type": "integer"
          },
          "name": {
            "description": "Subcategory name.",
            "type": "string"
          },
          "shortName": {
            "description": "Subcategory short name.",
            "type": "string"
          }
        },
        "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.Catalog.Api.TopicModel": {
        "description": "Response model for avatar topics.",
        "type": "object",
        "properties": {
          "displayName": {
            "description": "The display topic name.",
            "type": "string"
          },
          "originalTopicName": {
            "description": "The original topic name stored in the table.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Catalog.Api.TopicRequestModel": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.MarketplaceTopicDiscovery.TopicDiscoveryService.V1Beta1.AvatarItem"
            }
          },
          "selectTopics": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "inputQuery": {
            "type": "string"
          },
          "maxResult": {
            "format": "int32",
            "description": "Maximum number of topic results returned from the server.",
            "type": "integer"
          },
          "genderType": {
            "format": "int32",
            "description": " ['Unknown' = 1, 'Male' = 2, 'Female' = 3]",
            "enum": [1, 2, 3],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Catalog.Api.TopicResponse": {
        "type": "object",
        "properties": {
          "topics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Catalog.Api.TopicModel"
            }
          },
          "error": {
            "$ref": "#/components/schemas/Roblox.MarketplaceTopicDiscovery.TopicDiscoveryService.V1Beta1.Error"
          }
        },
        "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.\r\nincluding its module name, the names of its libraries, and whether the channel supports Android binaries.",
        "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.",
        "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"
          }
        },
        "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.",
        "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.\r\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.EngagementPayouts.Api.PayoutResponseModel": {
        "description": "A model for payout responses",
        "type": "object",
        "properties": {
          "engagementScore": {
            "format": "double",
            "description": "Gets the engagement score",
            "type": "number",
            "readOnly": true
          },
          "payoutInRobux": {
            "format": "int64",
            "description": "Gets the payout in Robux",
            "type": "integer",
            "readOnly": true
          },
          "payoutType": {
            "description": "Gets the payout type",
            "type": "string",
            "readOnly": true
          },
          "eligibilityType": {
            "description": "Gets the eligibility type",
            "type": "string",
            "readOnly": true
          }
        },
        "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.CaptchaStatusResponseModel": {
        "description": "This is response model to notify when action succeeded, failed, or captcha is required",
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "isCaptchaRequired": {
            "description": "Captcha is set to true if captcha is required from user to perform action",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Friends.Api.FollowCountResponse": {
        "description": "Response model for following or followers Count",
        "type": "object",
        "properties": {
          "count": {
            "format": "int64",
            "description": "Count of following or followers",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Friends.Api.FollowingExistsRequestModel": {
        "description": "Request model for FollowingExists endpoint",
        "type": "object",
        "properties": {
          "targetUserIds": {
            "description": "The userIds which the user may or may not be following.",
            "type": "array",
            "items": {
              "format": "int64",
              "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]",
            "enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
            "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"
          },
          "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.FollowingExistsResponse": {
        "description": "Response contained in list for FollowingExists endpoint. Corresponds to a single userId.",
        "type": "object",
        "properties": {
          "isFollowing": {
            "description": "Whether or not a user is following userId in FriendsController.FollowingExists",
            "type": "boolean"
          },
          "isFollowed": {
            "description": "Whether or not a user is followed by userId in FriendsController.FollowingExists",
            "type": "boolean"
          },
          "userId": {
            "format": "int64",
            "description": "The userId being potentially followed",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Friends.Api.Models.Response.FollowingExistsResponseModel": {
        "description": "Response model for FollowingExists endpoint.",
        "type": "object",
        "properties": {
          "followings": {
            "description": "A list of userIds and whether or not the given user is following them.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.FollowingExistsResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Friends.Api.Models.Response.FriendResponse": {
        "description": "A response model representing friend information",
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "description": "The friend's userId",
            "type": "integer"
          },
          "hasVerifiedBadge": {
            "description": "The friend's verified badge status.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Friends.Api.Models.Response.FriendsPageMetadataResponse": {
        "type": "object",
        "properties": {
          "isFriendsFilterBarEnabled": {
            "type": "boolean",
            "readOnly": true
          },
          "isFriendsPageSortExperimentEnabled": {
            "type": "boolean",
            "readOnly": true
          },
          "isFriendsUserDataStoreCacheEnabled": {
            "type": "boolean",
            "readOnly": true
          },
          "frequentFriendSortRollout": {
            "format": "int32",
            "type": "integer",
            "readOnly": true
          },
          "userName": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          }
        },
        "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.RefreshQrSessionResponse": {
        "type": "object",
        "properties": {
          "Success": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Friends.Api.Models.Response.UserPresenceResponse": {
        "description": "A response model representing user presence information.",
        "type": "object",
        "properties": {
          "userPresence": {
            "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.UserPresenceResponseModel"
          },
          "sortScore": {
            "format": "double",
            "description": "Carousel sort score",
            "type": "number"
          },
          "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.Models.Response.UserPresenceResponseModel": {
        "description": "Response model for !:IUserPresence objects",
        "type": "object",
        "properties": {
          "UserPresenceType": {
            "description": "User Presence Type",
            "type": "string"
          },
          "UserLocationType": {
            "description": "Location Type",
            "type": "string"
          },
          "lastLocation": {
            "description": "Last Location",
            "type": "string"
          },
          "placeId": {
            "format": "int64",
            "description": "Place Id",
            "type": "integer"
          },
          "rootPlaceId": {
            "format": "int64",
            "description": "Root Place Id",
            "type": "integer"
          },
          "gameInstanceId": {
            "format": "uuid",
            "description": "Game Instance Id",
            "type": "string"
          },
          "universeId": {
            "format": "int64",
            "description": "Universe Id",
            "type": "integer"
          },
          "lastOnline": {
            "format": "date-time",
            "description": "Most recent time online",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Friends.Api.Models.Response.UserResponse": {
        "description": "A response model representing user information that also contains select presence information",
        "type": "object",
        "properties": {
          "isOnline": {
            "description": "Whether the user is online.",
            "type": "boolean"
          },
          "presenceType": {
            "format": "int32",
            "description": "Where the user is online.",
            "enum": [0, 1, 2, 3, 4],
            "type": "integer"
          },
          "isDeleted": {
            "description": "Whether the user is deleted.",
            "type": "boolean"
          },
          "friendFrequentScore": {
            "format": "int64",
            "description": "Frequents value for the user.",
            "type": "integer"
          },
          "friendFrequentRank": {
            "format": "int64",
            "description": "Frequents rank for the user.",
            "type": "integer"
          },
          "hasVerifiedBadge": {
            "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.MultigetAreFriendsRequestModel": {
        "description": "Request model for MultigetAreFriends endpoint",
        "type": "object",
        "properties": {
          "targetUserIds": {
            "description": "The target userIds to check against with the requesting user regarding friendship.",
            "type": "array",
            "items": {
              "format": "int64",
              "type": "integer"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Friends.Api.MultigetAreFriendsResponse": {
        "description": "Response model for MultigetAreFriendsResponse",
        "type": "object",
        "properties": {
          "friendsId": {
            "description": "friends id list",
            "type": "array",
            "items": {
              "format": "int64",
              "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.AssociateLocalizationTablesToGameRequest": {
        "type": "object",
        "properties": {
          "tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.GameInternationalization.Api.LocalizationTableGameAssociation"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.GameInternationalization.Api.AssociateLocalizationTablesToGameResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.GameInternationalization.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.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.GameAutolocalizationInformationResponse": {
        "type": "object",
        "properties": {
          "isAutolocalizationEnabled": {
            "type": "boolean"
          },
          "shouldUseLocalizationTable": {
            "type": "boolean"
          },
          "autoLocalizationTableId": {
            "format": "uuid",
            "type": "string"
          },
          "assetId": {
            "format": "int64",
            "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. ['Approved' = 0, 'PendingReview' = 1, 'UnAvailable' = 2, 'Rejected' = 3, 'Error' = 4]",
            "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. ['Approved' = 0, 'PendingReview' = 1, 'UnAvailable' = 2, 'Rejected' = 3, 'Error' = 4]",
            "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. ['Approved' = 0, 'PendingReview' = 1, 'UnAvailable' = 2, 'Rejected' = 3, 'Error' = 4]",
            "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. ['Approved' = 0, 'PendingReview' = 1, 'UnAvailable' = 2, 'Rejected' = 3, 'Error' = 4]",
            "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 ['UniverseDisplayNames' = 0, 'UniverseDisplayDescriptions' = 1, 'BadgeDisplayName' = 2, 'BadgeDisplayDescription' = 3, 'DeveloperProductDisplayName' = 4, 'DeveloperProductDisplayDescription' = 5, 'GamePassDisplayName' = 6, 'GamePassDisplayDescription' = 7]",
            "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. ['Language' = 0, 'Locale' = 1]",
            "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. ['Language' = 0, 'Locale' = 1]",
            "enum": ["Language", "Locale"],
            "type": "string"
          },
          "languageCode": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.GameInternationalization.Api.LanguageOrLocaleSettings": {
        "type": "object",
        "properties": {
          "languageCodeType": {
            "description": "The language code type. ['Language' = 0, 'Locale' = 1]",
            "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.LocalizationTableGameAssociation": {
        "type": "object",
        "properties": {
          "id": {
            "format": "uuid",
            "type": "string"
          },
          "dissociate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.GameInternationalization.Api.MediaAssetResponse": {
        "type": "object",
        "properties": {
          "mediaAssetId": {
            "type": "string"
          },
          "mediaAssetAltText": {
            "type": "string"
          },
          "state": {
            "description": "Enum for image status. ['Approved' = 0, 'PendingReview' = 1, 'UnAvailable' = 2, 'Rejected' = 3, 'Error' = 4]",
            "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. ['Language' = 0, 'Locale' = 1]",
            "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 ['GameTranslationStatus' = 0, 'GameTranslationStatusForTranslator' = 1, 'GameTranslationStatusForTranslatorGroup' = 2, 'Test' = 3]",
            "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.SetAutolocalizationSettingsForGameRequest": {
        "type": "object",
        "properties": {
          "isAutolocalizationEnabled": {
            "type": "boolean"
          },
          "shouldUseLocalizationTable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.GameInternationalization.Api.SetAutolocalizationTableForGameRequest": {
        "type": "object",
        "properties": {
          "tableId": {
            "format": "uuid",
            "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. ['Approved' = 0]",
            "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. ['InGameContent' = 0]",
            "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. ['LanguageOrLocaleSupportedForGame' = 0, 'LanguageOrLocaleNotSupportedForGame' = 1, 'LanguageOrLocaleIsSource' = 2, 'InsufficientPermission' = 3, 'GameDoesNotExist' = 4, 'GameDoesNotHaveTable' = 5, 'UnknownError' = 6]",
            "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. ['Success' = 1, 'LanguageOrLocaleNotSupportedForGame' = 2]",
            "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. ['Language' = 0, 'Locale' = 1]",
            "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"
          }
        },
        "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.GameMediaItem": {
        "description": "Response model for getting the game media item",
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "description": "The media item id.",
            "type": "integer"
          },
          "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's alt text",
            "type": "string"
          }
        },
        "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]",
            "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
            ],
            "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"
          }
        },
        "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.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 when an experience is\r\ncurrently playable but will be restricted under upcoming Roblox-Core content rules.\r\nMirrors the existing Roblox.Games.Api.Models.Response.PlayableUxTreatment contract intentionally so client\r\nrendering can be unified.",
        "type": "object",
        "properties": {
          "treatment": {
            "description": "Identifier of the client component to render (currently \"ageCheckUpsell\").\r\nAbsent when the upsell should not surface.",
            "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. Currently only carries\r\nRoblox.Games.Api.Models.Response.UpsellUxTreatmentData.BodyText; structured to allow additional fields without breaking the\r\nJSON contract.",
        "type": "object",
        "properties": {
          "bodyText": {
            "description": "Localized body text for the upsell banner (e.g. \"You'll soon need an age check to\r\njoin this game.\").",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.BlockedKeywordPageResponse_Roblox.Groups.Client.BlockedKeywordModel_": {
        "description": "ApiPageResponse for blocked keywords",
        "type": "object",
        "properties": {
          "totalActiveKeywordsCount": {
            "format": "int32",
            "description": "Total number of active keywords in the group",
            "type": "integer"
          },
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Client.BlockedKeywordModel"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.ChangeOwnerRequest": {
        "description": "A request model for changing the group owner.",
        "type": "object",
        "properties": {
          "userId": {
            "format": "int64",
            "description": "The user id.",
            "type": "integer"
          }
        },
        "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.CreateBlockedKeywordsRequest": {
        "type": "object",
        "properties": {
          "keywords": {
            "type": "string"
          },
          "isPrivate": {
            "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.GetSocialLinkResponse": {
        "description": "A social link response from a create request",
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.SocialLinkResponse"
            }
          },
          "socialLinksVerificationStatus": {
            "format": "int32",
            "enum": [0, 1, 2, 3],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupAllRolesResponse": {
        "description": "A group roles response model",
        "type": "object",
        "properties": {
          "groupId": {
            "format": "int64",
            "description": "The group id",
            "type": "integer"
          },
          "roles": {
            "description": "The roles in the group",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRoleResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupAuditLogPageResponse_Roblox.Groups.Api.Models.Response.GroupAuditLogResponseItem_": {
        "description": "ApiPageResponse for group audit log",
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.GroupAuditLogResponseItem"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupBanMemberResponse": {
        "description": "A ban member from group response",
        "type": "object",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.UserModel"
          },
          "actingUser": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.UserGroupRoleResponse"
          },
          "created": {
            "format": "date-time",
            "description": "The group ban's created time",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupChannelPermissionsModel": {
        "description": "A model for communication channel permissions.",
        "type": "object",
        "properties": {
          "channelId": {
            "description": "Group Channel Id",
            "type": "string"
          },
          "groupForumsPermissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupForumsPermissionsModel"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupConfigurationDetailsResponse": {
        "description": "A detailed group response model",
        "type": "object",
        "properties": {
          "groupId": {
            "format": "int64",
            "description": "The group id",
            "type": "integer"
          },
          "emblemId": {
            "format": "int64",
            "description": "The group emblem id",
            "type": "integer"
          },
          "coverPhotoId": {
            "format": "int64",
            "description": "The group cover photo id",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupConfigurationDisplayOptionsResponse": {
        "description": "A response model for group configuration",
        "type": "object",
        "properties": {
          "groupConfiguration": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupConfigurationResponse"
          },
          "recurringPayoutsConfiguration": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.RecurringPayoutsConfigurationResponse"
          },
          "roleConfiguration": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.RoleConfigurationResponse"
          },
          "groupNameChangeConfiguration": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupNameChangeConfigurationResponse"
          },
          "isPremiumPayoutsEnabled": {
            "description": "The configuration of premium payouts shows in Group Revenue Summary page",
            "type": "boolean"
          },
          "isDefaultEmblemPolicyEnabled": {
            "description": "If set to true, default group emblem policies handled by GUAC will be enabled\r\n            \r\nIf set to false, default group emblem policies will not be enabled",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupConfigurationResponse": {
        "description": "A response model for group configuration",
        "type": "object",
        "properties": {
          "nameMaxLength": {
            "format": "int32",
            "description": "The maximum length of a group name",
            "type": "integer"
          },
          "descriptionMaxLength": {
            "format": "int32",
            "description": "The maximum length of a group description",
            "type": "integer"
          },
          "iconMaxFileSizeMb": {
            "format": "int32",
            "description": "The maximum file size of the group icon in megabytes",
            "type": "integer"
          },
          "coverPhotoMaxFileSizeMb": {
            "format": "int32",
            "description": "The maximum file size of the group cover photo in megabytes",
            "type": "integer"
          },
          "validCoverPhotoDimensions": {
            "description": "The valid dimensions of the group cover photo in CSV format",
            "type": "string"
          },
          "cost": {
            "format": "int64",
            "description": "The cost of purchasing a group",
            "type": "integer"
          },
          "isUsingTwoStepWebviewComponent": {
            "description": "Should the frontend use the 2sv webview component (as opposed to the built-in 2sv pop up)",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupContentModerationPermissionsModel": {
        "description": "A model representing group content moderation permissions",
        "type": "object",
        "properties": {
          "manageKeywordBlockList": {
            "description": "Manage keyword block list permission",
            "type": "boolean"
          },
          "viewKeywordBlockList": {
            "description": "View keyword block list permission",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupDescriptionResponse": {
        "type": "object",
        "properties": {
          "newDescription": {
            "description": "The new description returned",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupDetailResponse": {
        "description": "A detailed group response model",
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "description": "The group id",
            "type": "integer"
          },
          "name": {
            "description": "The group name",
            "type": "string"
          },
          "description": {
            "description": "The group description",
            "type": "string"
          },
          "owner": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.UserModel"
          },
          "shout": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.ShoutResponse"
          },
          "memberCount": {
            "format": "int32",
            "description": "The number of members in the group",
            "type": "integer"
          },
          "isBuildersClubOnly": {
            "description": "Whether the group is Builders Club only",
            "type": "boolean"
          },
          "publicEntryAllowed": {
            "description": "Whether the group is public (no approval required)",
            "type": "boolean"
          },
          "isLocked": {
            "description": "Whether the group is locked",
            "type": "boolean"
          },
          "hasVerifiedBadge": {
            "description": "Whether the group has a verified badge.",
            "type": "boolean"
          },
          "hasSocialModules": {
            "description": "Whether the group has social modules enabled (e.g. Forums)\r\n(determines if \"Followers\" vs \"Members\" should be shown).",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupEconomyPermissionsModel": {
        "description": "A model representing data about an Roblox.Platform.Membership.IUser",
        "type": "object",
        "properties": {
          "spendGroupFunds": {
            "description": "Spend group funds permission",
            "type": "boolean"
          },
          "advertiseGroup": {
            "description": "Advertise group permission",
            "type": "boolean"
          },
          "createItems": {
            "description": "Create items permission",
            "type": "boolean"
          },
          "manageItems": {
            "description": "Manage items permission",
            "type": "boolean"
          },
          "addGroupPlaces": {
            "description": "Add group places permission",
            "type": "boolean"
          },
          "manageGroupGames": {
            "description": "Manage group games permission",
            "type": "boolean"
          },
          "viewGroupPayouts": {
            "description": "Manage group games permission",
            "type": "boolean"
          },
          "viewAnalytics": {
            "description": "Permission to view universe analytics from the creator dashboard.",
            "type": "boolean"
          }
        },
        "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.GroupForumsPermissionsModel": {
        "description": "A model representing group posts permissions",
        "type": "object",
        "properties": {
          "viewForums": {
            "description": "View forums permission",
            "type": "boolean"
          },
          "manageCategories": {
            "description": "Manage categories permission",
            "type": "boolean"
          },
          "createPosts": {
            "description": "Create posts permission",
            "type": "boolean"
          },
          "removePosts": {
            "description": "Remove posts permission",
            "type": "boolean"
          },
          "lockPosts": {
            "description": "Lock posts permission",
            "type": "boolean"
          },
          "pinPosts": {
            "description": "Pin posts permission",
            "type": "boolean"
          },
          "createComments": {
            "description": "Create comments permission",
            "type": "boolean"
          },
          "removeComments": {
            "description": "Remove comments permission",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupJoinRequestResponse": {
        "description": "Response model for a group join request",
        "type": "object",
        "properties": {
          "requester": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.UserModel"
          },
          "created": {
            "format": "date-time",
            "description": "The DateTime the request was created",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupManagementPermissionsModel": {
        "description": "A model representing data about an Roblox.Platform.Membership.IUser",
        "type": "object",
        "properties": {
          "manageRelationships": {
            "description": "Manage group relationships permission",
            "type": "boolean"
          },
          "manageClan": {
            "description": "Manage clan permission",
            "type": "boolean"
          },
          "viewAuditLogs": {
            "description": "View audit logs permission",
            "type": "boolean"
          },
          "bypassSlowmode": {
            "description": "Bypass slowmode permission.",
            "type": "boolean"
          },
          "viewCommunityAnalytics": {
            "description": "View community analytics permission.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupMembershipDetailResponse": {
        "description": "A group membership response model",
        "type": "object",
        "properties": {
          "group": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupDetailResponse"
          },
          "role": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRoleResponse"
          },
          "isPrimaryGroup": {
            "description": "Whether the group is the user's Primary Group",
            "type": "boolean"
          },
          "isNotificationsEnabled": {
            "description": "Whether the group notification preferences are enabled for the user",
            "type": "boolean"
          },
          "notificationPreferences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupNotificationPreferenceData"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupMembershipMetadataResponse": {
        "description": "A user's group membership metadata response model",
        "type": "object",
        "properties": {
          "groupId": {
            "format": "int64",
            "description": "The group id",
            "type": "integer"
          },
          "isPrimary": {
            "description": "Whether the group is primary",
            "type": "boolean"
          },
          "isPendingJoin": {
            "description": "Whether there has been a request to join this group",
            "type": "boolean"
          },
          "userRole": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.UserGroupRoleResponse"
          },
          "permissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPermissionsModel"
          },
          "channelPermissions": {
            "description": "The users's permissions for each communication channel in the group",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupChannelPermissionsModel"
            }
          },
          "areGroupGamesVisible": {
            "description": "Whether group games are visible",
            "type": "boolean"
          },
          "areGroupFundsVisible": {
            "description": "Whether group funds are visible",
            "type": "boolean"
          },
          "areEnemiesAllowed": {
            "description": "Whether enemies are allowed",
            "type": "boolean"
          },
          "canConfigure": {
            "description": "If the user can configure the group",
            "type": "boolean"
          },
          "isNotificationsEnabled": {
            "description": "Whether the group's notification preferences set to enabled for the user",
            "type": "boolean"
          },
          "notificationPreferences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupNotificationPreferenceData"
            }
          },
          "isBannedFromGroup": {
            "description": "Whether the user is banned from the group",
            "type": "boolean"
          },
          "canViewMemberList": {
            "description": "Whether the user can view the group member list",
            "type": "boolean"
          },
          "isOwner": {
            "description": "Whether the authenticated user is the owner of the group",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupMembershipPermissionsModel": {
        "description": "A model representing data about an Roblox.Platform.Membership.IUser",
        "type": "object",
        "properties": {
          "changeRank": {
            "description": "Update a member's role",
            "type": "boolean"
          },
          "inviteMembers": {
            "description": "Invite members to the group",
            "type": "boolean"
          },
          "removeMembers": {
            "description": "Remove from group permission",
            "type": "boolean"
          },
          "banMembers": {
            "description": "Ban from group permission",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupMembershipResponse": {
        "description": "A basic group membership response model",
        "type": "object",
        "properties": {
          "group": {
            "$ref": "#/components/schemas/Roblox.Web.Responses.Groups.GroupBasicResponse"
          },
          "role": {
            "$ref": "#/components/schemas/Roblox.Web.Responses.Groups.GroupRoleBasicResponse"
          },
          "isNotificationsEnabled": {
            "description": "Whether the group notification preferences are enabled for the user\r\nTODO: Deprecate this field - it only returns if announcement notifications are enabled and that information is already returned in the NotificationPreferences list below",
            "type": "boolean"
          },
          "notificationPreferences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupNotificationPreferenceData"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupNameChangeConfigurationResponse": {
        "type": "object",
        "properties": {
          "cost": {
            "format": "int64",
            "description": "The cost of renaming a group",
            "type": "integer"
          },
          "cooldownInDays": {
            "format": "int32",
            "description": "The cooldown for group name changes in days",
            "type": "integer"
          },
          "ownershipCooldownInDays": {
            "format": "int32",
            "description": "The ownership cooldown for group name changes in days",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupNotificationPreferenceData": {
        "type": "object",
        "properties": {
          "type": {
            "format": "int32",
            "description": " ['AnnouncementCreatedNotification' = 0, 'ForumPostCreatedNotification' = 1, 'ForumCommentCreatedNotification' = 2, 'ForumCommentReplyCreatedNotification' = 3, 'ForumSubscriberNotification' = 4]",
            "enum": [0, 1, 2, 3, 4],
            "type": "integer"
          },
          "enabled": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupOpenCloudPermissionsModel": {
        "type": "object",
        "properties": {
          "useCloudAuthentication": {
            "description": "Permission to create and use API keys on the group's resources.",
            "type": "boolean"
          },
          "administerCloudAuthentication": {
            "description": "Permission to administer all of the group's API keys.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupPayoutResponse": {
        "description": "A group payout response",
        "type": "object",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.UserModel"
          },
          "percentage": {
            "format": "int32",
            "description": "The group payout percentage for the user",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupPayoutRestrictionResponse": {
        "description": "Response model for Group Payout Restriction",
        "type": "object",
        "properties": {
          "canUseRecurringPayout": {
            "description": "Whether the group can use recurring payout feature.",
            "type": "boolean"
          },
          "canUseOneTimePayout": {
            "description": "Whether the group can use one-time payout feature.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupPermissionsModel": {
        "description": "A model for group permissions.",
        "type": "object",
        "properties": {
          "groupPostsPermissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPostsPermissionsModel"
          },
          "groupForumsPermissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupForumsPermissionsModel"
          },
          "groupContentModerationPermissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupContentModerationPermissionsModel"
          },
          "groupMembershipPermissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupMembershipPermissionsModel"
          },
          "groupManagementPermissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupManagementPermissionsModel"
          },
          "groupEconomyPermissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupEconomyPermissionsModel"
          },
          "groupOpenCloudPermissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupOpenCloudPermissionsModel"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupPermissionsResponse": {
        "description": "A group role's permissions response model",
        "type": "object",
        "properties": {
          "groupId": {
            "format": "int64",
            "description": "The group id",
            "type": "integer"
          },
          "role": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRoleResponse"
          },
          "permissions": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPermissionsModel"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupPoliciesResponse": {
        "type": "object",
        "properties": {
          "groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPolicyResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupPolicyRequest": {
        "type": "object",
        "properties": {
          "groupIds": {
            "type": "array",
            "items": {
              "format": "int64",
              "type": "integer"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupPolicyResponse": {
        "type": "object",
        "properties": {
          "canViewGroup": {
            "type": "boolean"
          },
          "groupId": {
            "format": "int64",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupPostsPermissionsModel": {
        "description": "A model representing group posts permissions",
        "type": "object",
        "properties": {
          "viewStatus": {
            "description": "View status permission",
            "type": "boolean"
          },
          "postToStatus": {
            "description": "Post to status permission",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupRelationshipsResponse": {
        "description": "A group relationships response model",
        "type": "object",
        "properties": {
          "groupId": {
            "format": "int64",
            "description": "The group id",
            "type": "integer"
          },
          "relationshipType": {
            "format": "int32",
            "description": "The group relationship type ['Allies' = 1, 'Enemies' = 2]",
            "enum": [1, 2],
            "type": "integer"
          },
          "totalGroupCount": {
            "format": "int64",
            "description": "The total number of groups for this relationship type",
            "type": "integer"
          },
          "relatedGroups": {
            "description": "The related or requested groups",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupDetailResponse"
            }
          },
          "nextRowIndex": {
            "format": "int64",
            "description": "The index for the next page of related groups",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupRoleDetailResponse": {
        "type": "object",
        "properties": {
          "groupId": {
            "format": "int64",
            "description": "The id of the group the role belongs to",
            "type": "integer"
          },
          "id": {
            "format": "int64",
            "description": "The role id",
            "type": "integer"
          },
          "name": {
            "description": "The role name",
            "type": "string"
          },
          "description": {
            "description": "The role description",
            "type": "string"
          },
          "rank": {
            "format": "int32",
            "description": "The role rank",
            "type": "integer"
          },
          "memberCount": {
            "format": "int64",
            "description": "The number of members in the role.",
            "type": "integer"
          },
          "isBase": {
            "description": "Whether or not the role is the base role for the group",
            "type": "boolean"
          },
          "color": {
            "format": "int32",
            "description": "The role color. ['Invalid' = 0, 'Blue' = 1, 'Green' = 2, 'Purple' = 3, 'Yellow' = 4, 'Orange' = 5, 'Red' = 6, 'Magenta' = 7, 'Teal' = 8, 'Turquoise' = 9, 'Rust' = 10, 'Pistachio' = 11, 'Midnight' = 12, 'Lavender' = 13, 'Pink' = 14, 'Crimson' = 15, 'Plum' = 16]",
            "enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupRoleResponse": {
        "description": "A group role response model",
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "description": "The role id",
            "type": "integer"
          },
          "name": {
            "description": "The role name",
            "type": "string"
          },
          "description": {
            "description": "The role description",
            "type": "string"
          },
          "rank": {
            "format": "int32",
            "description": "The role rank",
            "type": "integer"
          },
          "memberCount": {
            "format": "int64",
            "description": "The number of members in the role.",
            "type": "integer"
          },
          "isBase": {
            "description": "Whether or not the role is the base role for the group",
            "type": "boolean"
          },
          "color": {
            "format": "int32",
            "description": "The role color. ['Invalid' = 0, 'Blue' = 1, 'Green' = 2, 'Purple' = 3, 'Yellow' = 4, 'Orange' = 5, 'Red' = 6, 'Magenta' = 7, 'Teal' = 8, 'Turquoise' = 9, 'Rust' = 10, 'Pistachio' = 11, 'Midnight' = 12, 'Lavender' = 13, 'Pink' = 14, 'Crimson' = 15, 'Plum' = 16]",
            "enum": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupSearchMetadataResponse": {
        "description": "Response Model For Group Search Metadata Endpoint",
        "type": "object",
        "properties": {
          "SuggestedGroupKeywords": {
            "description": "Suggested Group Category translation keys",
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ShowFriendsGroupsSort": {
            "description": "Whether or not the Friends' Groups sort should show for the authenticated user",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupSearchPageResponse": {
        "description": "ApiPageResponse for catalog search",
        "type": "object",
        "properties": {
          "keyword": {
            "description": "Keyword used for search query",
            "type": "string"
          },
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupSearchResponseItem"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupSearchResponseItem": {
        "description": "A group search response",
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "description": "The group id",
            "type": "integer"
          },
          "name": {
            "description": "The group name",
            "type": "string"
          },
          "description": {
            "description": "The group description",
            "type": "string"
          },
          "memberCount": {
            "format": "int32",
            "description": "The number of members in the group",
            "type": "integer"
          },
          "previousName": {
            "description": "The previous name of the group",
            "type": "string"
          },
          "publicEntryAllowed": {
            "description": "When true anyone can join the group. When false manual approval\r\nis required to join the group",
            "type": "boolean"
          },
          "created": {
            "format": "date-time",
            "description": "When the group was created",
            "type": "string"
          },
          "updated": {
            "format": "date-time",
            "description": "When the group was last updated",
            "type": "string"
          },
          "hasVerifiedBadge": {
            "description": "The group's verified badge status",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupSettingsResponse": {
        "description": "Response model for Group Settings",
        "type": "object",
        "properties": {
          "isApprovalRequired": {
            "description": "Whether public entry is allowed.",
            "type": "boolean"
          },
          "isBuildersClubRequired": {
            "description": "Whether Builder's Club is required.",
            "type": "boolean"
          },
          "areEnemiesAllowed": {
            "description": "Whether enemy club declarations are allowed.",
            "type": "boolean"
          },
          "areGroupFundsVisible": {
            "description": "Whether funds are publicly visible.",
            "type": "boolean"
          },
          "areGroupGamesVisible": {
            "description": "Whether games are publicly visible.",
            "type": "boolean"
          },
          "isGroupNameChangeEnabled": {
            "description": "If the group name change feature is enabled for this group.",
            "type": "boolean"
          },
          "verificationLevel": {
            "format": "int32",
            "description": "The verification level for the group. Null if the verification level could not be determined due to an error.",
            "enum": [0, 1, 2, 3],
            "type": "integer"
          },
          "accountTenureRequirement": {
            "format": "int32",
            "description": "The account tenure requirement for the group. Null if the account tenure requirement could not be determined due to an error.",
            "enum": [0, 1, 2, 3, 4, 5],
            "type": "integer"
          },
          "slowmode": {
            "format": "int32",
            "description": "The slowmode level for the group (0-4).\r\n0 = No slowmode, 1-4 = Slowmode levels with increasing restrictions.",
            "enum": [0, 1, 2, 3],
            "type": "integer"
          },
          "isMemberListVisibleToPublic": {
            "description": "Whether the group member list is visible to public.",
            "type": "boolean"
          },
          "isAutoAssignRoleDisabled": {
            "description": "Whether automatic assignment of the lowest non-guest role is disabled for this group.\r\nFor non-legacy groups (created after the multi-role cutoff), this is always true.\r\nFor legacy groups, reflects the persisted GroupFeatureSettings value.\r\nNull when the value could not be determined.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.GroupsDisplayOptionsResponse": {
        "description": "A group roles response model",
        "type": "object",
        "properties": {
          "groupLimit": {
            "format": "int32",
            "description": "The user's builders club membership group limit",
            "type": "integer"
          },
          "currentGroupCount": {
            "format": "int32",
            "description": "The user's current group membership count",
            "type": "integer"
          },
          "groupStatusMaxLength": {
            "format": "int32",
            "description": "The maximum length of a group status",
            "type": "integer"
          },
          "areProfileGroupsHidden": {
            "description": "If set to true, groups showcase will not show on users profiles.\r\n            \r\nIf set to false, group showcase will display on users profiles.",
            "type": "boolean"
          },
          "isGroupDetailsPolicyEnabled": {
            "description": "If set to true, group details will respect GUAC policies for group details\r\n            \r\nIf set to false, group details will not respect GUAC policies",
            "type": "boolean"
          },
          "showPreviousGroupNames": {
            "description": "Whether or not we should show previous names of this group",
            "type": "boolean"
          },
          "areGroupBansEnabled": {
            "description": "Whether or not group bans are enabled",
            "type": "boolean"
          },
          "canEnableGroupNotifications": {
            "description": "Whether or not group notifications can be enabled",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.HasGroupFeaturesBlockedResponse": {
        "description": "Response model for the features/status endpoint.",
        "type": "object",
        "properties": {
          "hasFeaturesBlocked": {
            "description": "Whether the group has any active feature freezes.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.JoinGroupRequest": {
        "description": "A request model for joining group.",
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string"
          },
          "redemptionToken": {
            "type": "string"
          },
          "captchaId": {
            "type": "string"
          },
          "captchaToken": {
            "type": "string"
          },
          "captchaProvider": {
            "type": "string"
          },
          "challengeId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.MembersRequest": {
        "type": "object",
        "properties": {
          "UserIds": {
            "description": "The user ids being either accepted or declined",
            "type": "array",
            "items": {
              "format": "int64",
              "type": "integer"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.Models.Request.CreateRoleSetRequest": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the roleset.",
            "type": "string"
          },
          "description": {
            "description": "The description of the roleset.",
            "type": "string"
          },
          "rank": {
            "format": "int32",
            "description": "The rank/positioning of the roleset.",
            "type": "integer"
          },
          "usingGroupFunds": {
            "description": "Setting to use group funds or not.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.Models.Request.UpdateRoleSetRequest": {
        "type": "object",
        "properties": {
          "name": {
            "description": "The name of the roleset.",
            "type": "string"
          },
          "description": {
            "description": "The description of the roleset.",
            "type": "string"
          },
          "rank": {
            "format": "int32",
            "description": "The rank/positioning of the roleset.",
            "type": "integer"
          },
          "color": {
            "format": "int32",
            "description": "Optional. The color of the roleset (GroupRoleSetColorType value, e.g. 0 = Invalid, 1 = Blue).\r\nWhen omitted, only name and description are updated and the existing color is left unchanged.\r\nWhen set, name, description, and color are updated via UpdateGroupRoleSetProperties.",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.Models.Response.GroupAuditLogResponseItem": {
        "description": "A group audit log response model",
        "type": "object",
        "properties": {
          "actor": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.UserGroupRoleResponse"
          },
          "actionType": {
            "description": "The action type",
            "type": "string"
          },
          "description": {
            "description": "Information on the action performed"
          },
          "created": {
            "format": "date-time",
            "description": "Date the group action was performed",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.Models.Response.GroupExperienceResponse": {
        "description": "A response model representing an experience/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.Groups.Api.Models.Response.GroupNameHistoryResponseItem": {
        "description": "A group name history response model",
        "type": "object",
        "properties": {
          "name": {
            "description": "The group name before the change",
            "type": "string"
          },
          "created": {
            "format": "date-time",
            "description": "Date the name change was applied",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.Models.Response.UserModel": {
        "description": "A model representing data about an Roblox.Platform.Membership.IUser",
        "type": "object",
        "properties": {
          "buildersClubMembershipType": {
            "format": "int32",
            "description": "The user's builders club membership type",
            "enum": [0, 1, 2, 3, 4],
            "type": "integer"
          },
          "hasVerifiedBadge": {
            "description": "The user's verified badge status.",
            "type": "boolean"
          },
          "userId": {
            "format": "int64",
            "type": "integer"
          },
          "username": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.OneTimePayoutResponse": {
        "description": "Response model for one-time payout requests.",
        "type": "object",
        "properties": {
          "status": {
            "format": "int32",
            "description": "One-time payout status. ['NotHeld' = 0, 'Held' = 1]",
            "enum": [0, 1],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.PayoutRecipientRequest": {
        "description": "A request model for paying out Robux.",
        "type": "object",
        "properties": {
          "recipientId": {
            "format": "int64",
            "description": "The recipient id.",
            "type": "integer"
          },
          "recipientType": {
            "format": "int32",
            "description": "The recipient type. ['User' = 0, 'Group' = 1]",
            "enum": [0, 1],
            "type": "integer"
          },
          "amount": {
            "format": "int64",
            "description": "The amount to payout.",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.PayoutRequest": {
        "description": "Multi-payout request information.",
        "type": "object",
        "properties": {
          "PayoutType": {
            "format": "int32",
            "description": "The Roblox.Groups.Api.PayoutType. ['FixedAmount' = 1, 'Percentage' = 2]",
            "enum": [1, 2],
            "type": "integer"
          },
          "Recipients": {
            "description": "The recipients of the payouts.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.PayoutRecipientRequest"
            }
          },
          "IdempotencyKey": {
            "description": "The idempotency key of the payout request.",
            "type": "string"
          },
          "WatermarkContributions": {
            "description": "Optional watermark contributions for DevEx attribution tracking.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.WatermarkContributionRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.PostGroupStatusRequest": {
        "description": "A request model for setting the authenticated user's primary group.",
        "type": "object",
        "properties": {
          "message": {
            "description": "The message to set the group status to.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.PrimaryGroupRequest": {
        "description": "A request model for setting the authenticated user's primary group.",
        "type": "object",
        "properties": {
          "groupId": {
            "format": "int64",
            "description": "The group id.",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.RecurringPayoutsConfigurationResponse": {
        "description": "A response model for recurring payout configuration",
        "type": "object",
        "properties": {
          "maxPayoutPartners": {
            "format": "int32",
            "description": "The maximum number of recurring payout partners",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.RelationshipsRequest": {
        "type": "object",
        "properties": {
          "GroupIds": {
            "description": "The group ids being either accepted or declined",
            "type": "array",
            "items": {
              "format": "int64",
              "type": "integer"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.RoleConfigurationResponse": {
        "description": "A response model for role configuration",
        "type": "object",
        "properties": {
          "nameMaxLength": {
            "format": "int32",
            "description": "The maximum length of a role name",
            "type": "integer"
          },
          "descriptionMaxLength": {
            "format": "int32",
            "description": "The maximum length of a role description",
            "type": "integer"
          },
          "limit": {
            "format": "int32",
            "description": "The maximum number of roles in a group",
            "type": "integer"
          },
          "cost": {
            "format": "int64",
            "description": "The cost of purchasing a role",
            "type": "integer"
          },
          "minRank": {
            "format": "int32",
            "description": "The minimum rank a role can have",
            "type": "integer"
          },
          "maxRank": {
            "format": "int32",
            "description": "The maximum rank a role can have",
            "type": "integer"
          }
        },
        "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.Api.ShoutResponse": {
        "type": "object",
        "properties": {
          "body": {
            "description": "The shout's message",
            "type": "string"
          },
          "poster": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.UserModel"
          },
          "created": {
            "format": "date-time",
            "description": "The shout's created time",
            "type": "string"
          },
          "updated": {
            "format": "date-time",
            "description": "The shout's last updated time",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.SocialLinkRequest": {
        "description": "An update request for a social link",
        "type": "object",
        "properties": {
          "type": {
            "format": "int32",
            "description": "What type of social media this points to",
            "enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
            "type": "integer"
          },
          "url": {
            "description": "The url of the link",
            "type": "string"
          },
          "title": {
            "description": "The title of the link",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.SocialLinkResponse": {
        "description": "A social link response from a create request",
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "description": "The id of the social link",
            "type": "integer"
          },
          "type": {
            "format": "int32",
            "description": "What type of social media (including Roblox Group) this points to ['Facebook' = 0, 'Twitter' = 1, 'YouTube' = 2, 'Twitch' = 3, 'GooglePlus' = 4, 'Discord' = 5, 'RobloxGroup' = 6, 'Amazon' = 7, 'Guilded' = 8]",
            "enum": [0, 1, 2, 3, 4, 5, 6, 7, 8],
            "type": "integer"
          },
          "url": {
            "description": "The url of the link",
            "type": "string"
          },
          "title": {
            "description": "The title of the link",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UpdateBlockedKeywordRequest": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string"
          },
          "isPrivate": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UpdateGroupDescriptionRequest": {
        "description": "A request model for setting a description for the group",
        "type": "object",
        "properties": {
          "description": {
            "description": "The group description being set.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UpdateGroupNameRequest": {
        "description": "A request model for setting a name for the group",
        "type": "object",
        "properties": {
          "name": {
            "description": "The group name being set.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UpdateGroupNameResponse": {
        "type": "object",
        "properties": {
          "newName": {
            "description": "The new description returned",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UpdateGroupNotificationPreferenceRequest": {
        "description": "A request model for updating a group's notification preference.",
        "type": "object",
        "properties": {
          "notificationsEnabled": {
            "description": "Whether the user wants to receive notifications from the group.",
            "type": "boolean"
          },
          "type": {
            "format": "int32",
            "description": " ['AnnouncementCreatedNotification' = 0, 'ForumPostCreatedNotification' = 1, 'ForumCommentCreatedNotification' = 2, 'ForumCommentReplyCreatedNotification' = 3, 'ForumSubscriberNotification' = 4]",
            "enum": [0, 1, 2, 3, 4],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UpdateGroupSettingsRequest": {
        "description": "A request model for updating a group's settings.",
        "type": "object",
        "properties": {
          "isApprovalRequired": {
            "description": "Whether public entry is allowed.",
            "type": "boolean"
          },
          "areEnemiesAllowed": {
            "description": "Whether enemy club declarations are allowed.",
            "type": "boolean"
          },
          "areGroupFundsVisible": {
            "description": "Whether funds are publicly visible.",
            "type": "boolean"
          },
          "areGroupGamesVisible": {
            "description": "Whether games are publicly visible.",
            "type": "boolean"
          },
          "verificationLevel": {
            "format": "int32",
            "description": "The verification level for the group.",
            "enum": [0, 1, 2, 3],
            "type": "integer"
          },
          "accountTenureRequirement": {
            "format": "int32",
            "description": "The account tenure requirement for the group.",
            "enum": [0, 1, 2, 3, 4, 5],
            "type": "integer"
          },
          "slowmode": {
            "format": "int32",
            "description": "The slowmode level for the group (0-4).\r\n0 = No slowmode, 1-4 = Slowmode levels with increasing restrictions.\r\nNull = No change to current slowmode setting.",
            "enum": [0, 1, 2, 3],
            "type": "integer"
          },
          "isMemberListVisibleToPublic": {
            "description": "Whether the group member list is visible to public.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UpdatePermissionsRequest": {
        "description": "A request model for updating a group's roleset's permissions.",
        "type": "object",
        "properties": {
          "permissions": {
            "description": "The permission-value pairs to be updated.",
            "type": "object",
            "properties": {
              "InviteMembers": {
                "type": "boolean"
              },
              "PostToStatus": {
                "type": "boolean"
              },
              "RemoveMembers": {
                "type": "boolean"
              },
              "BanMembers": {
                "type": "boolean"
              },
              "ViewStatus": {
                "type": "boolean"
              },
              "ChangeRank": {
                "type": "boolean"
              },
              "AdvertiseGroup": {
                "type": "boolean"
              },
              "ManageRelationships": {
                "type": "boolean"
              },
              "AddGroupPlaces": {
                "type": "boolean"
              },
              "ViewAuditLogs": {
                "type": "boolean"
              },
              "CreateItems": {
                "type": "boolean"
              },
              "ManageItems": {
                "type": "boolean"
              },
              "SpendGroupFunds": {
                "type": "boolean"
              },
              "ManageClan": {
                "type": "boolean"
              },
              "ManageGroupGames": {
                "type": "boolean"
              },
              "UseCloudAuthentication": {
                "type": "boolean"
              },
              "AdministerCloudAuthentication": {
                "type": "boolean"
              },
              "ViewAnalytics": {
                "type": "boolean"
              },
              "ViewForums": {
                "type": "boolean"
              },
              "ManageCategories": {
                "type": "boolean"
              },
              "CreatePosts": {
                "type": "boolean"
              },
              "RemovePosts": {
                "type": "boolean"
              },
              "LockPosts": {
                "type": "boolean"
              },
              "PinPosts": {
                "type": "boolean"
              },
              "CreateComments": {
                "type": "boolean"
              },
              "RemoveComments": {
                "type": "boolean"
              },
              "ManageKeywordBlockList": {
                "type": "boolean"
              },
              "ViewKeywordBlockList": {
                "type": "boolean"
              },
              "BypassSlowmode": {
                "type": "boolean"
              },
              "ViewCommunityAnalytics": {
                "type": "boolean"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UpdateUserRoleRequest": {
        "description": "A request model for setting a users role in a group.",
        "type": "object",
        "properties": {
          "roleId": {
            "format": "int64",
            "description": "The role in the group the user should be put into.",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UserGroupMembershipResponse": {
        "description": "A users group membership response model",
        "type": "object",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.UserModel"
          },
          "groups": {
            "description": "The list of group memberships",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupMembershipDetailResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.UserGroupRoleResponse": {
        "description": "A user group role response model",
        "type": "object",
        "properties": {
          "user": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.UserModel"
          },
          "role": {
            "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRoleResponse"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Api.WatermarkContributionRequest": {
        "type": "object",
        "properties": {
          "balanceKey": {
            "description": " ['Standard' = 1, 'O18Boosted' = 2]",
            "enum": ["Standard", "O18Boosted"],
            "type": "string"
          },
          "amount": {
            "format": "int64",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Client.BlockedKeywordModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "keyword": {
            "type": "string"
          },
          "createdBy": {
            "format": "int64",
            "type": "integer"
          },
          "isPrivate": {
            "type": "boolean"
          },
          "createdAt": {
            "format": "date-time",
            "type": "string"
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Client.CreateBlockedKeywordsResponse": {
        "type": "object",
        "properties": {
          "createdKeywords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Client.BlockedKeywordModel"
            }
          },
          "hadModeratedKeywords": {
            "type": "boolean"
          },
          "hadDuplicateKeywords": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Client.EmoteModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Client.EmoteSetModel": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "emotes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Client.EmoteModel"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Client.GetGroupEmoteSetsResponse": {
        "type": "object",
        "properties": {
          "emoteSets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Client.EmoteSetModel"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Groups.Client.GroupFeaturedContentResponse": {
        "type": "object",
        "properties": {
          "groupId": {
            "format": "int64",
            "type": "integer"
          },
          "contentType": {
            "type": "string"
          },
          "contentId": {
            "type": "string"
          }
        },
        "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.Agents.AgentType_"
          },
          "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.Agents.AgentType_"
          }
        },
        "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]",
            "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
            ],
            "type": "integer"
          },
          "created": {
            "format": "date-time",
            "description": "The created date time of the user asset.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.ItemConfiguration.Api.AssetCreationsDetailsRequest": {
        "type": "object",
        "properties": {
          "AssetIds": {
            "type": "array",
            "items": {
              "format": "int64",
              "type": "integer"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.ItemConfiguration.Api.AssetCreationsDetailsResponse": {
        "type": "object",
        "properties": {
          "assetId": {
            "format": "int64",
            "description": "The asset Id.",
            "type": "integer"
          },
          "name": {
            "description": "The asset name.",
            "type": "string"
          },
          "status": {
            "description": "The asset status. ['Unknown' = 0, 'ReviewPending' = 1, 'Moderated' = 2, 'ReviewApproved' = 3, 'OnSale' = 4, 'OffSale' = 5, 'DelayedRelease' = 6, 'Free' = 7]",
            "enum": [
              "Unknown",
              "ReviewPending",
              "Moderated",
              "ReviewApproved",
              "OnSale",
              "OffSale",
              "DelayedRelease",
              "Free"
            ],
            "type": "string"
          },
          "description": {
            "description": "The asset description.",
            "type": "string"
          },
          "creatorType": {
            "description": "The creator type. ['Unknown' = 0, 'User' = 1, 'Group' = 2]",
            "enum": ["Unknown", "User", "Group"],
            "type": "string"
          },
          "creatorTargetId": {
            "format": "int64",
            "description": "The creator target Id.",
            "type": "integer"
          },
          "price": {
            "format": "int64",
            "description": "The Price for onSale asset\r\nNote: This is now considered deprecated in favor of PriceConfiguration.",
            "type": "integer"
          },
          "priceConfiguration": {
            "$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.PriceConfigurationModel"
          },
          "isArchived": {
            "description": "Is the asset archived.",
            "type": "boolean"
          },
          "assetType": {
            "description": "Type of the asset.",
            "type": "string"
          },
          "releaseConfiguration": {
            "$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.ReleaseConfigurationResponseModel"
          },
          "created": {
            "format": "date-time",
            "description": "Date asset was created.",
            "type": "string"
          },
          "updated": {
            "format": "date-time",
            "description": "Date asset was created.",
            "type": "string"
          },
          "isDelisted": {
            "description": "If the asset is delisted.",
            "type": "boolean"
          },
          "isCreatedForBundle": {
            "description": "If the asset is part of a bundle.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.ItemConfiguration.Api.AssetCreationsResponse": {
        "description": "Asset Status response model.",
        "type": "object",
        "properties": {
          "assetId": {
            "format": "int64",
            "description": "The asset Id.",
            "type": "integer"
          },
          "name": {
            "description": "The asset name.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.ItemConfiguration.Api.PriceConfigurationModel": {
        "description": "Defines the configuration options for an items price.",
        "type": "object",
        "properties": {
          "priceInRobux": {
            "format": "int64",
            "description": "Gets or sets the standard price of the item in Robux.",
            "type": "integer"
          },
          "premiumDiscountPercentage": {
            "format": "int32",
            "description": "Gets or sets the discount rate on the price of the item that is given to premium users\r\nShould not be used while applying a PremiumPriceInRobux.",
            "type": "integer"
          },
          "premiumPriceInRobux": {
            "format": "int64",
            "description": "Gets or sets the price of the item in Robux that applies only to premium users\r\nShould not be used while applying a PremiumDiscountPercentage.",
            "type": "integer"
          },
          "priceOffset": {
            "format": "int64",
            "description": "Gets or sets the price offset of the item in Robux above the price floor.",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.ItemConfiguration.Api.ReleaseConfigurationResponseModel": {
        "description": "Defines the configuration options associated with releasing an item.",
        "type": "object",
        "properties": {
          "saleAvailabilityLocations": {
            "description": "Get or sets the sale availability locations list.",
            "type": "array",
            "items": {
              "description": " ['Undefined' = 0, 'Catalog' = 1, 'AllUniverses' = 2, 'MyUniverses' = 3]",
              "enum": ["Undefined", "Catalog", "AllUniverses", "MyUniverses"],
              "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.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.AutoScrapeEntry": {
        "type": "object",
        "properties": {
          "context": {
            "type": "string"
          },
          "source": {
            "type": "string"
          },
          "screenshot": {
            "type": "string"
          },
          "meta": {
            "$ref": "#/components/schemas/Roblox.LocalizationTables.Api.AutoScrapeEntryMetadata"
          }
        },
        "additionalProperties": false
      },
      "Roblox.LocalizationTables.Api.AutoScrapeEntryMetadata": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "userId": {
            "format": "int64",
            "type": "integer"
          },
          "osPlatform": {
            "type": "string"
          },
          "sessionId": {
            "format": "uuid",
            "type": "string"
          },
          "matchedEntry": {
            "$ref": "#/components/schemas/Roblox.LocalizationTables.Api.MatchedEntry"
          }
        },
        "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. ['Asc' = 1, 'Desc' = 2]",
            "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. ['None' = 0, 'Untranslated' = 1, 'Inaccurate' = 2, 'SpellingOrGrammar' = 3, 'Inappropriate' = 4]",
              "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"
          }
        },
        "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.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"
            }
          }
        },
        "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. ['User' = 0, 'Group' = 1]",
            "enum": ["User", "Group"],
            "type": "string"
          },
          "ownerId": {
            "format": "int64",
            "type": "integer"
          },
          "assetId": {
            "format": "int64",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.LocalizationTables.Api.IngestAutoScrapedContentForGameRequest": {
        "description": "An ingest content request to IngestAutoScrapedContentForGame.",
        "type": "object",
        "properties": {
          "entries": {
            "description": "The entries of an ingest content request.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.LocalizationTables.Api.AutoScrapeEntry"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/Roblox.LocalizationTables.Api.IngestContentMetadata"
          }
        },
        "additionalProperties": false
      },
      "Roblox.LocalizationTables.Api.IngestContentMetadata": {
        "description": "The metadata of an ingest content request.",
        "type": "object",
        "properties": {
          "placeInformation": {
            "$ref": "#/components/schemas/Roblox.LocalizationTables.Api.IngestContentMetadataPlaceInformation"
          }
        },
        "additionalProperties": false
      },
      "Roblox.LocalizationTables.Api.IngestContentMetadataPlaceInformation": {
        "description": "The place information metadata of an ingest content request.",
        "type": "object",
        "properties": {
          "placeId": {
            "format": "int64",
            "description": "The place id of an ingest content request.",
            "type": "integer"
          },
          "placeVersionNumber": {
            "format": "int32",
            "description": "The place version number of an ingest content request.",
            "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.MatchedEntry": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "matchedParamIndex": {
            "format": "int32",
            "type": "integer"
          }
        },
        "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"
          }
        },
        "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.MarketplaceTopicDiscovery.TopicDiscoveryService.V1Beta1.AvatarItem": {
        "type": "object",
        "properties": {
          "TargetId": {
            "format": "int64",
            "type": "integer"
          },
          "ItemType": {
            "format": "int32",
            "description": " ['Invalid' = 0, 'Asset' = 1, 'Bundle' = 2]",
            "enum": [0, 1, 2],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.MarketplaceTopicDiscovery.TopicDiscoveryService.V1Beta1.Error": {
        "type": "object",
        "properties": {
          "Message": {
            "type": "string"
          },
          "Code": {
            "format": "int32",
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Paging.CursoredPagedResult_Roblox.Friends.Api.Models.Response.FriendResponse_": {
        "type": "object",
        "properties": {
          "PreviousCursor": {
            "type": "string"
          },
          "PageItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.FriendResponse"
            }
          },
          "NextCursor": {
            "type": "string"
          },
          "HasMore": {
            "type": "boolean"
          }
        },
        "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.AssetQuota": {
        "description": "Model for asset quota.",
        "type": "object",
        "properties": {
          "duration": {
            "description": "Duration type of the quota.",
            "type": "string"
          },
          "usage": {
            "format": "int64",
            "description": "Current usage of the quota.",
            "type": "integer"
          },
          "capacity": {
            "format": "int64",
            "description": "Capacity of the quota.",
            "type": "integer"
          },
          "expirationTime": {
            "description": "Expiration time of current usage limit.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Publish.Api.AssetQuotasResponse": {
        "description": "Response model for asset quotas.",
        "type": "object",
        "properties": {
          "quotas": {
            "description": "A list of quotas.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Publish.Api.AssetQuota"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Publish.Api.PublishAudioResponse": {
        "description": "Response model for publish audio.",
        "type": "object",
        "properties": {
          "Id": {
            "format": "int64",
            "description": "Id of the published asset.",
            "type": "integer"
          },
          "Name": {
            "description": "Name of the published asset.",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Publish.Api.UploadAudioRequest": {
        "description": "A request model for uploading an audio file.",
        "type": "object",
        "properties": {
          "name": {
            "description": "Name for the audio file.",
            "type": "string"
          },
          "file": {
            "description": "File to be uploaded. Formatted as a base64 string.",
            "type": "string"
          },
          "groupId": {
            "format": "int64",
            "description": "Id of the group you are publishing the audio asset for. Null if not publishing under a group.",
            "type": "integer"
          },
          "paymentSource": {
            "description": "The source of funds for payment.\r\n  User: Use personal funds of authenticated user.\r\n  Group: Use group funds from Roblox.Publish.Api.UploadAudioRequest.GroupId.\r\n  Null/Empty: Will default to authenticated user funds.",
            "type": "string"
          },
          "estimatedFileSize": {
            "format": "int64",
            "description": "Estimated file size of the audio file in bytes.",
            "type": "integer"
          },
          "estimatedDuration": {
            "format": "double",
            "description": "Estimated duration of the audio file in seconds.",
            "type": "number"
          },
          "assetPrivacy": {
            "format": "int32",
            "description": "The asset privacy of the audio asset.",
            "enum": [1, 2],
            "type": "integer"
          }
        },
        "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.Publish.Api.VerifyAudioRequest": {
        "description": "Request model to publish an audio asset.",
        "type": "object",
        "properties": {
          "name": {
            "description": "Gets or sets the name of the audio asset.",
            "type": "string"
          },
          "file": {
            "description": "File to be uploaded. Formatted as a base64 string.",
            "type": "string"
          },
          "groupId": {
            "format": "int64",
            "description": "Gets or sets the ID of the group if applicable. Optional.",
            "type": "integer"
          },
          "paymentSource": {
            "description": "Gets or sets the payment source. 'User' or 'Group'. Required if Group ID is set.",
            "type": "string"
          },
          "fileSize": {
            "format": "int64",
            "description": "Gets or sets the size of the audio file in bytes.",
            "type": "integer"
          },
          "duration": {
            "format": "double",
            "description": "Gets or sets the duration of the audio in seconds.",
            "type": "number"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Publish.Api.VerifyAudioResponse": {
        "description": "Response model for verify audio endpoint.",
        "type": "object",
        "properties": {
          "name": {
            "description": "Name of the audio file.",
            "type": "string"
          },
          "price": {
            "format": "int64",
            "description": "Price in robux to publish the audio file.",
            "type": "integer"
          },
          "balance": {
            "format": "int64",
            "description": "User's current Robux balance.",
            "type": "integer"
          },
          "canAfford": {
            "description": "Boolean, true if the user can afford to purchase the publishing of the audio file.",
            "type": "boolean"
          }
        },
        "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\r\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"
          }
        },
        "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]",
            "enum": [0, 1, 2, 3, 4, 5, 6, 7],
            "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]",
            "enum": [
              "Unknown",
              "Eligible",
              "IneligibleTradeSystemDisabled",
              "IneligibleCannotTradeWithRoblox",
              "IneligibleUserNotFound",
              "IneligibleMissingPremiumMembership",
              "IneligibleLegalOrRegulatoryRestrictions"
            ],
            "type": "string"
          }
        },
        "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]",
            "enum": [
              "Unknown",
              "Eligible",
              "CallingUserIneligible",
              "TargetUserIneligible",
              "CannotTradeWithSelf",
              "CallingUserPrivacySettingsRestricted"
            ],
            "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 two step verification.",
        "type": "object",
        "properties": {
          "credentialNicknames": {
            "description": "A array of nicknames of credentials to be deleted.",
            "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"
          }
        },
        "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.\r\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.",
            "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": "<p>A response model specific to multi-get user.</p>\r\n<p>\r\n            Note: Currently the MultiGet responses don't have all the data that the single gets have, to reduce payload size!\r\n            We might want to revisit this decision in the future.\r\n            </p>",
        "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.AssetContentRepresentationSpecifier": {
        "type": "object",
        "properties": {
          "format": {
            "type": "string"
          },
          "majorVersion": {
            "type": "string"
          },
          "fidelity": {
            "type": "string"
          },
          "skipGenerationIfNotExist": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.Assets.AssetFormatLocation": {
        "type": "object",
        "properties": {
          "assetFormat": {
            "type": "string"
          },
          "location": {
            "type": "string"
          },
          "assetMetadatas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.AssetDelivery.Api.AssetMetadata"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.Assets.AssetResponseItemV1": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Web.Assets.IAssetItemError"
            }
          },
          "requestId": {
            "type": "string"
          },
          "isArchived": {
            "description": "Whether the asset has been archived.",
            "type": "boolean"
          },
          "assetTypeId": {
            "format": "int32",
            "description": "Asset Type.",
            "type": "integer"
          },
          "contentRepresentationSpecifier": {
            "$ref": "#/components/schemas/Roblox.Web.Assets.AssetContentRepresentationSpecifier"
          },
          "assetMetadatas": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.AssetDelivery.Api.AssetMetadata"
            }
          },
          "isRecordable": {
            "description": "Whether the asset is recordable in screen recordings.",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.Assets.AssetResponseItemV2": {
        "type": "object",
        "properties": {
          "locations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Web.Assets.AssetFormatLocation"
            }
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Web.Assets.IAssetItemError"
            }
          },
          "requestId": {
            "type": "string"
          },
          "isArchived": {
            "description": "Whether the asset has been archived.",
            "type": "boolean"
          },
          "assetTypeId": {
            "format": "int32",
            "description": "Asset Type.",
            "type": "integer"
          },
          "contentRepresentationSpecifier": {
            "$ref": "#/components/schemas/Roblox.Web.Assets.AssetContentRepresentationSpecifier"
          },
          "isRecordable": {
            "description": "Whether the asset is recordable in screen recordings.",
            "type": "boolean"
          }
        },
        "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": {
            "format": "int32",
            "type": "integer"
          },
          "contentRepresentationPriorityList": {
            "type": "string"
          },
          "doNotFallbackToBaselineRepresentation": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.Assets.IAssetItemError": {
        "type": "object",
        "properties": {
          "Code": {
            "format": "int32",
            "type": "integer"
          },
          "Message": {
            "type": "string"
          },
          "CustomErrorCode": {
            "format": "int32",
            "description": "Custom error code for Roblox.Web.Assets.IAssetItemError ['UnknownError' = 0, 'NoPermissionToAsset' = 1, 'AssetPermissionCheckFailed' = 2, 'NotAuthorizedForAgeRecommendation' = 3, 'AgeRecommendationCheckFailed' = 4, 'InvalidPlaceRequestFromGameServer' = 5, 'BlockedAssetTypeRequestedFromInsertService' = 6, 'BlockedAssetTypeRequestedFromGameServer' = 7, 'AssetTypeMismatch' = 8, 'MissingAssetTypeInRequestHeader' = 9, 'AssetNotTrustedForPlace' = 10, 'NoAuthentication' = 11, 'AssetContentRepresentationBlockedDueToModeration' = 12, 'AssetNotFound' = 13, 'AssetVersionNotFound' = 14, 'AssetContentRepresentationNotFound' = 15, 'BlockedByAgeGeoRestriction' = 16, 'BlockedAssetTypeRequestedFromNonGameServer' = 17, 'AssetPendingReview' = 18, 'NotApprovedForRequestor' = 19, 'NotApprovedByContentCompliance' = 20, 'AssetContentRepresentationGenerating' = 21, 'AssetArchived' = 22, 'AssetUsageNotAllowed' = 23]",
            "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
            ],
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.Captcha.Models.Request.CaptchaTokenRequest": {
        "type": "object",
        "properties": {
          "captchaId": {
            "type": "string"
          },
          "captchaToken": {
            "type": "string"
          },
          "captchaProvider": {
            "type": "string"
          },
          "challengeId": {
            "type": "string"
          }
        },
        "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.Groups.GroupBasicResponse": {
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "memberCount": {
            "format": "int64",
            "type": "integer"
          },
          "hasVerifiedBadge": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.Responses.Groups.GroupResponseV2": {
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "owner": {
            "$ref": "#/components/schemas/Roblox.Web.Responses.RelatedEntityTypeResponse_Roblox.Web.Responses.Groups.GroupOwnerType_"
          },
          "memberCount": {
            "format": "int64",
            "type": "integer"
          },
          "created": {
            "format": "date-time",
            "type": "string"
          },
          "hasVerifiedBadge": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.Responses.Groups.GroupRoleBasicResponse": {
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "type": "integer"
          },
          "name": {
            "type": "string"
          },
          "rank": {
            "format": "int32",
            "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.Agents.AgentType_": {
        "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.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]",
            "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
            ],
            "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.Web.Responses.Groups.GroupOwnerType_": {
        "type": "object",
        "properties": {
          "id": {
            "format": "int64",
            "type": "integer"
          },
          "type": {
            "format": "int32",
            "description": " ['User' = 0]",
            "enum": [0],
            "type": "integer"
          },
          "name": {
            "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.Response.AssetVotingModel_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Api.Develop.Models.Response.AssetVotingModel"
            }
          }
        },
        "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.Badges.Api.BadgeAwardResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Badges.Api.BadgeAwardResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Catalog.Api.BundleDetailsModel_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Catalog.Api.BundleDetailsModel"
            }
          }
        },
        "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.Friends.Api.Models.Response.UserPresenceResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.UserPresenceResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Friends.Api.Models.Response.UserResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.UserResponse"
            }
          }
        },
        "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.GameMediaItem_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Games.Api.Models.Response.GameMediaItem"
            }
          }
        },
        "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.Groups.Api.GroupDetailResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupDetailResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupMembershipDetailResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupMembershipDetailResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupMembershipResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupMembershipResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupPayoutResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPayoutResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupPermissionsResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupPermissionsResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.GroupRoleDetailResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupRoleDetailResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Groups.Api.UserGroupMembershipResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.UserGroupMembershipResponse"
            }
          }
        },
        "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.Groups.GroupBasicResponse_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Web.Responses.Groups.GroupBasicResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiArrayResponse_Roblox.Web.Responses.Groups.GroupResponseV2_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Web.Responses.Groups.GroupResponseV2"
            }
          }
        },
        "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.ApiArrayResponse_System.String_": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Api.Develop.AssetVersion_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Api.Develop.AssetVersion"
            }
          }
        },
        "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.Badges.Api.GetBadgesByUserResponse_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Badges.Api.GetBadgesByUserResponse"
            }
          }
        },
        "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.UserResponse_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Friends.Api.Models.Response.UserResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.GroupBanMemberResponse_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupBanMemberResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.GroupJoinRequestResponse_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.GroupJoinRequestResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.Models.Response.GroupExperienceResponse_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.GroupExperienceResponse"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.Models.Response.GroupNameHistoryResponseItem_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.GroupNameHistoryResponseItem"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.Models.Response.UserModel_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.Models.Response.UserModel"
            }
          }
        },
        "additionalProperties": false
      },
      "Roblox.Web.WebAPI.Models.ApiPageResponse_Roblox.Groups.Api.UserGroupRoleResponse_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.Groups.Api.UserGroupRoleResponse"
            }
          }
        },
        "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.ItemConfiguration.Api.AssetCreationsResponse_": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string"
          },
          "nextPageCursor": {
            "type": "string"
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Roblox.ItemConfiguration.Api.AssetCreationsResponse"
            }
          }
        },
        "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
      },
      "RobuxRateBreakdown": {
        "type": "object",
        "properties": {
          "o18": {
            "type": "number",
            "format": "double",
            "nullable": true
          },
          "standard": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RpnOperandDto": {
        "type": "object",
        "properties": {
          "attributeReference": {
            "type": "string",
            "nullable": true
          },
          "literalValue": {
            "allOf": [
              {
                "$ref": "#/components/schemas/LiteralValueDto"
              }
            ],
            "description": "Literal constant for an RPN operand (proto `LiteralValue` oneof as independent fields for JSON).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "RPN operand: attribute reference or literal value (same concepts as the proto `RpnOperand` oneof)."
      },
      "RpnTokenDto": {
        "type": "object",
        "properties": {
          "operator": {
            "type": "string",
            "nullable": true
          },
          "operand": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RpnOperandDto"
              }
            ],
            "description": "RPN operand: attribute reference or literal value (same concepts as the proto `RpnOperand` oneof).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One RPN token: either a logical/comparison CreatorConfigsPublicApi.Models.ConditionalRuleOperator (proto JSON `OPERATOR_*`) or an operand object."
      },
      "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
      },
      "SalesReportDownloadRequest": {
        "type": "object",
        "properties": {
          "targetId": {
            "type": "integer",
            "format": "int64"
          },
          "targetType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/CurrencyHolderType"
              }
            ]
          },
          "startDate": {
            "type": "string",
            "nullable": true
          },
          "endDate": {
            "type": "string",
            "nullable": true
          },
          "transactionType": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionType"
              }
            ]
          }
        },
        "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"
        ]
      },
      "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\r\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\r\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": {
            "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": {
            "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": {
        "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\r\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."
          },
          "reasonForShutdown": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ShutdownReason"
              }
            ],
            "description": "Why the server has been shutdown.\r\nUnspecified if ServerManagementService.V2.Models.GameServer.ShutDown is false."
          },
          "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 number of game servers that match the filter (across all pages).\r\nOmitted if the backend does not provide a total count.",
            "format": "int32",
            "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."
      },
      "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."
      },
      "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."
      },
      "ShutdownReason": {
        "enum": [0, 1, 2, 3, 4, 5],
        "type": "integer",
        "description": "Defines the reason a server was shut down",
        "format": "int32"
      },
      "SkinnyUserResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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: <ul><li>`facebookSocialLink`</li><li>`twitterSocialLink`</li><li>`youtubeSocialLink`</li><li>`twitchSocialLink`</li><li>`discordSocialLink`</li><li>`githubSocialLink`</li><li>`robloxSocialLink`</li><li>`guildedSocialLink`</li><li>`devForumSocialLink`</li></ul>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
      },
      "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
      },
      "StringStringIEnumerableKeyValuePair": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "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."
      },
      "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.\r\ne.g. \"3d__characters\"",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Representation of an asset.",
        "nullable": true
      },
      "ToolboxService.CreatorStoreProduct": {
        "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
      },
      "TransactionDetailsResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "TransactionRecordResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "idHash": {
            "type": "string",
            "nullable": true
          },
          "transactionType": {
            "type": "string",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "isPending": {
            "type": "boolean"
          },
          "agent": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AgentResponse"
              }
            ],
            "nullable": true
          },
          "details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionDetailsResponse"
              }
            ],
            "nullable": true
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GenericCurrencyResponse"
              }
            ],
            "nullable": true
          },
          "purchaseToken": {
            "type": "string",
            "nullable": true
          },
          "transactionSubtype": {
            "type": "string",
            "nullable": true
          },
          "o18EligibilityTag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/O18EligibilityTag"
              }
            ],
            "nullable": true
          },
          "robuxRateBreakdown": {
            "allOf": [
              {
                "$ref": "#/components/schemas/RobuxRateBreakdown"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TransactionRecordResponseApiPageResponse": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string",
            "nullable": true
          },
          "nextPageCursor": {
            "type": "string",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionRecordResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TransactionRecordsApi.CurrencyType": {
        "enum": ["Robux", "Tickets"],
        "type": "string"
      },
      "TransactionRecordsApi.HttpStatusCode": {
        "enum": [
          "Continue",
          "SwitchingProtocols",
          "Processing",
          "EarlyHints",
          "OK",
          "Created",
          "Accepted",
          "NonAuthoritativeInformation",
          "NoContent",
          "ResetContent",
          "PartialContent",
          "MultiStatus",
          "AlreadyReported",
          "IMUsed",
          "MultipleChoices",
          "MovedPermanently",
          "Found",
          "SeeOther",
          "NotModified",
          "UseProxy",
          "Unused",
          "RedirectKeepVerb",
          "PermanentRedirect",
          "BadRequest",
          "Unauthorized",
          "PaymentRequired",
          "Forbidden",
          "NotFound",
          "MethodNotAllowed",
          "NotAcceptable",
          "ProxyAuthenticationRequired",
          "RequestTimeout",
          "Conflict",
          "Gone",
          "LengthRequired",
          "PreconditionFailed",
          "RequestEntityTooLarge",
          "RequestUriTooLong",
          "UnsupportedMediaType",
          "RequestedRangeNotSatisfiable",
          "ExpectationFailed",
          "MisdirectedRequest",
          "UnprocessableEntity",
          "Locked",
          "FailedDependency",
          "UpgradeRequired",
          "PreconditionRequired",
          "TooManyRequests",
          "RequestHeaderFieldsTooLarge",
          "UnavailableForLegalReasons",
          "InternalServerError",
          "NotImplemented",
          "BadGateway",
          "ServiceUnavailable",
          "GatewayTimeout",
          "HttpVersionNotSupported",
          "VariantAlsoNegotiates",
          "InsufficientStorage",
          "LoopDetected",
          "NotExtended",
          "NetworkAuthenticationRequired"
        ],
        "type": "string"
      },
      "TransactionRecordsApi.SortOrder": {
        "enum": ["Asc", "Desc"],
        "type": "string"
      },
      "TransactionResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "idHash": {
            "type": "string",
            "nullable": true
          },
          "created": {
            "type": "string",
            "format": "date-time"
          },
          "isPending": {
            "type": "boolean"
          },
          "agent": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AgentResponse"
              }
            ],
            "nullable": true
          },
          "details": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TransactionDetailsResponse"
              }
            ],
            "nullable": true
          },
          "currency": {
            "allOf": [
              {
                "$ref": "#/components/schemas/GenericCurrencyResponse"
              }
            ],
            "nullable": true
          },
          "purchaseToken": {
            "type": "string",
            "nullable": true
          },
          "o18EligibilityTag": {
            "allOf": [
              {
                "$ref": "#/components/schemas/O18EligibilityTag"
              }
            ],
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TransactionResponseApiPageResponse": {
        "type": "object",
        "properties": {
          "previousPageCursor": {
            "type": "string",
            "nullable": true
          },
          "nextPageCursor": {
            "type": "string",
            "nullable": true
          },
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TransactionResponse"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TransactionTotalsResponse": {
        "type": "object",
        "properties": {
          "salesTotal": {
            "type": "integer",
            "format": "int64"
          },
          "purchasesTotal": {
            "type": "integer",
            "format": "int64"
          },
          "affiliateSalesTotal": {
            "type": "integer",
            "format": "int64"
          },
          "groupPayoutsTotal": {
            "type": "integer",
            "format": "int64"
          },
          "currencyPurchasesTotal": {
            "type": "integer",
            "format": "int64"
          },
          "premiumStipendsTotal": {
            "type": "integer",
            "format": "int64"
          },
          "tradeSystemEarningsTotal": {
            "type": "integer",
            "format": "int64"
          },
          "tradeSystemCostsTotal": {
            "type": "integer",
            "format": "int64"
          },
          "premiumPayoutsTotal": {
            "type": "integer",
            "format": "int64"
          },
          "groupPremiumPayoutsTotal": {
            "type": "integer",
            "format": "int64"
          },
          "adSpendTotal": {
            "type": "integer",
            "format": "int64"
          },
          "developerExchangeTotal": {
            "type": "integer",
            "format": "int64"
          },
          "pendingRobuxTotal": {
            "type": "integer",
            "format": "int64"
          },
          "incomingRobuxTotal": {
            "type": "integer",
            "format": "int64"
          },
          "outgoingRobuxTotal": {
            "type": "integer",
            "format": "int64"
          },
          "individualToGroupTotal": {
            "type": "integer",
            "format": "int64"
          },
          "csAdjustmentTotal": {
            "type": "integer",
            "format": "int64"
          },
          "adsRevsharePayoutsTotal": {
            "type": "integer",
            "format": "int64"
          },
          "groupAdsRevsharePayoutsTotal": {
            "type": "integer",
            "format": "int64"
          },
          "subscriptionsRevshareTotal": {
            "type": "integer",
            "format": "int64"
          },
          "groupSubscriptionsRevshareTotal": {
            "type": "integer",
            "format": "int64"
          },
          "subscriptionsRevshareOutgoingTotal": {
            "type": "integer",
            "format": "int64"
          },
          "groupSubscriptionsRevshareOutgoingTotal": {
            "type": "integer",
            "format": "int64"
          },
          "publishingAdvanceRebatesTotal": {
            "type": "integer",
            "format": "int64"
          },
          "affiliatePayoutTotal": {
            "type": "integer",
            "format": "int64"
          },
          "licensingPaymentTotal": {
            "type": "integer",
            "format": "int64"
          },
          "licensingPaymentClawbackOutgoingTotal": {
            "type": "integer",
            "format": "int64"
          },
          "incomingRobuxTransferTotal": {
            "type": "integer",
            "format": "int64"
          },
          "outgoingRobuxTransferTotal": {
            "type": "integer",
            "format": "int64"
          },
          "robloxSelectIncomingTotal": {
            "type": "integer",
            "format": "int64"
          },
          "robloxSelectOutgoingTotal": {
            "type": "integer",
            "format": "int64"
          },
          "privateServerEngagementPayoutsTotal": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "TransactionType": {
        "enum": [
          "Undefined",
          "Sale",
          "Purchase",
          "AffiliateSale",
          "DevEx",
          "GroupPayout",
          "AdImpressionPayout",
          "CurrencyPurchase",
          "TradeRobux",
          "PremiumStipend",
          "PendingRobux",
          "EngagementPayout",
          "GroupEngagementPayout",
          "AdSpend",
          "Summary",
          "IndividualToGroup",
          "CSAdjustment",
          "AdsRevsharePayout",
          "GroupAdsRevsharePayout",
          "SubscriptionsRevsharePayout",
          "GroupSubscriptionsRevsharePayout",
          "SubscriptionsRevshareClawback",
          "GroupSubscriptionsRevshareClawback",
          "PublishingAdvanceRebates",
          "AffiliatePayout",
          "LicensingPayment",
          "LicensingPaymentClawback",
          "CurrencyTransfer",
          "RobloxSelectTransfer",
          "PrivateServerEngagementPayout",
          "CurrencySubscriptionStipend"
        ],
        "type": "string"
      },
      "TransactionUsedTypesResponse": {
        "type": "object",
        "properties": {
          "HasPurchase": {
            "type": "boolean"
          },
          "HasSale": {
            "type": "boolean"
          },
          "HasAffiliatePayout": {
            "type": "boolean"
          },
          "HasAffiliateSale": {
            "type": "boolean"
          },
          "HasGroupPayout": {
            "type": "boolean"
          },
          "HasCurrencyPurchase": {
            "type": "boolean"
          },
          "HasTradeRobux": {
            "type": "boolean"
          },
          "HasPremiumStipend": {
            "type": "boolean"
          },
          "HasEngagementPayout": {
            "type": "boolean"
          },
          "HasGroupEngagementPayout": {
            "type": "boolean"
          },
          "HasAdSpend": {
            "type": "boolean"
          },
          "HasDevEx": {
            "type": "boolean"
          },
          "HasPendingRobux": {
            "type": "boolean"
          },
          "HasIndividualToGroup": {
            "type": "boolean"
          },
          "HasCSAdjustment": {
            "type": "boolean"
          },
          "HasAdsRevsharePayout": {
            "type": "boolean"
          },
          "HasGroupAdsRevsharePayout": {
            "type": "boolean"
          },
          "HasSubscriptionsRevsharePayout": {
            "type": "boolean"
          },
          "HasGroupSubscriptionsRevsharePayout": {
            "type": "boolean"
          },
          "HasPublishingAdvanceRebates": {
            "type": "boolean"
          },
          "HasLicensingPayment": {
            "type": "boolean"
          },
          "HasTransfer": {
            "type": "boolean"
          },
          "HasRobloxSelectTransfer": {
            "type": "boolean"
          },
          "HasPrivateServerEngagementPayout": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "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"]
        }
      },
      "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."
      },
      "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
      },
      "User": {
        "type": "object",
        "properties": {
          "path": {
            "example": "users/123",
            "type": "string",
            "description": "The resource path of the user.\n\nFormat: `users/{user_id}`"
          },
          "createTime": {
            "readOnly": true,
            "example": "2023-07-05T12:34:56Z",
            "type": "string",
            "description": "The timestamp at which the user was created.",
            "format": "date-time"
          },
          "id": {
            "readOnly": true,
            "example": "123456",
            "type": "string",
            "description": "Unique ID that identifies a user in Roblox."
          },
          "name": {
            "example": "exampleUser",
            "type": "string",
            "description": "Unique username for a user in Roblox."
          },
          "displayName": {
            "example": "userDefinedName",
            "type": "string",
            "description": "Display name for the user."
          },
          "about": {
            "example": "Example User's bio",
            "type": "string",
            "description": "User-defined information about themselves."
          },
          "locale": {
            "example": "en-US",
            "type": "string",
            "description": "Current locale selected by the user. Returns IETF language code."
          },
          "premium": {
            "readOnly": true,
            "example": true,
            "type": "boolean",
            "description": "Whether the user is a premium user."
          },
          "idVerified": {
            "readOnly": true,
            "example": true,
            "type": "boolean",
            "description": "Specifies if the user is identity-verified. Verification includes, but\nisn't limited to, non-VoIP phone numbers or government IDs.\n\nTo access this data, you need an API key / OAuth token with the following\nscope: user.advanced:read"
          },
          "socialNetworkProfiles": {
            "$ref": "#/components/schemas/User_SocialNetworkProfiles",
            "description": "User's social network profiles and visibility."
          }
        },
        "description": "Represents any registered user of Roblox.",
        "x-aep-resource": {
          "patterns": ["users/{user_id}"],
          "plural": "users",
          "singular": "user"
        },
        "x-resource": true
      },
      "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."
      },
      "User_SocialNetworkProfiles": {
        "type": "object",
        "properties": {
          "facebook": {
            "type": "string",
            "description": "Facebook profile URI."
          },
          "twitter": {
            "type": "string",
            "description": "Twitter profile URI."
          },
          "youtube": {
            "type": "string",
            "description": "YouTube profile URI."
          },
          "twitch": {
            "type": "string",
            "description": "Twitch profile URI."
          },
          "guilded": {
            "type": "string",
            "description": "Guilded profile URI."
          },
          "visibility": {
            "example": "SOCIAL_NETWORK_VISIBILITY_UNSPECIFIED",
            "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.\n\nTo access this data, you need an API key / OAuth token with the following\nscope: user.social:read\n\nPossible values:\n\n  | Value | Description |\n  | --- | --- |\n  | SOCIAL_NETWORK_VISIBILITY_UNSPECIFIED | Default SocialNetworkVisibility. |\n  | NO_ONE | No one |\n  | FRIENDS | Friends only |\n  | FRIENDS_AND_FOLLOWING | Friends and other users the user follows |\n  | FRIENDS_FOLLOWING_AND_FOLLOWERS | Friends, other users the user follows, and other users who follow the user |\n  | EVERYONE | Everyone |",
            "format": "enum"
          }
        },
        "description": "Social network profiles of a user."
      },
      "VerifiedBadgeUserResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "displayName": {
            "type": "string",
            "nullable": true
          },
          "hasVerifiedBadge": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "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
      },
      "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",
          "accountsettings_get_v1_account_settings_account_country",
          "accountsettings_post_v1_account_settings_account_country",
          "accountsettings_get_v1_account_settings_metadata",
          "accountsettings_get_v1_emails",
          "accountsettings_get_v1_email",
          "accountsettings_patch_v1_email",
          "accountsettings_post_v1_email",
          "accountsettings_post_v1_email_verify",
          "accountsettings_get_v1_themes__consumerType___consumerId_",
          "accountsettings_patch_v1_themes__consumerType___consumerId_",
          "accountsettings_get_v1_themes_types",
          "accountsettings_get_v1_trade_privacy",
          "accountsettings_post_v1_trade_privacy",
          "accountsettings_get_v1_trade_value",
          "accountsettings_post_v1_trade_value",
          "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": "Analytics",
      "description": "Query analytics data 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 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",
          "badges_post_v1_badges__badgeId__icon",
          "Toolbox_SearchCreatorStoreAssetsDeprecated",
          "Toolbox_GetAssetDetails",
          "patch_asset_permissions_api_v1_assets_permissions",
          "assetdelivery_get_v1_asset",
          "get_asset_delivery_api_v1_assetId__assetId_",
          "assetdelivery_get_v1_assetId__assetId_",
          "get_asset_delivery_api_v1_assetId__assetId__version__versionNumber_",
          "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_asset_to_category",
          "catalog_get_v1_asset_to_subcategory",
          "catalog_get_v1_assets__assetId__bundles",
          "catalog_get_v1_bundles__bundleId__details",
          "catalog_get_v1_bundles__bundleId__recommendations",
          "catalog_get_v1_bundles_details",
          "catalog_post_v1_catalog_items_details",
          "catalog_get_v1_categories",
          "catalog_get_v1_favorites_assets__assetId__count",
          "catalog_get_v1_favorites_bundles__bundleId__count",
          "catalog_delete_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_get_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_post_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_delete_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_get_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_post_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_get_v1_favorites_users__userId__favorites__assetTypeId__assets",
          "catalog_get_v1_favorites_users__userId__favorites__subtypeId__bundles",
          "catalog_get_v1_subcategories",
          "catalog_post_v1_topic_get_topics",
          "catalog_get_v1_users__userId__bundles",
          "catalog_get_v1_users__userId__bundles__bundleType_",
          "catalog_get_v2_search_items_details",
          "develop_get_v1_assets_voting",
          "develop_get_v1_plugins",
          "develop_patch_v1_plugins__pluginId_",
          "develop_get_v1_user_groups_canmanagegamesoritems",
          "develop_get_v2_assets__id__versions",
          "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_post_v1_creations_get_asset_details",
          "itemconfiguration_get_v1_creations_get_assets",
          "publish_get_v1_asset_quotas",
          "publish_post_v1_audio",
          "publish_post_v1_audio_verify",
          "publish_post_v1_games__gameId__thumbnail_image",
          "publish_post_v1_plugins__pluginId__icon",
          "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 body colors, scales, and [thumbnail generation](#Cloud_GenerateUserThumbnail).\n",
      "x-roblox-tag-info": {
        "path": "avatars",
        "content": "HTTP APIs for working with avatars on Roblox Cloud.",
        "ordering": [
          "Cloud_GenerateUserThumbnail",
          "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_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",
          "catalog_get_v1_asset_to_category",
          "catalog_get_v1_asset_to_subcategory",
          "catalog_get_v1_assets__assetId__bundles",
          "catalog_get_v1_bundles__bundleId__details",
          "catalog_get_v1_bundles__bundleId__recommendations",
          "catalog_get_v1_bundles_details",
          "catalog_post_v1_catalog_items_details",
          "catalog_get_v1_categories",
          "catalog_get_v1_favorites_assets__assetId__count",
          "catalog_get_v1_favorites_bundles__bundleId__count",
          "catalog_delete_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_get_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_post_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_delete_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_get_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_post_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_get_v1_favorites_users__userId__favorites__assetTypeId__assets",
          "catalog_get_v1_favorites_users__userId__favorites__subtypeId__bundles",
          "catalog_get_v1_subcategories",
          "catalog_post_v1_topic_get_topics",
          "catalog_get_v1_users__userId__bundles",
          "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_",
          "badges_get_v1_users__userId__badges",
          "badges_get_v1_users__userId__badges__badgeId__awarded_date",
          "badges_get_v1_users__userId__badges_awarded_dates",
          "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",
          "groups_get_v1_groups__groupId__bans",
          "groups_get_v1_groups__groupId__bans__userId_",
          "groups_post_v1_groups__groupId__bans__userId_",
          "groups_delete_v1_groups__groupId__bans__userId_",
          "groups_get_v1_groups__groupId__blocked_keywords",
          "groups_post_v1_groups__groupId__blocked_keywords",
          "groups_patch_v1_groups__groupId__blocked_keywords__keywordId_",
          "groups_delete_v1_groups__groupId__blocked_keywords__keywordId_"
        ]
      }
    },
    {
      "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 [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_metadata",
          "friends_get_v1_my_friends_count",
          "friends_post_v1_my_friends_refresh_qr_session",
          "friends_get_v1_my_friends_requests",
          "friends_get_v1_my_new_friend_requests_count",
          "friends_post_v1_user__userId__multiget_are_friends",
          "friends_get_v1_user_friend_requests_count",
          "friends_get_v1_users__userId__friends",
          "friends_get_v1_users__userId__friends_count",
          "friends_get_v1_users__userId__friends_find",
          "friends_get_v1_users__userId__friends_inactive",
          "friends_get_v1_users__userId__friends_online",
          "friends_get_v1_users__userId__friends_search",
          "friends_get_v1_users__userId__friends_statuses",
          "friends_get_v1_my_friends__userId__check_qr_session",
          "groups_get_v1_users__userId__friends_groups_roles",
          "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"
        ]
      }
    },
    {
      "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": "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",
          "get_legacy_groups_v1_groups__groupId__audit_log",
          "groups_get_v1_groups__groupId__audit_log",
          "patch_legacy_groups_v1_groups__groupId__description",
          "groups_patch_v1_groups__groupId__description",
          "patch_legacy_groups_v1_groups__groupId__notification_preference",
          "groups_patch_v1_groups__groupId__notification_preference",
          "get_legacy_groups_v1_groups__groupId__settings",
          "groups_get_v1_groups__groupId__settings",
          "patch_legacy_groups_v1_groups__groupId__settings",
          "groups_patch_v1_groups__groupId__settings",
          "patch_legacy_groups_v1_groups__groupId__status",
          "post_legacy_groups_v1_groups_policies",
          "groups_post_v1_groups_policies",
          "get_legacy_groups_v1_user_groups_pending",
          "groups_get_v1_user_groups_pending",
          "groups_delete_v1_featured_content_event",
          "groups_get_v1_featured_content_event",
          "groups_post_v1_featured_content_event",
          "groups_get_v1_groups__groupId_",
          "groups_get_v1_groups__groupId__community_feature_freezes",
          "groups_get_v1_groups__groupId__configuration",
          "groups_post_v1_groups__groupId__change_owner",
          "groups_post_v1_groups__groupId__claim_ownership",
          "groups_delete_v1_groups__groupId__join_requests",
          "groups_get_v1_groups__groupId__join_requests",
          "groups_post_v1_groups__groupId__join_requests",
          "groups_delete_v1_groups__groupId__join_requests_users__userId_",
          "groups_get_v1_groups__groupId__join_requests_users__userId_",
          "groups_post_v1_groups__groupId__join_requests_users__userId_",
          "groups_get_v1_groups__groupId__membership",
          "groups_patch_v1_groups__groupId__name",
          "groups_get_v1_groups__groupId__name_history",
          "groups_get_v1_groups__groupId__payout_restriction",
          "groups_get_v1_groups__groupId__payouts",
          "groups_post_v1_groups__groupId__payouts",
          "groups_post_v1_groups__groupId__payouts_recurring",
          "groups_get_v1_groups__groupId__relationships__groupRelationshipType_",
          "groups_delete_v1_groups__groupId__relationships__groupRelationshipType___relatedGroupId_",
          "groups_post_v1_groups__groupId__relationships__groupRelationshipType___relatedGroupId_",
          "groups_delete_v1_groups__groupId__relationships__groupRelationshipType__requests",
          "groups_get_v1_groups__groupId__relationships__groupRelationshipType__requests",
          "groups_post_v1_groups__groupId__relationships__groupRelationshipType__requests",
          "groups_delete_v1_groups__groupId__relationships__groupRelationshipType__requests__relatedGroupId_",
          "groups_post_v1_groups__groupId__relationships__groupRelationshipType__requests__relatedGroupId_",
          "groups_get_v1_groups__groupId__roles",
          "groups_get_v1_groups__groupId__roles__roleSetId__permissions",
          "groups_patch_v1_groups__groupId__roles__roleSetId__permissions",
          "groups_get_v1_groups__groupId__roles__roleSetId__users",
          "groups_get_v1_groups__groupId__roles_guest_permissions",
          "groups_get_v1_groups__groupId__roles_permissions",
          "groups_delete_v1_groups__groupId__rolesets__rolesetId_",
          "groups_patch_v1_groups__groupId__rolesets__rolesetId_",
          "groups_post_v1_groups__groupId__rolesets_create",
          "groups_get_v1_groups__groupId__social_links",
          "groups_post_v1_groups__groupId__social_links",
          "groups_delete_v1_groups__groupId__social_links__socialLinkId_",
          "groups_patch_v1_groups__groupId__social_links__socialLinkId_",
          "groups_get_v1_groups__groupId__users",
          "groups_post_v1_groups__groupId__users",
          "groups_delete_v1_groups__groupId__users__userId_",
          "groups_patch_v1_groups__groupId__users__userId_",
          "groups_get_v1_groups__groupId__users__userId__permissions",
          "groups_get_v1_groups_configuration_metadata",
          "groups_post_v1_groups_create",
          "groups_patch_v1_groups_icon",
          "groups_get_v1_groups_metadata",
          "groups_get_v1_groups_search",
          "groups_get_v1_groups_search_lookup",
          "groups_get_v1_groups_search_metadata",
          "groups_get_v1_roles",
          "groups_delete_v1_user_groups_primary",
          "groups_post_v1_user_groups_primary",
          "groups_get_v1_users__userId__friends_groups_roles",
          "groups_get_v1_users__userId__groups_primary_role",
          "groups_get_v1_users__userId__groups_roles",
          "groups_get_v1_groups__groupId__bans",
          "groups_get_v1_groups__groupId__bans__userId_",
          "groups_post_v1_groups__groupId__bans__userId_",
          "groups_delete_v1_groups__groupId__bans__userId_",
          "groups_get_v1_groups__groupId__blocked_keywords",
          "groups_post_v1_groups__groupId__blocked_keywords",
          "groups_patch_v1_groups__groupId__blocked_keywords__keywordId_",
          "groups_delete_v1_groups__groupId__blocked_keywords__keywordId_",
          "groups_get_v1_groups__groupId__emotes",
          "groups_get_v1_groups__groupId__features",
          "groups_patch_v1_groups__groupId__features",
          "groups_get_v1_groups__groupId__features_status",
          "groups_get_v2_groups",
          "groups_get_v2_users__userId__groups_roles",
          "RevenueSummary_GetGroupRevenueSummary",
          "TransactionHistory_GetGroupTransactions",
          "thumbnails_get_v1_groups_icons",
          "develop_get_v1_groups__groupId__universes",
          "develop_get_v1_user_groups_canmanagegamesoritems",
          "PrivateServers_UpdatePrivateServerPermissions",
          "games_get_v2_groups__groupId__games",
          "games_get_v2_groups__groupId__gamesV2"
        ]
      }
    },
    {
      "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_delete_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_get_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_post_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_delete_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_get_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_post_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_get_v1_favorites_users__userId__favorites__assetTypeId__assets",
          "catalog_get_v1_favorites_users__userId__favorites__subtypeId__bundles",
          "catalog_get_v1_users__userId__bundles",
          "catalog_get_v1_users__userId__bundles__bundleType_",
          "develop_get_v1_assets_voting",
          "friends_post_v1_user_following_exists",
          "friends_post_v1_users__targetUserId__follow",
          "friends_get_v1_users__targetUserId__followers",
          "friends_get_v1_users__targetUserId__followers_count",
          "friends_get_v1_users__targetUserId__followings",
          "friends_get_v1_users__targetUserId__followings_count",
          "friends_post_v1_users__targetUserId__unfollow",
          "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_) 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",
          "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_patch_v1_autolocalization_games__gameId__autolocalizationtable",
          "gameinternationalization_post_v1_autolocalization_games__gameId__autolocalizationtable",
          "gameinternationalization_patch_v1_autolocalization_games__gameId__settings",
          "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_patch_v1_localizationtable_gametables__gameId_",
          "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_patch_v1_auto_localization_table_games__gameId__ingestion",
          "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",
          "avatar_get_v1_avatar_metadata",
          "badges_get_v1_badges_metadata",
          "catalog_get_v1_categories",
          "catalog_get_v1_subcategories",
          "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",
          "friends_get_v1_metadata",
          "gameinternationalization_get_v1_autolocalization_metadata",
          "gameinternationalization_get_v1_name_description_metadata",
          "gameinternationalization_get_v1_supported_languages_metadata",
          "gameinternationalization_get_v1_translation_analytics_metadata",
          "gameinternationalization_get_v1_ui_configurations",
          "PrivateServers_GetPrivateServer",
          "groups_get_v1_groups_configuration_metadata",
          "groups_get_v1_groups_metadata",
          "groups_get_v1_groups_search_metadata",
          "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": "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_",
          "GameServers_GetFilterOptions",
          "GameServers_ListGameServers",
          "GameServers_ListGameServerLogs",
          "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",
          "PrivateServers_CreatePrivateServer",
          "PrivateServers_PrivateServersEnabledInUniverse",
          "PrivateServersApi.PrivateServers_GetMyPrivateServers",
          "PrivateServers_CanInviteUser",
          "PrivateServers_GetPrivateServer",
          "PrivateServers_UpdatePrivateServer",
          "PrivateServers_UpdatePrivateServerPermissions",
          "PrivateServers_UpdatePrivateServerSubscription",
          "PrivateServers_GetMyPrivateServers"
        ]
      }
    },
    {
      "name": "Sponsored campaigns",
      "description": "Create and manage sponsored advertising campaigns for your experiences and assets. [Launch](#adconfiguration_post_v2_sponsored_campaigns_create), [list](#adconfiguration_get_v2_sponsored_campaigns), and [stop](#adconfiguration_post_v2_sponsored_campaigns_stop) campaigns to promote your content across the Roblox platform, and [verify eligibility](#adconfiguration_get_v2_sponsored_campaigns_eligible_asset_type_ids) for sponsorship.\n",
      "x-roblox-tag-info": {
        "path": "sponsored-campaigns",
        "content": "HTTP APIs for working with sponsored campaigns on Roblox Cloud.",
        "ordering": [
          "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_post_v2_sponsored_games_create",
          "adconfiguration_post_v2_sponsored_games_stop",
          "adconfiguration_get_v2_sponsored_games_universes"
        ]
      }
    },
    {
      "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": "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.\n",
      "x-roblox-tag-info": {
        "path": "thumbnails",
        "content": "HTTP APIs for working with user thumbnails on Roblox Cloud.",
        "ordering": [
          "Cloud_GenerateUserThumbnail",
          "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",
          "badges_post_v1_badges__badgeId__icon",
          "avatar_post_v1_avatar_redraw_thumbnail",
          "games_get_v1_games__universeId__media",
          "games_get_v2_games__universeId__media",
          "groups_patch_v1_groups_icon",
          "publish_post_v1_games__gameId__thumbnail_image",
          "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- Server management: [Restart servers](#Cloud_RestartUniverseServers) after deploying updates or to clear cached state\n- User restrictions: [Ban or restrict users](#Cloud_UpdateUserRestriction__Using_Universes) from your experience at the universe or place level\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",
          "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",
          "Restarts_ForecastRestart",
          "Restarts_ListRestartStatuses",
          "Restarts_LaunchRestart",
          "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__configuration_vip_servers",
          "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",
          "TransactionRecordsApi.SalesReportDownload_PublishSalesReportDownloadMessage",
          "economycreatorstats_get_v1_universes__universeId__stats",
          "engagementpayouts_get_v1_universe_payout_history",
          "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_patch_v1_localizationtable_gametables__gameId_",
          "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",
          "PrivateServers_GetPrivateServerList",
          "games_get_v1_games__universeId__favorites",
          "games_post_v1_games__universeId__favorites",
          "games_get_v1_games__universeId__favorites_count",
          "games_get_v1_games__universeId__media",
          "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_",
          "PrivateServers_CreatePrivateServer",
          "Voting_MultiGetGameVoteStatus",
          "PrivateServers_PrivateServersEnabledInUniverse",
          "PrivateServersApi.PrivateServers_GetMyPrivateServers",
          "PrivateServers_GetPrivateServer",
          "PrivateServers_UpdatePrivateServer",
          "PrivateServers_UpdatePrivateServerPermissions",
          "PrivateServers_UpdatePrivateServerSubscription",
          "games_get_v2_games__universeId__media",
          "games_get_v2_groups__groupId__games",
          "games_get_v2_groups__groupId__gamesV2",
          "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",
          "localizationtables_patch_v1_auto_localization_table_games__gameId__ingestion",
          "notifications_get_v2_stream_notifications_get_latest_game_updates",
          "publish_post_v1_games__gameId__thumbnail_image",
          "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_v1_users__userId__avatar",
          "avatar_get_v1_users__userId__currently_wearing",
          "badges_get_v1_users__userId__badges",
          "groups_delete_v1_user_groups_primary",
          "groups_post_v1_user_groups_primary",
          "groups_get_v1_users__userId__groups_primary_role",
          "premiumfeatures_get_v1_users__userId__premium_upsell_precheck",
          "premiumfeatures_get_v1_users__userId__validate_membership",
          "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- 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",
          "premiumfeatures_get_v1_users__userId__premium_upsell_precheck",
          "premiumfeatures_get_v1_users__userId__validate_membership",
          "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",
          "badges_get_v1_users__userId__badges",
          "badges_get_v1_users__userId__badges_awarded_dates",
          "badges_get_v1_users__userId__badges__badgeId__awarded_date",
          "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_post_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_get_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_delete_v1_favorites_users__userId__assets__assetId__favorite",
          "catalog_get_v1_users__userId__bundles",
          "catalog_get_v1_users__userId__bundles__bundleType_",
          "catalog_get_v1_favorites_users__userId__favorites__subtypeId__bundles",
          "catalog_post_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_get_v1_favorites_users__userId__bundles__bundleId__favorite",
          "catalog_delete_v1_favorites_users__userId__bundles__bundleId__favorite",
          "friends_get_v1_users__userId__friends",
          "friends_get_v1_users__userId__friends_find",
          "friends_get_v1_users__userId__friends_search",
          "friends_get_v1_users__userId__friends_statuses",
          "friends_get_v1_users__userId__friends_online",
          "friends_get_v1_users__userId__friends_inactive",
          "friends_get_v1_users__userId__friends_count",
          "friends_get_v1_users__targetUserId__followers",
          "friends_get_v1_users__targetUserId__followers_count",
          "friends_get_v1_users__targetUserId__followings",
          "friends_get_v1_users__targetUserId__followings_count",
          "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",
          "groups_get_v1_users__userId__friends_groups_roles",
          "groups_get_v1_groups__groupId__users",
          "groups_post_v1_groups__groupId__users",
          "groups_get_v1_users__userId__groups_primary_role",
          "groups_get_v2_users__userId__groups_roles",
          "groups_get_v1_users__userId__groups_roles",
          "get_legacy_groups_v1_user_groups_pending",
          "groups_get_v1_user_groups_pending",
          "groups_get_v1_groups__groupId__join_requests_users__userId_",
          "groups_post_v1_groups__groupId__join_requests_users__userId_",
          "groups_delete_v1_groups__groupId__join_requests_users__userId_",
          "groups_delete_v1_groups__groupId__users__userId_",
          "groups_get_v1_groups__groupId__users__userId__permissions",
          "groups_patch_v1_groups__groupId__users__userId_",
          "develop_get_v1_user_groups_canmanagegamesoritems",
          "PrivateServers_CanInviteUser",
          "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",
          "TransactionRecordsApi.TransactionRecords_GetUserTransactions",
          "TransactionRecords_GetUserRevenueSummary",
          "TransactionRecords_GetUsedTransactionTypes",
          "translationroles_get_v1_game_localization_roles_games__gameId__roles__role__assignees"
        ]
      }
    }
  ]
}
