An upload manifest is a JSON document that describes which files should be uploaded—and where—when creating or revising a content item.
This generally includes multiple screenshots (for display with the content), entities (binary files that make up a game or asset), and packages (our wrapper around Unity asset bundles). Entity files are universal, in that they work on any platform, but asset bundles are restricted to a single platform. Hence, each package is represented as three separate files.
We use AWS S3 as our file store, so all file paths will be complete and expressed in S3 format: s3://{bucketName}/{key}
However since these paths come from the server, the client is spared the burden of knowing any additional details about constructing the paths. (The path logic must be free to change entirely independent of the client logic.)
{
"screenshots": [
{
"filename": "a32dd360-94f7-4f77-8152-f21e498c4afe.jpg",
"path": "s3://prod.media.theendlessmission.com/upload/us-west-2:12345678-0000-0000-0000-123456789abc/c1a50a88-0441-4c71-b581-0207f4906c49/screenshots/a32dd360-94f7-4f77-8152-f21e498c4afe.jpg"
}
],
"entities": [
{
"entityId": "15ebefd5-ed62-4a3a-b571-2e5616d6d97a",
"revisionId": "66e717df-1405-4c15-96b4-b5c28ce59f7a",
"path": "s3://prod.content.theendlessmission.com/upload/us-west-2:12345678-0000-0000-0000-123456789abc/c1a50a88-0441-4c71-b581-0207f4906c49/entities/15ebefd5-ed62-4a3a-b571-2e5616d6d97a/66e717df-1405-4c15-96b4-b5c28ce59f7a.entity"
},
{
"entityId": "c865ef34-60bb-41bf-827a-41cc0a58bd15",
"revisionId": "098b3d81-6d35-4b58-8773-2a6e893b885e",
"path": "s3://prod.content.theendlessmission.com/upload/us-west-2:12345678-0000-0000-0000-123456789abc/c1a50a88-0441-4c71-b581-0207f4906c49/entities/c865ef34-60bb-41bf-827a-41cc0a58bd15/098b3d81-6d35-4b58-8773-2a6e893b885e.entity"
},
{
"entityId": "e17df761-b27c-4176-820b-a30f1f81095a",
"revisionId": "840fdeb0-a8e5-4449-a88c-222642a32053",
"path": "s3://prod.content.theendlessmission.com/upload/us-west-2:12345678-0000-0000-0000-123456789abc/c1a50a88-0441-4c71-b581-0207f4906c49/entities/e17df761-b27c-4176-820b-a30f1f81095a/840fdeb0-a8e5-4449-a88c-222642a32053.entity"
}
],
"packages": [
{
"packageId": "f90d1311-a9e6-400f-bade-b30aa5e1f12f",
"win64": "s3://prod.content.theendlessmission.com/upload/us-west-2:12345678-0000-0000-0000-123456789abc/c1a50a88-0441-4c71-b581-0207f4906c49/packages/f90d1311-a9e6-400f-bade-b30aa5e1f12f/win64.package",
"osx64": "s3://prod.content.theendlessmission.com/upload/us-west-2:12345678-0000-0000-0000-123456789abc/c1a50a88-0441-4c71-b581-0207f4906c49/packages/f90d1311-a9e6-400f-bade-b30aa5e1f12f/osx64.package",
"linux64": "s3://prod.content.theendlessmission.com/upload/us-west-2:12345678-0000-0000-0000-123456789abc/c1a50a88-0441-4c71-b581-0207f4906c49/packages/f90d1311-a9e6-400f-bade-b30aa5e1f12f/linux64.package"
}
]
}| Name | Description | Value |
|---|---|---|
| screenshots | the screenshots to upload | array of Screenshot |
| entities | the entities to upload | array of Entity |
| packages | the asset bundles to upload | array of Package |
| Name | Description | Value |
|---|---|---|
| filename | the unique name of the screenshot with extension | string |
| path | the upload path for the file | string |
| Name | Description | Value |
|---|---|---|
| entityId | the entity ID of this entity as a GUID with dashes | string |
| revisionId | the revision ID of this entity as a GUID with dashes | string |
| path | the upload path for the file | string |
| Name | Description | Value |
|---|---|---|
| packageId | the ID of this package as a GUID with dashes | string |
| win64 | the platform-specific upload path for the win64 file | string |
| osx64 | the platform-specific upload path for the osx64 file | string |
| linux64 | the platform-specific upload path for the linux64 file | string |