upload manifest

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.

File Paths

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.)

Example

{
  "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"
    }
  ]
}

Properties

NameDescriptionValue
screenshotsthe screenshots to uploadarray of Screenshot
entitiesthe entities to uploadarray of Entity
packagesthe asset bundles to uploadarray of Package

Screenshot

NameDescriptionValue
filenamethe unique name of the screenshot with extensionstring
paththe upload path for the filestring

Entity

NameDescriptionValue
entityIdthe entity ID of this entity as a GUID with dashesstring
revisionIdthe revision ID of this entity as a GUID with dashesstring
paththe upload path for the filestring

Package

NameDescriptionValue
packageIdthe ID of this package as a GUID with dashesstring
win64the platform-specific upload path for the win64 filestring
osx64the platform-specific upload path for the osx64 filestring
linux64the platform-specific upload path for the linux64 filestring