{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/gen-pro/json-schema/gen-pro-proof-of-genesis-backup-create-schema.json",
  "title": "ProofOfGenesisBackupCreate",
  "description": "Manual or event-triggered request to back up a GEN asset to Walrus.",
  "x-generated": "2026-11-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/gen-pro-openapi.yaml#/components/schemas/ProofOfGenesisBackupCreate",
  "type": "object",
  "properties": {
    "asset_url": {
      "type": "string",
      "description": "GEN asset URL to back up. Preferred field."
    },
    "video_url": {
      "type": "string",
      "description": "Legacy alias for asset_url."
    },
    "asset_type": {
      "type": "string",
      "enum": [
        "video",
        "image"
      ],
      "default": "video"
    },
    "visibility": {
      "type": "string",
      "enum": [
        "private",
        "public"
      ],
      "default": "private",
      "description": "Private assets must be encrypted before upload. Raw private requests are rejected before billing or Walrus work."
    },
    "encrypted": {
      "type": "boolean",
      "default": false,
      "description": "Whether the asset bytes are already encrypted before Walrus upload. Required with encryption_scheme for private assets."
    },
    "encryption_scheme": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 128,
      "description": "Required when visibility is private, e.g. seal/v1."
    },
    "encryption_key_id": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 256,
      "description": "Optional key policy/version identifier for private proof metadata."
    },
    "owner_sui_address": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional customer Sui wallet address that should own the Walrus object. Server-triggered auto-backup can resolve this from the user's Dynamic Sui wallet."
    },
    "source_event": {
      "type": "string",
      "enum": [
        "manual",
        "generated",
        "uploaded",
        "downloaded",
        "published"
      ],
      "default": "manual"
    },
    "content_type": {
      "type": [
        "string",
        "null"
      ]
    },
    "idempotency_key": {
      "type": "string",
      "description": "Stable retry key, e.g. content-resource id plus version."
    },
    "metadata": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "anyOf": [
    {
      "required": [
        "asset_url"
      ]
    },
    {
      "required": [
        "video_url"
      ]
    }
  ]
}