{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/cryptodataapi-com/json-schema/cryptodataapi-com-strategy-detail-schema.json",
  "title": "StrategyDetail",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/cryptodataapi-com-openapi.json#/components/schemas/StrategyDetail",
  "properties": {
    "slug": {
      "type": "string",
      "title": "Slug",
      "description": "Stable id; also the anchor on /trading-strategies/{group}"
    },
    "name": {
      "type": "string",
      "title": "Name"
    },
    "group": {
      "type": "string",
      "title": "Group"
    },
    "summary": {
      "type": "string",
      "title": "Summary"
    },
    "timeframe": {
      "type": "string",
      "title": "Timeframe",
      "description": "scalp | intraday | day | swing | position | long-term"
    },
    "complexity": {
      "title": "Complexity",
      "description": "beginner | intermediate | advanced",
      "type": [
        "string",
        "null"
      ]
    },
    "indicators": {
      "items": {
        "$ref": "#/$defs/IndicatorRef"
      },
      "type": "array",
      "title": "Indicators",
      "description": "Indicators the playbook links to or requires; empty when it declares none"
    },
    "endpoints": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Endpoints",
      "description": "CDA endpoints that feed the strategy's inputs"
    },
    "edge": {
      "type": "string",
      "title": "Edge",
      "description": "Why the edge exists (the playbook's edge mechanism); empty when not stated"
    },
    "edge_source": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Edge Source"
    },
    "markets": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Markets"
    },
    "data_required": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Data Required",
      "description": "Raw data inputs as the playbook names them"
    },
    "backtest_status": {
      "title": "Backtest Status",
      "description": "The playbook's own validation status, e.g. untested, cost-corrected, live",
      "type": [
        "string",
        "null"
      ]
    },
    "tags": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Tags"
    },
    "wiki_path": {
      "type": "string",
      "title": "Wiki Path",
      "description": "Full playbook: GET /api/v1/algobrain/page?path={wiki_path}"
    },
    "prompts": {
      "items": {
        "$ref": "#/$defs/AgentPrompt"
      },
      "type": "array",
      "title": "Prompts"
    },
    "source": {
      "type": "string",
      "title": "Source"
    }
  },
  "type": "object",
  "required": [
    "slug",
    "name",
    "group",
    "summary",
    "timeframe",
    "indicators",
    "endpoints",
    "edge",
    "edge_source",
    "markets",
    "data_required",
    "tags",
    "wiki_path",
    "prompts",
    "source"
  ],
  "$defs": {
    "AgentPrompt": {
      "properties": {
        "title": {
          "type": "string",
          "title": "Title"
        },
        "prompt": {
          "type": "string",
          "title": "Prompt",
          "description": "Copy-paste prompt for an AI agent; uses real CDA endpoint paths"
        }
      },
      "type": "object",
      "required": [
        "title",
        "prompt"
      ],
      "title": "AgentPrompt"
    },
    "IndicatorRef": {
      "properties": {
        "slug": {
          "type": "string",
          "title": "Slug"
        },
        "name": {
          "type": "string",
          "title": "Name"
        },
        "group": {
          "type": "string",
          "title": "Group"
        }
      },
      "type": "object",
      "required": [
        "slug",
        "name",
        "group"
      ],
      "title": "IndicatorRef"
    }
  }
}