{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/alpaca/json-schema/alpaca-watchlist-schema.json",
  "title": "Watchlist",
  "description": "Represents a set of securities observed by a user.",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/alpaca-watchlist-api-openapi.yml#/components/schemas/Watchlist",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "Unique identifier of the watchlist itself.\n"
    },
    "account_id": {
      "type": "string",
      "format": "uuid",
      "description": "Unique identifier of the account that owns this watchlist.\n"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "When watchlist was created"
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "When watchlist was last updated"
    },
    "name": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9]+$",
      "description": "User friendly Name of watchlist"
    },
    "assets": {
      "type": "array",
      "description": "The contents of the watchlist, in the order as registered",
      "items": {
        "$ref": "#/$defs/Asset"
      }
    }
  },
  "required": [
    "id",
    "name"
  ],
  "$defs": {
    "Asset": {
      "title": "Asset",
      "type": "object",
      "description": "Assets are sorted by asset class, exchange and symbol. Some assets are not tradable with Alpaca. These assets will be marked with the flag tradable=false",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "description": "Asset ID"
        },
        "class": {
          "$ref": "#/$defs/AssetClass"
        },
        "exchange": {
          "$ref": "#/$defs/Exchange"
        },
        "symbol": {
          "type": "string",
          "description": "The symbol of the asset"
        },
        "name": {
          "type": "string",
          "description": "The official name of the asset"
        },
        "status": {
          "type": "string",
          "enum": [
            "active",
            "inactive"
          ],
          "description": "active or inactive"
        },
        "tradable": {
          "type": "boolean",
          "description": "Asset is tradable on Alpaca or not"
        },
        "marginable": {
          "type": "boolean",
          "description": "Asset is marginable or not"
        },
        "shortable": {
          "type": "boolean",
          "description": "Asset is shortable or not"
        },
        "easy_to_borrow": {
          "type": "boolean",
          "description": "Asset is easy-to-borrow or not (filtering for easy_to_borrow = True is the best way to check whether the name is currently available to short at Alpaca)."
        },
        "fractionable": {
          "type": "boolean",
          "description": "Asset is fractionable or not"
        },
        "last_close_pct_change": {
          "type": "string",
          "format": "decimal",
          "description": "Percent change for the trading day as of last market closure. NOTE: This field is currently in this spec however it may not be present in the production environment at time of publishing. It will be coming in a future update at which point this spec should be updated."
        },
        "last_price": {
          "type": "string",
          "format": "decimal",
          "description": "Most recent available price for this asset on the market. NOTE: This field is currently in this spec however it may not be present in the production environment at time of publishing. It will be coming in a future update at which point this spec should be updated."
        },
        "last_close": {
          "type": "string",
          "description": "Last price of the asset upon market closure on the most recent trading day. NOTE: This field is currently in this spec however it may not be present in the production environment at time of publishing. It will be coming in a future update at which point this spec should be updated.",
          "format": "decimal"
        }
      },
      "required": [
        "id",
        "class",
        "symbol"
      ]
    },
    "AssetClass": {
      "type": "string",
      "enum": [
        "us_equity",
        "crypto"
      ]
    },
    "Exchange": {
      "type": "string",
      "title": "Exchange",
      "description": "Represents the exchange where an asset is traded.\n\nFor Stocks:\n- AMEX\n- ARCA\n- BATS\n- NYSE\n- NASDAQ\n- NYSEARCA\n- OTC\n\nFor Crypto:\n- ERSX\n- FTXU",
      "enum": [
        "AMEX",
        "ARCA",
        "BATS",
        "NYSE",
        "NASDAQ",
        "NYSEARCA",
        "OTC",
        "ERSX",
        "FTXU"
      ]
    }
  }
}