Skip to content

Commit be666c7

Browse files
update Open Source Docs from Roblox internal teams
1 parent 116a5b8 commit be666c7

File tree

13 files changed

+492
-542
lines changed

13 files changed

+492
-542
lines changed

content/en-us/ip-licensing/creators.md

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,12 @@ To apply to use an IP license in your experience:
2828
2. Select an IP from the available licenses.
2929
3. Click **Request license**.
3030
4. Select the experience you want to apply to the license with and click **Next**.
31-
5. Select how ready your experience is to use the license and click **Next**. You can still apply to use a license even if your experience isn't fully ready to incorporate the IP.
32-
6. Download the content standards file, review and agree to the content standards, and click **Next**.
33-
7. Click **Submit** to submit your application. The IP holder then reviews and either approves or rejects your application.
31+
5. (Optional) Under **Intent**, enter more details about your experience in the form of a pitch. This can help the IP holder make a decision about your application. For more information about writing a pitch, see [Pitch details](#pitch-details).
32+
6. Under **Experience readiness**, select one of the following:
33+
- **Yes, my experience is ready to use this intellectual property** if you're done incorporating the IP into your experience. Revenue share will start as soon as the license agreement becomes active.
34+
- **No, I need time to incorporate this intellectual property into my experience** if you're not done incorporating the IP into your experience. Revenue share won't start immediately, but the IP holder can still turn on monetization at any time.
35+
7. Download the content standards file, review and agree to the content standards, and click **Next**.
36+
8. Click **Request** to submit your application. The IP holder then reviews and either approves or rejects your application.
3437

3538
<Alert severity="info">
3639
You can currently only request or be offered a license for a full experience, where the IP is central to and present throughout the experience.
@@ -40,6 +43,30 @@ To apply to use an IP license in your experience:
4043
After you enter an IP license agreement, you **cannot** cancel it.
4144
</Alert>
4245

46+
### Pitch details
47+
48+
Including a well-written pitch with your request can make the IP holder more likely to approve your application. Your pitch should convey a compelling idea and show that you are confident in your ability to execute this creative vision.
49+
50+
We recommend that you include the following information in your pitch:
51+
52+
- **Overall vision**:
53+
- What makes your adaption of the IP unique and exciting for players.
54+
- Your team's relevant experience, including examples of previous games you have developed, along with any previous work involving IP.
55+
- How you believe the IP integration will engage players, expand the IP's reach, and create new opportunities for monetization and community growth.
56+
57+
- **Creative elements**:
58+
- How your experience's visual and audio design will reflect the IP, including character models, environments, UI, and soundscapes. For example, if you're applying to integrate an IP like the Blair Witch, you can highlight the use of atmospheric visuals and sound effects that evoke suspense and dread.
59+
- How the story, lore, or signature moments from the IP will be integrated into your experience. This could involve recreating iconic scenes, referencing key plot points, or introducing original storylines that fit within the universe of the IP.
60+
- How you will maintain the integrity of the IP, making sure all creative choices align with the IP's established tone, themes, and content standards.
61+
62+
- **Gameplay**:
63+
- How the main gameplay loops will leverage the IP's unique features. For example, a survival horror IP could include mechanics like stealth, resource management, or cooperative puzzle-solving.
64+
- How players will interact with the IP. You can describe progression systems, challenges, and rewards that are consistent with the theme of the IP.
65+
- How your experience genre aligns with the IP. For example, an IP like The Strangers might be more aligned with PvE escape games or social deduction horror, while an IP like Fall might be more aligned with high-stakes obbys or survival challenges.
66+
67+
- **Timeline**:
68+
- What the current state of your experience is and when you expect the IP to be fully integrated into your experience.
69+
4370
## View license agreements
4471

4572
To view all of your offers and license agreements, go to **Intellectual Property****Licenses**. You can filter all license agreements by:

content/en-us/reference/cloud/asset-permissions-api/v1.json

Lines changed: 269 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,276 @@
55
"version": "1.0",
66
"x-roblox-extensions-version": "1.0.0"
77
},
8-
"paths": {},
8+
"paths": {
9+
"/asset-permissions-api/v1/assets/permissions": {
10+
"patch": {
11+
"tags": ["AssetPermissions"],
12+
"summary": "Grant a subject permission to multiple assets.\n \nAuthorization is required to grant permissions to the subject and asset IDs in the request.",
13+
"requestBody": {
14+
"content": {
15+
"application/json-patch+json": {
16+
"schema": {
17+
"$ref": "#/components/schemas/BatchGrantPermissionsRequest"
18+
}
19+
},
20+
"application/json": {
21+
"schema": {
22+
"$ref": "#/components/schemas/BatchGrantPermissionsRequest"
23+
}
24+
},
25+
"text/json": {
26+
"schema": {
27+
"$ref": "#/components/schemas/BatchGrantPermissionsRequest"
28+
}
29+
},
30+
"application/*+json": {
31+
"schema": {
32+
"$ref": "#/components/schemas/BatchGrantPermissionsRequest"
33+
}
34+
}
35+
}
36+
},
37+
"responses": {
38+
"200": {
39+
"description": "OK",
40+
"content": {
41+
"application/json": {
42+
"schema": {
43+
"$ref": "#/components/schemas/BatchGrantPermissionsResponse"
44+
}
45+
}
46+
}
47+
},
48+
"400": {
49+
"description": "Bad Request",
50+
"content": {
51+
"application/json": {
52+
"schema": {
53+
"$ref": "#/components/schemas/ErrorResponse"
54+
}
55+
}
56+
}
57+
},
58+
"403": {
59+
"description": "Forbidden",
60+
"content": {
61+
"application/json": {
62+
"schema": {
63+
"$ref": "#/components/schemas/ErrorResponse"
64+
}
65+
}
66+
}
67+
},
68+
"500": {
69+
"description": "Internal Server Error",
70+
"content": {
71+
"application/json": {
72+
"schema": {
73+
"$ref": "#/components/schemas/ErrorResponse"
74+
}
75+
}
76+
}
77+
}
78+
},
79+
"x-roblox-stability": "BETA",
80+
"x-roblox-rate-limits": {
81+
"perApiKeyOwner": {
82+
"period": "MINUTE",
83+
"maxInPeriod": 100
84+
}
85+
},
86+
"x-roblox-scopes": [
87+
{
88+
"name": "asset-permissions:write"
89+
}
90+
],
91+
"x-roblox-engine-usability": {
92+
"apiKeyWithHttpService": false
93+
},
94+
"security": [
95+
{
96+
"roblox-legacy-cookie": []
97+
},
98+
{
99+
"roblox-api-key": []
100+
}
101+
]
102+
}
103+
}
104+
},
9105
"components": {
10-
"securitySchemes": {}
106+
"schemas": {
107+
"AssetAction": {
108+
"enum": [
109+
"Invalid",
110+
"Edit",
111+
"Use",
112+
"Download",
113+
"CopyFromRcc",
114+
"UpdateFromRcc"
115+
],
116+
"type": "string",
117+
"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."
118+
},
119+
"AssetGrantRequest": {
120+
"type": "object",
121+
"properties": {
122+
"assetId": {
123+
"type": "integer",
124+
"description": "The asset ID to grant permission to.",
125+
"format": "int64"
126+
},
127+
"grantToDependencies": {
128+
"type": "boolean",
129+
"description": "Whether to extend the permission grant to dependencies of the asset. This will be done asynchronously after the main grant."
130+
},
131+
"parentVersionNumber": {
132+
"type": "integer",
133+
"description": "The version number of 'assetId' to use for determining asset dependencies.",
134+
"format": "int32"
135+
}
136+
},
137+
"additionalProperties": false,
138+
"description": "Asset grant requests with additional options to grant to dependencies."
139+
},
140+
"BatchGrantPermissionsRequest": {
141+
"type": "object",
142+
"properties": {
143+
"subjectType": {
144+
"$ref": "#/components/schemas/SubjectType"
145+
},
146+
"subjectId": {
147+
"type": "string",
148+
"description": "The subject ID to grant to. Must be empty for SubjectType 'All'.",
149+
"nullable": true
150+
},
151+
"action": {
152+
"$ref": "#/components/schemas/AssetAction"
153+
},
154+
"requests": {
155+
"type": "array",
156+
"items": {
157+
"$ref": "#/components/schemas/AssetGrantRequest"
158+
},
159+
"description": "Array of asset grant requests. If populated, 'requests' will override 'assetIds'.",
160+
"nullable": true
161+
},
162+
"assetIds": {
163+
"type": "array",
164+
"items": {
165+
"type": "integer",
166+
"format": "int64"
167+
},
168+
"description": "[Deprecated] The list of asset IDs to grant this permission to. 'requests' will be prioritized over this list.",
169+
"nullable": true,
170+
"deprecated": true
171+
},
172+
"enableDeepAccessCheck": {
173+
"type": "boolean",
174+
"description": "[Do not use] An optional boolean to indicate if a deep access check should be done. This is not intended for public use."
175+
}
176+
},
177+
"additionalProperties": false,
178+
"description": "Request object to grant one permission to multiple assets."
179+
},
180+
"BatchGrantPermissionsResponse": {
181+
"type": "object",
182+
"properties": {
183+
"successAssetIds": {
184+
"type": "array",
185+
"items": {
186+
"type": "integer",
187+
"format": "int64"
188+
},
189+
"description": "The list of asset IDs that granted successfully.",
190+
"nullable": true
191+
},
192+
"errors": {
193+
"type": "array",
194+
"items": {
195+
"$ref": "#/components/schemas/GrantPermissionError"
196+
},
197+
"description": "The list of grants that had errors.",
198+
"nullable": true
199+
}
200+
},
201+
"additionalProperties": false,
202+
"description": "Response object to grant one permission to multiple assets."
203+
},
204+
"Error": {
205+
"type": "object",
206+
"properties": {
207+
"code": {
208+
"$ref": "#/components/schemas/ErrorCode"
209+
},
210+
"message": {
211+
"type": "string",
212+
"description": "The human readable error message.",
213+
"nullable": true
214+
}
215+
},
216+
"additionalProperties": false,
217+
"description": "The error object for results."
218+
},
219+
"ErrorCode": {
220+
"enum": [
221+
"UnknownError",
222+
"InvalidRequest",
223+
"AssetNotFound",
224+
"CannotManageAsset",
225+
"PublicAssetCannotBeGrantedTo",
226+
"CannotManageSubject",
227+
"SubjectNotFound",
228+
"AssetTypeNotEnabled",
229+
"PermissionLimitReached"
230+
],
231+
"type": "string",
232+
"description": "Enums for customized error code in error responses."
233+
},
234+
"ErrorResponse": {
235+
"type": "object",
236+
"properties": {
237+
"error": {
238+
"$ref": "#/components/schemas/Error"
239+
}
240+
},
241+
"additionalProperties": false,
242+
"description": "The error object for responses."
243+
},
244+
"GrantPermissionError": {
245+
"type": "object",
246+
"properties": {
247+
"assetId": {
248+
"type": "integer",
249+
"description": "Failed asset ID.",
250+
"format": "int64"
251+
},
252+
"code": {
253+
"$ref": "#/components/schemas/ErrorCode"
254+
}
255+
},
256+
"additionalProperties": false,
257+
"description": "Single error for BatchGrantPermissionsResponse."
258+
},
259+
"SubjectType": {
260+
"enum": ["Invalid", "User", "Group", "GroupRoleset", "All", "Universe"],
261+
"type": "string"
262+
}
263+
},
264+
"securitySchemes": {
265+
"roblox-legacy-cookie": {
266+
"type": "apiKey",
267+
"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. When possible, use API keys with the x-api-key header or OAuth 2.0 instead for authentication.",
268+
"in": "cookie",
269+
"name": ".ROBLOSECURITY"
270+
},
271+
"roblox-api-key": {
272+
"type": "apiKey",
273+
"description": "A configurable key that allows granular access to Roblox resources. See https://create.roblox.com/docs/cloud/auth/api-keys for more information.",
274+
"in": "header",
275+
"name": "x-api-key"
276+
}
277+
}
11278
},
12279
"servers": [
13280
{

content/en-us/reference/cloud/assets/v1.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,7 @@
842842
"properties": {
843843
"assetType": {
844844
"type": "string",
845-
"description": "The asset type. Can only be `Audio`, `Decal`, or `Model`. Required for [Create Asset](#POST-v1-assets).",
845+
"description": "The asset type. Required for [Create Asset](#POST-v1-assets).",
846846
"format": "enum"
847847
},
848848
"assetId": {

0 commit comments

Comments
 (0)