Asset bundle API
Asset API works with different versions of asset bundles. It recognises version from "assetVersion" parameter or "X-Asset-Version" header.
Currently API works with next asset versions:
1.0 - used by old client versions, deprecated
2.0 - used by client version 1.1.5+ and publisher version 2.0.0+
3.0 - reserved for Unity 2017.3
4.0 - reserved for Unity 2018.3 and higher
5.0 - version with skin support
6.0 - version with URP support
Commands that fetch assets also recognise "compatibleAssetVersions" parameter or "X-Compatible-Asset-Versions" header to fetch compatible asset version in case if main "assetVersion" not found.
| Endpoint | Method | Description |
|---|---|---|
| /api/v0/asset/listManagedNetworks | webRequest | List asset managed networks |
| /api/v0/asset/prop/create | webRequest | Create prop asset |
| /api/v0/asset/style/create | webRequest | Create style asset |
| /api/v0/asset/environment/create | webRequest | Create environment asset |
| /api/v0/asset/prop/update | webRequest | Update prop asset |
| /api/v0/asset/style/update | webRequest | Update style asset |
| /api/v0/asset/environment/update | webRequest | Update environment asset |
| /api/v0/asset/updateStatus | webRequest | Update asset status |
| /api/v0/asset/updateOwnership | webRequest | Update asset ownership |
| /api/v0/asset/prop/list | webRequest | List prop assets |
| /api/v0/asset/style/list | webRequest | List style assets |
| /api/v0/asset/environment/list | webRequest | List environment assets |
| /api/v0/asset/prop/listOwn | webRequest | List user own prop assets |
| /api/v0/asset/style/listOwn | webRequest | List user own style assets |
| /api/v0/asset/environment/listOwn | webRequest | List user own environment assets |
| /api/v0/asset/listPatchVersions | webRequest | List patch versions for asset resources and their creation date. |
| /api/v0/asset/restorePatchVersion | webRequest | Restore asset resources from the patch. |
| /api/v0/asset/setOriginal | webRequest | Set asset original resource |
| /api/v0/asset/remove | webRequest | Remove asset |
| /api/v0/asset/metadata/{id} | webRequest | Get prop asset metadata |
| /api/v0/asset/{assetId}/platform/{platform} | webRequest | Get asset resource data |
| /{assetId}/platform/{platform}/patch/{patchVersion} | webRequest | Get asset resource data per patch version |
| /api/v0/asset/{assetId} | webRequest | Get asset resource data for default platform |
| /api/v0/asset/thumbnail/{id} | webRequest | Get asset thumbnail data |
| /api/v0/asset/original/{id} | webRequest | Get asset original data |
| /api/v0/asset/url/{assetId}/platform/{platform} | webRequest | Get asset resource url |
| /api/v0/asset/url/{assetId}/platform/{platform}/patch/{patchVersion} | webRequest | Get asset resource url per patch version |
| /api/v0/asset/url/{assetId} | webRequest | Get asset resource url for default platform |
| /api/v0/asset/thumbnail/url/{id} | webRequest | Get asset thumbnail url |
| /api/v0/asset/original/url/{id} | webRequest | Get asset original url |
| /api/v0/asset/listSkinPatchVersions | webRequest | List patch versions for asset resources and their creation date. |
| /api/v0/asset/restoreSkinPatchVersion | webRequest | Restore asset resources from the patch. |
| /api/v0/asset/upload/link | webRequest | Direct asset upload to Google bucket (get upload link) |
| /api/v0/asset/upload/link/complete | webRequest | Direct asset upload to Google bucket (complete upload link) |
| /api/v0/asset/upload/thumbnail/link | webRequest | Direct asset thumbnail upload to Google bucket (get upload link) |
| /api/v0/asset/upload/thumbnail/link/complete | webRequest | Direct asset thumbnail upload to Google bucket (complete upload link) |
| asset:updateAssetParams | websocket | Update asset params |
| asset:getPropAsset | websocket | Get prop asset |
| asset:getStyleAsset | websocket | Get style asset |
| asset:getEnvironmentAsset | websocket | Get environment asset |
| asset:searchProp | websocket | Search prop assets |
| asset:searchStyle | websocket | Search style assets |
| asset:searchEnvironment | websocket | Search environment assets |
| asset:listProps | websocket | List prop assets (websocket) |
| asset:listStyles | websocket | List style assets (websocket) |
| asset:listEnvironments | websocket | List environment assets (websocket) |
List asset managed networks
HTTP Method: POST
Path: /api/v0/asset/listManagedNetworks
Description: Api returns list of networks where user have permissions to manage assets.
Request:
{ empty }
Response:
{
"networks": [{
"id": string
"fullName": string
}]
}
Create prop asset
HTTP Method: POST
Path: /api/v0/asset/prop/create
Request:
{
"data": { asset bundle prop structure }
}
Response:
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"placing": string
"invokeType": string
"minScale": float
"maxScale": float
"canStack": bool
"pedestalInZoomView": bool
"alternativeZoom": bool
"size": { xyz structure }
"contentType": [ string ] // supported content types for asset template
"assetBundleMeta": {
"logoCount": int // show amount of logos in content management system
"thumbnailCount": int // show amount of thumbnails in content management system
}
}
Create style asset
HTTP Method: POST
Path: /api/v0/asset/style/create
Request:
{
"data": { asset bundle style structure }
}
Response:
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"styleType": string // Default/NoMirror
"doorsType": string // Glass/None
"homePosition": { xyz structure } // home position for camera
}
Create environment asset
HTTP Method: POST
Path: /api/v0/asset/environment/create
Request:
{
"data": { asset bundle environment structure }
}
Response:
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
}
Update prop asset
HTTP Method: POST
Path: /api/v0/asset/prop/update
Request:
{
"asset": string
"data": { asset bundle prop structure }
}
Response:
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"placing": string
"invokeType": string
"minScale": float
"maxScale": float
"canStack": bool
"pedestalInZoomView": bool
"alternativeZoom": bool
"size": { xyz structure }
"contentType": [ string ] // supported content types for asset template
"assetBundleMeta": {
"logoCount": int // show amount of logos in content management system
"thumbnailCount": int // show amount of thumbnails in content management system
}
}
Update style asset
HTTP Method: POST
Path: /api/v0/asset/style/update
Request:
{
"asset": string
"data": { asset bundle style structure }
}
Response:
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"styleType": string // Default/NoMirror
"doorsType": string // Glass/None
"homePosition": { xyz structure } // home position for camera
}
Update environment asset
HTTP Method: POST
Path: /api/v0/asset/environment/update
Request:
{
"asset": string
"data": { asset bundle environment structure }
}
Response:
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
}
Update asset status
HTTP Method: POST
Path: /api/v0/asset/updateStatus
Request:
{
"assetId": string
"status": string
}
Response:
{ empty }
Update asset ownership
HTTP Method: POST
Path: /api/v0/asset/updateOwnership
Request:
{
"assetId": string
"networkId": string
}
Response:
{ empty }
List prop assets
HTTP Method: POST
Path: /api/v0/asset/prop/list
Request:
{
"offset": int
"size": int
"forNetwork": string
"id": string
"title": string
"tags": [ string ]
"placing": string
"contentType": [ string ]
}
Response:
[{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"placing": string
"invokeType": string
"minScale": float
"maxScale": float
"canStack": bool
"pedestalInZoomView": bool
"alternativeZoom": bool
"size": { xyz structure }
"contentType": [ string ] // supported content types for asset template
"assetBundleMeta": {
"logoCount": int // show amount of logos in content management system
"thumbnailCount": int // show amount of thumbnails in content management system
}
}]
List style assets
HTTP Method: POST
Path: /api/v0/asset/style/list
Request:
{
"offset": int
"size": int
"forNetwork": string
"id": string
"title": string
"tags": [ string ]
}
Response:
[{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"styleType": string // Default/NoMirror
"doorsType": string // Glass/None
"homePosition": { xyz structure } // home position for camera
}]
List environment assets
HTTP Method: POST
Path: /api/v0/asset/environment/list
Request:
{
"offset": int
"size": int
"forNetwork": string
"id": string
"title": string
"tags": [ string ]
}
Response:
[{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
}]
List user own prop assets
HTTP Method: POST
Path: /api/v0/asset/prop/listOwn
Request:
{
"offset": int
"size": int
"forNetwork": string
"id": string
"title": string
"tags": [ string ]
"placing": string
"contentType": [ string ]
}
Response:
[{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"placing": string
"invokeType": string
"minScale": float
"maxScale": float
"canStack": bool
"pedestalInZoomView": bool
"alternativeZoom": bool
"size": { xyz structure }
"contentType": [ string ] // supported content types for asset template
"assetBundleMeta": {
"logoCount": int // show amount of logos in content management system
"thumbnailCount": int // show amount of thumbnails in content management system
}
}]
List user own style assets
HTTP Method: POST
Path: /api/v0/asset/style/listOwn
Request:
{
"offset": int
"size": int
"forNetwork": string
"id": string
"title": string
"tags": [ string ]
}
Response:
[{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"styleType": string // Default/NoMirror
"doorsType": string // Glass/None
"homePosition": { xyz structure } // home position for camera
}]
List user own environment assets
HTTP Method: POST
Path: /api/v0/asset/environment/listOwn
Request:
{
"offset": int
"size": int
"forNetwork": string
"id": string
"title": string
"tags": [ string ]
}
Response:
[{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
}]
List patch versions for asset resources and their creation date.
HTTP Method: POST
Path: /api/v0/asset/listPatchVersions
Request:
{
"assetId": string
}
Response:
[{
"patchVersion": int
"created": timestamp
}]
Restore asset resources from the patch.
HTTP Method: POST
Path: /api/v0/asset/restorePatchVersion
Request:
{
"assetId": string
"patchVersion": int
}
Response:
{ empty }
Set asset original resource
HTTP Method: POST
Path: /api/v0/asset/setOriginal
Description: API sets resource of original textures for asset.
Request:
{
"assetId": string
"resourceId": string
}
Response:
{ empty }
Remove asset
HTTP Method: POST
Path: /api/v0/asset/remove
Request:
{
"asset": string
}
Response:
{ empty }
Get prop asset metadata
HTTP Method: POST
Path: /api/v0/asset/metadata/
Request:
{ empty }
Response:
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"placing": string
"invokeType": string
"minScale": float
"maxScale": float
"canStack": bool
"pedestalInZoomView": bool
"alternativeZoom": bool
"size": { xyz structure }
"contentType": [ string ] // supported content types for asset template
"assetBundleMeta": {
"logoCount": int // show amount of logos in content management system
"thumbnailCount": int // show amount of thumbnails in content management system
}
}
Get asset resource data
HTTP Method: GET
Path: /api/v0/asset/{assetId}/platform/
Request:
{ empty }
Response:
{ empty }
Get asset resource data per patch version
HTTP Method: GET
Path: /{assetId}/platform/{platform}/patch/
Request:
{ empty }
Response:
{ empty }
Get asset resource data for default platform
HTTP Method: GET
Path: /api/v0/asset/
Request:
{ empty }
Response:
{ empty }
Get asset thumbnail data
HTTP Method: GET
Path: /api/v0/asset/thumbnail/
Request:
{ empty }
Response:
{ empty }
Get asset original data
HTTP Method: GET
Path: /api/v0/asset/original/
Request:
{ empty }
Response:
{ empty }
Get asset resource url
HTTP Method: GET
Path: /api/v0/asset/url/{assetId}/platform/
Request:
{ empty }
Response:
{ empty }
Get asset resource url per patch version
HTTP Method: GET
Path: /api/v0/asset/url/{assetId}/platform/{platform}/patch/
Request:
{ empty }
Response:
{ empty }
Get asset resource url for default platform
HTTP Method: GET
Path: /api/v0/asset/url/
Request:
{ empty }
Response:
{ empty }
Get asset thumbnail url
HTTP Method: GET
Path: /api/v0/asset/thumbnail/url/
Request:
{ empty }
Response:
{ empty }
Get asset original url
HTTP Method: GET
Path: /api/v0/asset/original/url/
Request:
{ empty }
Response:
{ empty }
List patch versions for asset resources and their creation date.
HTTP Method: POST
Path: /api/v0/asset/listSkinPatchVersions
Request:
{
"assetId": string
"skinId": string
}
Response:
[{
"patchVersion": int
"created": timestamp
}]
Restore asset resources from the patch.
HTTP Method: POST
Path: /api/v0/asset/restoreSkinPatchVersion
Request:
{
"assetId": string
"skinId": string
"patchVersion": int
}
Response:
{ empty }
Direct asset upload to Google bucket (get upload link)
HTTP Method: POST
Path: /api/v0/asset/upload/link
Description: Direct upload gives possibility to upload files directly from a client to a storage bucket. It consist of next steps:
Client asks the server for upload link. The server initializes an upload session and returns a link which could be used for upload.
Client uploads a file to Google bucket.
Request:
{
"asset": string
"platform": string
"fileName": string
"contentType": string
}
Response:
Google bucket upload link
Direct asset upload to Google bucket (complete upload link)
HTTP Method: POST
Path: /api/v0/asset/upload/link/complete
Description: See direct upload to Google bucket.
Request:
{
"asset": string
"platform": string
"fileName": string
"contentType": string
}
Response:
{ empty }
Direct asset thumbnail upload to Google bucket (get upload link)
HTTP Method: POST
Path: /api/v0/asset/upload/thumbnail/link
Description: The process is the same as direct upload to Google bucket. Complete with thumbnail uploaded acknowledgment.
Request:
{
"asset": string
"platform": string
"fileName": string
"contentType": string
}
Response:
Google bucket upload link
Direct asset thumbnail upload to Google bucket (complete upload link)
HTTP Method: POST
Path: /api/v0/asset/upload/thumbnail/link/complete
Description: See direct thumbnail upload to Google bucket.
Request:
{
"asset": string
"platform": string
"fileName": string
"contentType": string
}
Response:
{ empty }
Update asset params
Method: websocket
Endpoint: asset:updateAssetParams
Request:
{
"data": {
"assetId": string
"params": map[string]{ custom structure }
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"error": { "status": bool, "code": int, "message": string }
}
Get prop asset
Method: websocket
Endpoint: asset:getPropAsset
Request:
{
"data": {
"assetId": string
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"asset": { asset bundle prop structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Get style asset
Method: websocket
Endpoint: asset:getStyleAsset
Request:
{
"data": {
"assetId": string
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"asset": { asset bundle style structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Get environment asset
Method: websocket
Endpoint: asset:getEnvironmentAsset
Request:
{
"data": {
"assetId": string
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"asset": { asset bundle environment structure }
}
"error": { "status": bool, "code": int, "message": string }
}
Search prop assets
Method: websocket
Endpoint: asset:searchProp
Request:
{
"data": {
"offset": int
"size": int
"onlyAssetsOfCurrentUser": bool
"forNetwork": string
"title": string
"tags": [ string ]
"placing": string
"contentType": [ string ]
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"assets": [{ asset bundle prop structure }]
}
"error": { "status": bool, "code": int, "message": string }
}
Search style assets
Method: websocket
Endpoint: asset:searchStyle
Request:
{
"data": {
"offset": int
"size": int
"onlyAssetsOfCurrentUser": bool
"forNetwork": string
"title": string
"tags": [ string ]
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"assets": [{ asset bundle style structure }]
}
"error": { "status": bool, "code": int, "message": string }
}
Search environment assets
Method: websocket
Endpoint: asset:searchEnvironment
Request:
{
"data": {
"offset": int
"size": int
"onlyAssetsOfCurrentUser": bool
"forNetwork": string
"title": string
"tags": [ string ]
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"assets": [{ asset bundle environment structure }]
}
"error": { "status": bool, "code": int, "message": string }
}
List prop assets (websocket)
Method: websocket
Endpoint: asset:listProps
Request:
{
"data": {
"placing": string
"contentType": [ string ]
"offset": int
"size": int
"onlyAssetsOfCurrentUser": bool
"forNetwork": string
"id": string
"title": string
"tags": [ string ]
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"assets": [{ asset bundle prop structure }]
"propSkins": [{ asset bundle skin structure }] // default (or displayed) skins for assets
}
"error": { "status": bool, "code": int, "message": string }
}
List style assets (websocket)
Method: websocket
Endpoint: asset:listStyles
Request:
{
"data": {
"offset": int
"size": int
"onlyAssetsOfCurrentUser": bool
"forNetwork": string
"id": string
"title": string
"tags": [ string ]
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"assets": [{ asset bundle style structure }]
}
"error": { "status": bool, "code": int, "message": string }
}
List environment assets (websocket)
Method: websocket
Endpoint: asset:listEnvironments
Request:
{
"data": {
"offset": int
"size": int
"onlyAssetsOfCurrentUser": bool
"forNetwork": string
"id": string
"title": string
"tags": [ string ]
}
"event": { "id": string, "date": timestamp }
}
Response:
{
"data": {
"assets": [{ asset bundle environment structure }]
}
"error": { "status": bool, "code": int, "message": string }
}
Models
Asset Bundle Prop
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"placing": string
"invokeType": string
"minScale": float
"maxScale": float
"canStack": bool
"pedestalInZoomView": bool
"alternativeZoom": bool
"size": { xyz structure }
"contentType": [ string ] // supported content types for asset template
"assetBundleMeta": {
"logoCount": int // show amount of logos in content management system
"thumbnailCount": int // show amount of thumbnails in content management system
}
}
Resource
{
"id": string
"created": timestamp
"updated": timestamp
"title": string
"description": string
"location": string
"date": string
"category": string
"linkId": string // id of resource link is pointing to
"linkType": string // global/local
"encryptionVersion": string // encryption version, like 'verus.v1'
"encryptionEpoch": int // epoch defines key bundle that was used for encryption
"encryptionEpk": string // ephemeral public key that should be used to decrypt cypher data
"belonging": string // determines resource location in the system in a way 'belongingType:belongingPath(networkId)'
"status": string // pending/processing/ready/failed
"metadata": {
"fileName": string
"fileSize": int
"fileDate": timestamp
"behaviourType": string
"contentType": string
"convertedFrom": string
"link": string
"origin": { resource origin structure }
"geolocation": { geolocation structure }
"dimensions": { dimensions structure }
}
"thumbnail": string
"fromTemplate": bool
"totalReactions": int // amount of users who reacted to the resource
"data": {
"audio": { resource data audio structure }
"video": { resource data video structure }
"amazon": { resource data amazon structure }
"imdb": { resource data imdb structure }
"youtube": { resource data youtube structure }
"pinterest": { resource data pinterest structure }
"pixabay": { resource data pixabay structure }
"facebook": { resource data facebook structure }
"remoteUrl": { resource data remote url structure }
"liveStream": { live stream data structure }
"aiGeneration": { ai generation data structure }
"thumbnailUrl": string
"downloadUrl": string
"directory": { resource data directory structure }
"channel": { channel data structure }
"googleDrive": { google drive structure }
}
"customParams": map[string]{ custom structure } // client defined parameters
"actions": [{ programmatic action with children structure }] // custom programmatic actions from users
}
Resource Origin
{
"type": string
"device": string
"deviceName": string
"path": string
}
Geolocation
{
"latitude": float
"longitude": float
}
Dimensions
{
"width": int
"height": int
"orientation": int
}
Resource Data Audio
{
"title": string
"artist": string
"album": string
"genre": string
"duration": int
"durationFloat": float
}
Resource Data Video
{
"duration": int
"durationFloat": float
"hasAlphaChannel": bool // true, if video generated from gif with transparent pixels
"alphaChannel": string // alpha channel video resource (if generated from gif)
}
Resource Data Amazon
{
"asin": string
"summary": string
"author": [ string ]
"manufacturer": string
"title": string
"publicationDate": string
"url": string
}
Resource Data Imdb
{
"Actors": string
"Genre": string
"Ratings": [{
"Source": string
"Value": string
}]
"Released": string
"Runtime": string
"Website": string
"Year": string
"Trailers": [ string ]
"imdbID": string
}
Resource Data Youtube
{
"videoId": string
"formatId": string
}
Resource Data Pinterest
{
"pin": string
"url": string
}
Resource Data Pixabay
{
"id": string
"pageUrl": string
}
Resource Data Facebook
{
"id": string
}
Resource Data Remote Url
{
"url": string
"urlType": string
"favicon": string
"title": string
}
Live Stream Data
{
"streamId": string
"assetId": string
"playbackUrl": string
"masterUrl": string
}
AI Generation Data
{
"generationModel": string // the model used for image generation [dall-e-3]
"prompt": string // a text description of the desired image
"revisedPrompt": string // the prompt that was used to generate the image, if there was any revision to the prompt
"url": string // the URL of the generated image
}
Resource Data Directory
{
"innerContentType": string
"innerContentCount": int
}
Channel Data
{
"communityId": string
"channelId": string
"subChannelId": string
"messageId": string
}
Google Drive
{
"fileId": string
"name": string
"mimeType": string
}
Programmatic Action with children
{
"localId": string // local action id, operated by client side only
"eventName": string
"actionName": string
"actionData": {
"usedPropId": string
"usedRoomId": string
"usedNetworkId": string
"usedStorylineId": string
"usedQuestionId": int
"usedQuestionnaireId": int
"usedSegmentId": string
"usedPlacementAreaId": string
"usedRoomPoint": string
"animationData": map[string]{ custom structure }
}
"childActions": [{ programmatic action structure }]
}
Programmatic Action
{
"localId": string // local action id, operated by client side only
"eventName": string
"actionName": string
"actionData": {
"usedPropId": string
"usedRoomId": string
"usedNetworkId": string
"usedStorylineId": string
"usedQuestionId": int
"usedQuestionnaireId": int
"usedSegmentId": string
"usedPlacementAreaId": string
"usedRoomPoint": string
"animationData": map[string]{ custom structure }
}
}
XYZ
{
"x": float
"y": float
"z": float
}
Asset Bundle Style
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
"styleType": string // Default/NoMirror
"doorsType": string // Glass/None
"homePosition": { xyz structure } // home position for camera
}
Asset Bundle Environment
{
"id": string
"created": timestamp
"updated": timestamp
"status": string // workInProgress/published
"ownership": string // empty - public asset; network:{networkId} - belongs to network
"hasVariants": bool // asset has skin variants
"title": string
"tags": [ string ]
"price": float // price per month (when creating room with the asset)
"score": int // featuring score for ordering assets
"displaySkins": bool // display all skins in sorting table
"params": map[string]{ custom structure } // client defined custom data
"editorParams": map[string]{ custom structure } // editor defined custom data / not used in runtime
"urls": map[string]string // asset data urls per platform
"thumbnail": { resource structure }
}
Asset Bundle Skin
{
"id": string
"created": timestamp
"updated": timestamp
"assetId": string
"variantId": string
"name": string
"isDefault": bool // is default among other variant skins
"overrideColor": { rgba structure } // override default color
"colorOnly": bool // doesn't have textures, only color'
"simplifiedSkin": bool // applying the skins does not require prop hierarchy rebuild
"sortOrder": int
"isHidden": bool // hides skin from client
"thumbnail": { resource structure }
"urls": map[string]string // asset skin data urls per platform
"defaultColor": { rgba structure } // applied by parent variant model
}
RGBA
{
"r": float
"g": float
"b": float
"a": float
}