{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/equity-rank-com/json-schema/equity-rank-com-place-order-request-schema.json",
  "title": "PlaceOrderRequest",
  "description": "Request body for POST /api/admin/schwab/orders/place.\n\nValidates required price/offset fields per order_type at the FastAPI 422\nlayer, before any Schwab call.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/equity-rank-com-admin-api-openapi.yml#/components/schemas/PlaceOrderRequest",
  "properties": {
    "account_hash": {
      "type": "string",
      "title": "Account Hash"
    },
    "symbol": {
      "type": "string",
      "title": "Symbol"
    },
    "side": {
      "type": "string",
      "title": "Side"
    },
    "quantity": {
      "type": "number",
      "title": "Quantity"
    },
    "order_type": {
      "type": "string",
      "enum": [
        "MARKET",
        "LIMIT",
        "STOP",
        "STOP_LIMIT",
        "TRAILING_STOP"
      ],
      "title": "Order Type"
    },
    "asset_type": {
      "type": "string",
      "enum": [
        "EQUITY",
        "OPTION"
      ],
      "title": "Asset Type",
      "default": "EQUITY"
    },
    "limit_price": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Limit Price"
    },
    "stop_price": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Stop Price"
    },
    "trailing_offset": {
      "anyOf": [
        {
          "type": "number"
        },
        {
          "type": "null"
        }
      ],
      "title": "Trailing Offset"
    },
    "trailing_basis": {
      "type": "string",
      "enum": [
        "PERCENT",
        "VALUE"
      ],
      "title": "Trailing Basis",
      "default": "PERCENT"
    }
  },
  "type": "object",
  "required": [
    "account_hash",
    "symbol",
    "side",
    "quantity",
    "order_type"
  ]
}