Skip to main content
Every backup is a single zip archive. The format is a public contract: each resource in it is a Platform API resource. Refer to the Platform API reference to see the contents of each resource.

Bucket location

Archives are written to your bucket under the backup prefix specified during set up. The default bucket prefix is miru-backups/.
<your-bucket>
miru-backups
miru-backup-20261101T030000Z.zip
miru-backup-20261102T030000Z.zip
...
<sibling-folder>
Each archive is named miru-backup-<timestamp>.zip, where the timestamp is when the backup was taken.

Archive contents

Every archive contains the entire state of the workspace at the time the backup was taken. Unzipping an archive reveals a directory with the following contents:
miru-backup-20261102T030000Z.zip
README.md
manifest.json
resources
api_keys.jsonl
calibrations.jsonl
config_instances.jsonl
config_schema_git_commits.jsonl
config_schemas.jsonl
config_types.jsonl
deployments.jsonl
devices.jsonl
git_commits.jsonl
groups.jsonl
releases.jsonl
users.jsonl
contents
calibrations
cal_123
cal_456
...
config_instances
cfg_inst_123
cfg_inst_456
...
  • README.md lists the resource types in the archive, explains how to read it and links back to these docs.
  • manifest.json describes the archive. See manifest.
  • resources/ holds one file per resource type. See resources.
  • contents/ holds the stored content of each config instance and calibration. See contents.
Every resource type is guaranteed to have a file. An empty file means the workspace had no resources of that type.

Manifest

The manifest is a JSON file that describes the archive.
string
The version of the archive format, as major.minor. See versioning.Example: 0.1
string
The Platform API version of every resource in the archive.Example: 2026-11-04.everglades
string
The ID of the workspace the archive was taken from.Example: wsp_123
timestamp
The point in time the archive captures. Every resource is as it was at this moment.Example: 2026-11-02T03:00:00Z
object
A map of resource types to the number of resources of that type in the archive.

Resources

Each file in resources/ is a JSON Lines file containing one Platform API resource per line. Resources use the Platform API version named in the manifest’s platform_api_version. Some resources include expansion data that the Platform API does not include by default. For example, config_schemas.jsonl includes the schema documents, since there is no dedicated schema documents endpoint in the Platform API. config_schema_git_commits.jsonl links each config schema to the git commits it was pushed from, with the schema’s file paths in each commit. While config schema git commits are not returned as their own resource in the Platform API, they are given their own file in the archive because expanding the config_schema_git_commits expansion on config schemas returns only a singular page of results, which may loose data. Archived devices, releases and config types are included in the archive. Deleted API keys are also included, as resources may have been created from an API key that has since been deleted.

Contents

The contents/ directory contains the stored content of each config instance and calibration. Since these files are so large, they are given their own directory in the archive. Each file in contents/ holds the stored content of one config instance or calibration, named by the resource’s ID:
  • contents/config_instances/<id>
  • contents/calibrations/<id>
The bytes are exactly as they were stored, with no re-encoding.
Last modified on November 6, 2026