{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/gen-pro/json-schema/gen-pro-agent-core-patch-schema.json",
  "title": "AgentCorePatch",
  "description": "Flat merge-patch body. Send any subset of fields — missing fields are not forwarded.\nUnknown fields return 422. `linked_accounts` and `monitored` use full-list replacement\nsemantics: rows not in the list are deleted. To add without touching others, GET first,\nappend, then PATCH.\n",
  "x-generated": "2026-11-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/gen-pro-openapi.yaml#/components/schemas/AgentCorePatch",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "brand_name": {
      "type": "string",
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 500,
      "description": "Short 2-3 sentence brand summary. NOT full persona — that goes in `personality`."
    },
    "identity_type": {
      "type": "string",
      "enum": [
        "brand",
        "character"
      ]
    },
    "goal": {
      "type": "string",
      "maxLength": 100
    },
    "target_platforms": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10
    },
    "shortform": {
      "type": "boolean"
    },
    "longform": {
      "type": "boolean"
    },
    "onboarding_status": {
      "type": "string",
      "maxLength": 50
    },
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Flat keyword list. If set without `monitored`, auto-mirrored into monitored with item_type='keyword'."
    },
    "monitored": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/MonitoredItem"
      },
      "maxItems": 50,
      "description": "Full inspiration source list (replaces the existing list)."
    },
    "linked_accounts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/LinkedAccount"
      },
      "maxItems": 20
    },
    "personality": {
      "type": "string",
      "maxLength": 20000,
      "description": "Full persona text for the agent."
    },
    "default_user_voice": {
      "$ref": "#/$defs/VoiceRef"
    },
    "proof_of_genesis_enabled": {
      "type": "boolean",
      "description": "Master switch for automatic Backup to Blockchain from asset/vidsheet events."
    },
    "proof_of_genesis_auto_backup_sources": {
      "type": "array",
      "description": "Replace the list of asset events that should trigger automatic Proof of Genesis backups. Empty means no automatic backup.",
      "items": {
        "type": "string",
        "enum": [
          "generated",
          "uploaded",
          "downloaded",
          "published"
        ]
      }
    },
    "proof_of_genesis_auto_backup_asset_types": {
      "type": "array",
      "description": "Replace the list of asset types eligible for automatic Proof of Genesis backup.",
      "items": {
        "type": "string",
        "enum": [
          "video",
          "image"
        ]
      }
    }
  },
  "$defs": {
    "LinkedAccount": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "url"
      ],
      "properties": {
        "id": {
          "type": "integer",
          "description": "Row id if updating an existing row. Omit when adding a new account."
        },
        "url": {
          "type": "string",
          "minLength": 1,
          "maxLength": 500
        },
        "platform": {
          "type": "string",
          "maxLength": 50,
          "description": "tiktok | instagram | youtube | x | linkedin | pinterest | facebook | threads | website | other"
        },
        "display_name": {
          "type": "string",
          "maxLength": 200
        }
      }
    },
    "MonitoredItem": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "handle",
        "item_type"
      ],
      "properties": {
        "handle": {
          "type": "string",
          "minLength": 1,
          "maxLength": 300,
          "description": "For accounts — a @handle or URL. For hashtags — the tag (with or without"
        },
        "item_type": {
          "type": "string",
          "enum": [
            "account",
            "hashtag",
            "keyword"
          ]
        }
      }
    },
    "VoiceRef": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "voice_id"
      ],
      "properties": {
        "voice_id": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "source": {
          "type": "string",
          "enum": [
            "public",
            "user_designed",
            "user_trained",
            "user_elevenlabs"
          ]
        },
        "name": {
          "type": "string",
          "maxLength": 200
        }
      }
    }
  }
}