{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/tickfeed-pro/json-schema/tickfeed-pro-price-response-schema.json",
  "title": "PriceResponse",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/tickfeed-pro-openapi.json#/components/schemas/PriceResponse",
  "properties": {
    "symbol": {
      "type": "string",
      "title": "Symbol"
    },
    "bid": {
      "type": "number",
      "title": "Bid"
    },
    "ask": {
      "type": "number",
      "title": "Ask"
    },
    "spread": {
      "type": "number",
      "title": "Spread",
      "description": "ask - bid, in price units (quote currency per unit)."
    },
    "spread_points": {
      "type": "integer",
      "title": "Spread Points",
      "description": "Spread in points (1 point = `point` price units)."
    },
    "point": {
      "type": "number",
      "title": "Point"
    },
    "tick_time": {
      "type": "string",
      "format": "date-time",
      "title": "Tick Time",
      "description": "Time of the latest tick, UTC."
    },
    "age_seconds": {
      "type": "number",
      "title": "Age Seconds"
    },
    "freshness": {
      "type": "string",
      "enum": [
        "fresh",
        "market_closed",
        "stale"
      ],
      "title": "Freshness",
      "description": "fresh: last tick no older than stale_after_seconds. market_closed: older, but the market is outside its scheduled session (or within the grace period right after it opened). stale: older while the market is scheduled to be trading, which indicates a feed problem."
    },
    "market_open": {
      "type": "boolean",
      "title": "Market Open"
    },
    "stale_after_seconds": {
      "type": "integer",
      "title": "Stale After Seconds"
    },
    "source": {
      "type": "string",
      "title": "Source",
      "description": "live = real-time feed; cache = the last real quote, returned while the feed is briefly interrupted (check freshness)",
      "default": "live"
    }
  },
  "type": "object",
  "required": [
    "symbol",
    "bid",
    "ask",
    "spread",
    "spread_points",
    "point",
    "tick_time",
    "age_seconds",
    "freshness",
    "market_open",
    "stale_after_seconds"
  ]
}