export type Roblox2AssetdeliveryV3AssetNameIdentifier = {name: string, universeId?: number | undefined}; export type Roblox2AssetdeliveryV3AssetIdentifier = {assetId?: number | undefined, hash?: string | undefined, assetVersionId?: number | undefined, assetName?: Roblox2AssetdeliveryV3AssetNameIdentifier | undefined}; export type Roblox2AssetdeliveryV3StableVersion = Record; export type Roblox2AssetdeliveryV3PinnedVersion = {versionNumber?: number | undefined}; export type Roblox2AssetdeliveryV3LatestVersion = Record; export type Roblox2AssetdeliveryV3VersionStrategy = {stable?: Roblox2AssetdeliveryV3StableVersion | undefined, pinned?: Roblox2AssetdeliveryV3PinnedVersion | undefined, latest?: Roblox2AssetdeliveryV3LatestVersion | undefined}; export type Roblox2AssetdeliveryV3RepresentationItem = {format?: string | undefined, majorVersion?: string | undefined, fidelity?: string | undefined}; export type Roblox2AssetdeliveryV3RepresentationRequest = {priorityList?: Array | undefined, doNotFallbackToBaseline?: boolean | undefined}; export type Roblox2AssetdeliveryV3Options = {metadata: unknown}; export type Roblox2AssetdeliveryV3InsertContext = {scriptInsert?: boolean | undefined, clientInsert?: boolean | undefined, serverPlaceId?: number | undefined}; export type Roblox2AssetdeliveryV3AssetRequestItem = {requestId: string, asset: Roblox2AssetdeliveryV3AssetIdentifier, version: Roblox2AssetdeliveryV3VersionStrategy, assetType?: string | undefined, representation?: Roblox2AssetdeliveryV3RepresentationRequest | undefined, skipSigningScripts?: boolean | undefined, permissionContext?: string | undefined, options?: Roblox2AssetdeliveryV3Options | undefined, insertContext?: Roblox2AssetdeliveryV3InsertContext | undefined, assetResolutionMode?: string | undefined, dataModelMode?: (0 | 1 | 2) | undefined, usageContext?: string | undefined, accessContext: unknown, thumbnailModerationAccessKey?: string | undefined, placeId?: number | undefined, modulePlaceId?: number | undefined, xcachesplit?: number | undefined}; export type Roblox2AssetdeliveryV3V3BatchRequest = {assets: Array}; export type CreateApiV3AssetsBatchArgs = {'Roblox-Place-Id': number, 'Accept-Encoding': string, body: Roblox2AssetdeliveryV3V3BatchRequest}; export type CreateApiV3AssetsBatchOptions = {baseUrl?: string | undefined, robloxLegacyCookie?: string | undefined, fetch?: typeof fetch | undefined}; /** * POST /v3/assets/batch */ export const createApiV3AssetsBatch = async (args: CreateApiV3AssetsBatchArgs, options?: CreateApiV3AssetsBatchOptions) => { const {baseUrl = "https://assetdelivery.roblox.com", fetch: fetchFn = fetch, robloxLegacyCookie} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") if (args['Roblox-Place-Id'] != null) headers.set("Roblox-Place-Id", String(args['Roblox-Place-Id'])) if (args['Accept-Encoding'] != null) headers.set("Accept-Encoding", String(args['Accept-Encoding'])) if (robloxLegacyCookie !== undefined) cookies.push(".ROBLOSECURITY=" + encodeURIComponent(robloxLegacyCookie)) const url = `${baseUrl.replace(/\/+$/, '')}/v3/assets/batch${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return undefined };