We are introducing environment support to the CLI. CLI versions less than v0.11.0 will continue to work, but once you upgrade you will now need to add the –environment flag to most commands. Example:
ucd buckets list --environment=[ENVIRONMENT_ID] [PROJECT_ID]
You can also save an environment to be used in all future commands by using the config environment command:
ucd config environment [ENVIRONMENT_ID]
To find a list of environments for your project and their corresponding IDs visit the Dashboard. Click on Projects. Find your Project and then click on Environments under Project Settings.
Upload-Lengthheader was deleted after processing requests for LFO, which displayed incorrect usage data in the Dashboard. The header has been reinstated.
content-typeattribute was not properly set for some files when uploaded to GCS. The
content-typemetadata is now explicitly set for GCS objects using the entry’s
content-typeattribute. If the entry does not explicitly have a
content-type, the GCS object will default to
11 - operation cannot be completed due to an incomplete uploadchanged to
11 - You have an entry specified, but the matching file has not been uploaded, or the file size, or md5 hash of what was uploaded does not match.
x-permissionshas been removed;
Added complete field to ReleaseEntry model as well. This indicates that the file that was uploaded matches the size and md5 sum that is expected.
The entries are now saved only if there is an actual change in the entry fields/content. The JSON output for entry create/update commands now contains fields last_modified(its value is changed every time when at least one entry field is actually updated, i.e. entry content is changed) and updated_at(its value is changed every time an update call is made), as opposed to having only last_modified field earlier.
Added new checks and fixed existing checks for Labels and Metadata to prevent updating an entry when unchanged Label and/or Metadata is passed in update API call body.
Added support for unity services gateway requests coming in from the unity dashboard. Changes should not affect external clients.
Updated SSL cert
Added complete flag to the Entry model (which is returned from routes like GetEntry). This indicates that the file that was uploaded matches the size and md5 sum that is expected.
Optimized ReleaseEntry query to improve performance
Return correct error message for content-type issues
Improved logging to increase throughput
Reworked diffs to improve performance and stability
Optimized bulk load versions query to improve performance
Added API endpoint to Create or update entry by path
Added API endpoint to Update entry by path
Added validation to prevent creating bucket with an empty name, CreateBucketByProject.
Added validation to prevent updating bucket with an empty name, UpdateBucket.
Added releasenum param to the Assign a badge endpoint, UpdateBadge. You can now assign a badge based upon the release number or the release id. The new parameter in the payload is ‘releasenum’.
reduce logging to improve performance
properly add latest badge to ListBucketsByProject
Reworked diffs to improve performance and stability
The ‘loading’ field will always be included in the ‘changecount’ model with a boolean value. Previously, the ‘loading’ field was only included when the value was true.
Allow diffs against an empty bucket. You can do this with fromreleasenum=0.
Properly cancel interrupted uploads.
Fixed api permissions documentation definition.
Removed permissions from security nodes and added them as extensions in swagger.
Moved the values from security->permissions to x-permissions
Switched all data validation to use Swagger/Open API standards. Some error message details have change. For instance: ‘releaseid is a required field’ is now ‘releaseid in body is required’
Changed service so that billing is no longer deactivated when the last bucket is deleted for a project. The project needs to be archived to deactivate billing.
Added new params to the release diff entries endpoint: GetReleaseDiffEntries. You can now diff based upon release numbers or release ids. The new query params are ‘fromreleasenum’ and ‘toreleasenum’.
Added filter to the diff entries endpoints GetDiffEntries,GetReleaseDiffEntries. You can now filter entries by using ‘include_states’ and specifying a list of change states. For example: ‘include_states=Add,Delete,Update’
Added new endpoint for Org usage
Added created field to bucket model
Reworked diff generation to prevent locking on uploads
Updated SSL cert
Reworked statistics gathering to improve performance
Moved to stricter caching policy for the client API, to include HEAD requests and 404s
Documentation: fix “Try it out” button
Documentation: added release notes
Added ApiKeyAuth to all routes secured by it in docs.json
Added /orgs GET route
Re-worked file storage to prevent race conditions when uploading identical files (size + hash) with different filenames. The last file completely uploaded is the version that is served.
This release adds support for editing the notes fields on releases after the release has been created
Added a PUT route to releases to update notes on a release after a release has been created.
Added ‘releases update [releaseid] –notes’ to CLI to update notes after a release has been created
Fixed error messages when a user does not have access to perform an operation to inform them they need to be a manager or owner of the project.
This release adds support for resuming uploads and downloads through the management API. Technical details are provided below. The “entries download” command in the CLI has been changed to write to file by default rather than STDOUT.
You can no longer download partial content through the client API. To download content through the client API the size (Content-Size) and MD5 hash (Content-Hash) must match. The client API will return a 404 if they do not match. We still support downloading incomplete files through the management API. Files uploaded before this release will still be available through the client API.
If you upload the expected number of bytes (or more) for a file and the Content-Hash does not match the Upload-Offset will be reset to zero, and you will need to upload again. You can still download the file through the management API for troubleshooting purposes.
Support has been added for tus uploads (https://tus.io/). This includes a POST endpoint for the /content routes. This route is NOT required to be called. It’s simply for tus clients that break without it.
Added x-unity-hash to content status endpoints. This includes md5, crc32c, sha1, and sha256 hashes when available. MD5 should be available for all files. The rest will only be available for new uploads. They headers looks like this:
X-Unity-Hash: md5=4221d002ceb5d3c9e9137e495ceaa647 X-Unity-Hash: crc32c=163c5da7 X-Unity-Hash: sha1=804d716fc5844f1cc5516c8f0be7a480517fdea2 X-Unity-Hash: sha256=b6668cf8c46c7075e18215d922e7812ca082fa6cc34668d00a6c20aee4551fb6
You can now continue a partially uploaded file (or upload in partial segments). When continuing an upload you must start from the returned Upload-Offset or 0 to start over.
The value of x-unity-hash will reflect what has been uploaded with partial uploads.
Any files uploaded before this release will be assumed to be complete if their sizes match. No hash checks will be done.
Any new file uploads will need to have matching Content-Size and Content-Hash MD5 hashes to be added to a release.
BREAKING: When using “entries download” the file will be downloaded to a local file with the same filename as the remote file. Previous behavior downloaded to STDOUT. You can continue to download to stdout using the output argument with a single dash: –output -
BREAKING: When using “entries download” if a file exists and you try to overwrite it the command will fail. You will need to use the –force flag to overwrite the existing file. When using “entries download” you can resume partial downloads. Simply pass the –continue flag.