{
  "description": "SandboxConfig is cluster-scoped configuration describing the sandbox binaries\nfor a sandbox runtime family. It is referenced (or defaulted) by WorkerPools\nand decouples sandbox binary selection from ActorTemplate.",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": [
        "object",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "description": "spec defines the desired state of SandboxConfig",
      "properties": {
        "assets": {
          "additionalProperties": {
            "additionalProperties": {
              "additionalProperties": false,
              "description": "AssetFile is one content-addressed file that atelet fetches for a sandbox\nruntime (e.g. the gVisor runsc binary, or a micro-VM kernel/firmware/config).",
              "properties": {
                "sha256": {
                  "description": "SHA256 is the lower-case hex SHA256 of the asset. It both names the cached\nfile (preventing collisions) and verifies the download's integrity.",
                  "pattern": "^[a-f0-9]{64}$",
                  "type": "string"
                },
                "url": {
                  "description": "URL is where to download the asset from (e.g. a gs:// URL). It may be\nfetched anonymously or with credentials depending on atelet's\nconfiguration.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "sha256",
                "url"
              ],
              "type": "object"
            },
            "type": "object"
          },
          "description": "Assets is the set of files atelet fetches for this runtime, keyed first by\narchitecture (GOARCH, e.g. \"amd64\", \"arm64\") and then by asset name. The\nasset names are interpreted by the sandbox backend: gVisor expects a\n\"gvisor\" asset (the release's gvisor.tar.bz2, which atelet extracts so\nthe gvisor-bin/ helpers sit next to runsc; a legacy bare-binary \"runsc\"\nasset is still accepted); a micro-VM backend expects several (e.g.\n\"cloud-hypervisor\", \"kata-kernel\", \"kata-image\"). The schema is\nintentionally generic; per-class requirements are enforced by a\nValidatingAdmissionPolicy.",
          "type": [
            "object",
            "null"
          ]
        },
        "default": {
          "description": "Default marks this SandboxConfig as the cluster-wide default for its\nSandboxClass. A WorkerPool with no explicit SandboxConfigName resolves to\nthe default config for its SandboxClass. At most one default is expected\nper SandboxClass.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "pauseImage": {
          "description": "PauseImage is the container image used as the root sandbox container.\nIt holds the sandbox's namespaces and runs no workload code, so it is an\nimplementation detail of the sandbox rather than something actor authors\nchoose. It is captured in the snapshot manifest alongside the sandbox\nbinaries, so a restore always re-creates the sandbox from the same image\nthe snapshot was taken with.\n\nTypically, set it to [1] for on-gcp, and [2] for off-gcp\n\n  - [1] gcr.io/gke-release/pause@sha256:bcbd57ba5653580ec647b16d8163cdd1112df3609129b01f912a8032e48265da\n  - [2] registry.k8s.io/pause:3.10.2@sha256:f548e0e8e3dc1896ca956272154dde3314e8cc4fde0a57577ee9fa1c63f5baf4",
          "type": "string",
          "x-kubernetes-validations": [
            {
              "message": "All images must be pinned (changing the image invalidates snapshots)",
              "rule": "self.contains('@')"
            }
          ]
        },
        "sandboxClass": {
          "default": "gvisor",
          "description": "SandboxClass is the sandbox runtime family this config applies to. A\nWorkerPool only uses SandboxConfigs whose SandboxClass matches its own.",
          "enum": [
            "gvisor",
            "microvm"
          ],
          "type": "string"
        }
      },
      "required": [
        "pauseImage",
        "sandboxClass"
      ],
      "type": "object"
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}