OpenCloudService

Call Roblox's Open Cloud from a program: any endpoint, long-running operations, and the developer products of your experiences.

RequestAsync sends the credential in a header, sends Json as JSON and decodes the answer. Busy (429) and server (5xx) answers are retried up to four times; any other failure gives nil and Roblox's own error text, naming the path. Set Creator once so uploads know who owns them, and point BaseUrl at a local server of yours to stand in for Roblox while you build.

ShotInstanceservicenot creatableRoblox

A service: write use OpenCloudService.

Properties

NameTypeDefaultDescription
CreatorCreator?Who owns uploaded assets when an upload doesn't say: { GroupId = n } or { UserId = n }; with neither set, uploads error.
BaseUrlstring"https://apis.roblox.com"Where every request goes, Roblox's own address by default; point it at a local server of yours to stand in for Roblox.

Methods

NameArgumentsReturnsDescription
RequestAsync
yields
(method: string, path: string, options: { Query: { [string]: string }?, Json: any?, Body: (buffer | string)?, ContentType: string? }?)(OpenCloudResponse?, string?)Sends one request and waits for the answer: Status, decoded Json and Body; 429 and 5xx are retried, other failures give nil and Roblox's message.
WaitForOperationAsync
yields
(path: string, timeout: number?)(any?, string?)Polls a long-running operation until it ends, 300 s by default: its response, or nil and Roblox's message when it failed.
ListDeveloperProductsAsync
yields
(universeId: number)({ DeveloperProductInfo }?, string?)Waits for every developer product of the universe, following the pages to the last one.
CreateDeveloperProductAsync
yields
(universeId: number, info: { Name: string, Description: string?, Price: number, IsForSale: boolean? })(number?, string?)Waits for Roblox to create the product and gives its id; IsForSale is true unless you say, and Price is whole Robux.
UpdateDeveloperProductAsync
yields
(universeId: number, productId: number, changes: { Name: string?, Description: string?, Price: number?, IsForSale: boolean? })(boolean, string?)Sends only the fields you give and waits for Roblox to accept them; changes that name nothing are an error.
From ShotInstance 33