{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The ID of the sandbox",
      "example": "sandbox123"
    },
    "organizationId": {
      "type": "string",
      "description": "The organization ID of the sandbox",
      "example": "organization123"
    },
    "name": {
      "type": "string",
      "description": "The name of the sandbox",
      "example": "MySandbox"
    },
    "snapshot": {
      "type": "string",
      "description": "The snapshot used for the sandbox",
      "example": "daytonaio/sandbox:latest"
    },
    "user": {
      "type": "string",
      "description": "The user associated with the project",
      "example": "daytona"
    },
    "env": {
      "type": "object",
      "description": "Environment variables for the sandbox",
      "additionalProperties": {
        "type": "string"
      },
      "example": {
        "NODE_ENV": "production"
      }
    },
    "labels": {
      "type": "object",
      "description": "Labels for the sandbox",
      "additionalProperties": {
        "type": "string"
      },
      "example": {
        "daytona.io/public": "true"
      }
    },
    "public": {
      "type": "boolean",
      "description": "Whether the sandbox http preview is public",
      "example": false
    },
    "networkBlockAll": {
      "type": "boolean",
      "description": "Whether to block all network access for the sandbox",
      "example": false
    },
    "networkAllowList": {
      "type": "string",
      "description": "Comma-separated list of allowed CIDR network addresses for the sandbox",
      "example": "192.168.1.0/16,10.0.0.0/24"
    },
    "target": {
      "type": "string",
      "description": "The target environment for the sandbox",
      "example": "local"
    },
    "cpu": {
      "type": "number",
      "description": "The CPU quota for the sandbox",
      "example": 2
    },
    "gpu": {
      "type": "number",
      "description": "The GPU quota for the sandbox",
      "example": 0
    },
    "memory": {
      "type": "number",
      "description": "The memory quota for the sandbox",
      "example": 4
    },
    "disk": {
      "type": "number",
      "description": "The disk quota for the sandbox",
      "example": 10
    },
    "state": {
      "description": "The state of the sandbox",
      "example": "creating",
      "allOf": [
        {
          "type": "string",
          "enum": [
            "creating",
            "restoring",
            "destroyed",
            "destroying",
            "started",
            "stopped",
            "starting",
            "stopping",
            "error",
            "build_failed",
            "pending_build",
            "building_snapshot",
            "unknown",
            "pulling_snapshot",
            "archived",
            "archiving",
            "resizing",
            "snapshotting",
            "forking"
          ],
          "description": "The state of the sandbox"
        }
      ]
    },
    "desiredState": {
      "description": "The desired state of the sandbox",
      "example": "destroyed",
      "allOf": [
        {
          "type": "string",
          "enum": [
            "destroyed",
            "started",
            "stopped",
            "resized",
            "archived"
          ],
          "description": "The desired state of the sandbox"
        }
      ]
    },
    "errorReason": {
      "type": "string",
      "description": "The error reason of the sandbox",
      "example": "The sandbox is not running"
    },
    "recoverable": {
      "type": "boolean",
      "description": "Whether the sandbox error is recoverable.",
      "example": true
    },
    "backupState": {
      "type": "string",
      "description": "The state of the backup",
      "enum": [
        "None",
        "Pending",
        "InProgress",
        "Completed",
        "Error"
      ],
      "example": "None"
    },
    "backupCreatedAt": {
      "type": "string",
      "description": "The creation timestamp of the last backup",
      "example": "2024-10-01T12:00:00Z"
    },
    "autoStopInterval": {
      "type": "number",
      "description": "Auto-stop interval in minutes (0 means disabled)",
      "example": 30
    },
    "autoArchiveInterval": {
      "type": "number",
      "description": "Auto-archive interval in minutes",
      "example": 10080
    },
    "autoDeleteInterval": {
      "type": "number",
      "description": "Auto-delete interval in minutes (negative value means disabled, 0 means delete immediately upon stopping)",
      "example": 30
    },
    "volumes": {
      "description": "Array of volumes attached to the sandbox",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "volumeId": {
            "type": "string",
            "description": "The ID of the volume",
            "example": "volume123"
          },
          "mountPath": {
            "type": "string",
            "description": "The mount path for the volume",
            "example": "/data"
          },
          "subpath": {
            "type": "string",
            "description": "Optional subpath within the volume to mount. When specified, only this S3 prefix will be accessible. When omitted, the entire volume is mounted.",
            "example": "users/alice"
          }
        },
        "required": [
          "volumeId",
          "mountPath"
        ]
      }
    },
    "buildInfo": {
      "description": "Build information for the sandbox",
      "allOf": [
        {
          "type": "object",
          "properties": {
            "dockerfileContent": {
              "type": "string",
              "description": "The Dockerfile content used for the build",
              "example": "FROM node:14\nWORKDIR /app\nCOPY . .\nRUN npm install\nCMD [\"npm\", \"start\"]"
            },
            "contextHashes": {
              "description": "The context hashes used for the build",
              "example": [
                "hash1",
                "hash2"
              ],
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "createdAt": {
              "format": "date-time",
              "type": "string",
              "description": "The creation timestamp"
            },
            "updatedAt": {
              "format": "date-time",
              "type": "string",
              "description": "The last update timestamp"
            },
            "snapshotRef": {
              "type": "string",
              "description": "The snapshot reference",
              "example": "daytonaio/sandbox:latest"
            }
          },
          "required": [
            "createdAt",
            "updatedAt",
            "snapshotRef"
          ]
        }
      ]
    },
    "createdAt": {
      "type": "string",
      "description": "The creation timestamp of the sandbox",
      "example": "2024-10-01T12:00:00Z"
    },
    "updatedAt": {
      "type": "string",
      "description": "The last update timestamp of the sandbox",
      "example": "2024-10-01T12:00:00Z"
    },
    "lastActivityAt": {
      "type": "string",
      "description": "The last activity timestamp of the sandbox",
      "example": "2024-10-01T12:00:00Z"
    },
    "class": {
      "type": "string",
      "description": "The class of the sandbox",
      "enum": [
        "small",
        "medium",
        "large"
      ],
      "example": "small",
      "deprecated": true
    },
    "daemonVersion": {
      "type": "string",
      "description": "The version of the daemon running in the sandbox",
      "example": "1.0.0"
    },
    "runnerId": {
      "type": "string",
      "description": "The runner ID of the sandbox",
      "example": "runner123"
    },
    "toolboxProxyUrl": {
      "type": "string",
      "description": "The toolbox proxy URL for the sandbox",
      "example": "https://proxy.app.daytona.io/toolbox"
    }
  },
  "required": [
    "id",
    "organizationId",
    "name",
    "user",
    "env",
    "labels",
    "public",
    "networkBlockAll",
    "target",
    "cpu",
    "gpu",
    "memory",
    "disk",
    "toolboxProxyUrl"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/daytona-io/refs/heads/main/json-schema/daytona-sandbox-schema.json",
  "title": "Sandbox"
}