{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/creatordb-app/json-schema/creatordb-app-youtube-performance-data-schema.json",
  "title": "YoutubePerformanceData",
  "description": "Performance metrics.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/creatordb-app-openapi.yaml#/components/schemas/YoutubePerformanceData",
  "type": "object",
  "properties": {
    "contentCountByDays": {
      "type": "object",
      "description": "Number of videos published over different time intervals.",
      "properties": {
        "7d": {
          "type": "integer",
          "description": "Number of videos published in the past 7 days.",
          "minimum": 0
        },
        "30d": {
          "type": "integer",
          "description": "Number of videos published in the past 30 days.",
          "minimum": 0
        },
        "90d": {
          "type": "integer",
          "description": "Number of videos published in the past 90 days.",
          "minimum": 0
        }
      },
      "required": [
        "7d",
        "30d",
        "90d"
      ]
    },
    "ranking": {
      "type": "object",
      "description": "Percentile rankings for various performance metrics, benchmarked at the global, country, or language level. A value of `1.0` indicates top 1%, while `0.5` represents the median.",
      "properties": {
        "totalSubscribers": {
          "type": "object",
          "description": "Percentile rank of the total subscriber count.",
          "properties": {
            "global": {
              "type": "number",
              "description": "Percentile rank compared to all creators in CreatorDB's database.",
              "minimum": 0,
              "maximum": 1
            },
            "country": {
              "type": "number",
              "description": "Percentile rank among creators from the same country.",
              "minimum": 0,
              "maximum": 1
            },
            "language": {
              "type": "number",
              "description": "Percentile rank among creators using the same primary language.",
              "minimum": 0,
              "maximum": 1
            }
          },
          "required": [
            "global",
            "country",
            "language"
          ]
        },
        "avgEngagementRate": {
          "type": "object",
          "description": "Percentile rank of the average engagement rate for the last 20 YouTube videos.",
          "properties": {
            "global": {
              "type": "number",
              "description": "Percentile rank compared to all creators in CreatorDB's database.",
              "minimum": 0,
              "maximum": 1
            },
            "country": {
              "type": "number",
              "description": "Percentile rank among creators from the same country.",
              "minimum": 0,
              "maximum": 1
            },
            "language": {
              "type": "number",
              "description": "Percentile rank among creators using the same primary language.",
              "minimum": 0,
              "maximum": 1
            }
          },
          "required": [
            "global",
            "country",
            "language"
          ]
        }
      },
      "required": [
        "totalSubscribers",
        "avgEngagementRate"
      ]
    },
    "videosPerformanceRecent": {
      "type": "object",
      "description": "Performance metrics of the creator's last 20 YouTube videos.",
      "properties": {
        "likes": {
          "type": "object",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of likes across the last 20 YouTube videos.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average likes per video for the last 20 YouTube videos, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of likes across the last 20 YouTube videos.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of likes across the last 20 YouTube videos.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of likes across the last 20 YouTube videos.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max"
          ]
        },
        "comments": {
          "type": "object",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of comments across the last 20 YouTube videos.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average comments per video for last 20 YouTube videos, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of comments across the last 20 YouTube videos.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of comments across the last 20 YouTube videos.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of comments across the last 20 YouTube videos.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max"
          ]
        },
        "views": {
          "type": "object",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of views across the last 20 YouTube videos.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average views per video for the last 20 YouTube videos, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of views across the last 20 YouTube videos.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of views across the last 20 YouTube videos.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of views across the last 20 YouTube videos.",
              "minimum": 0
            },
            "percentile25": {
              "type": "integer",
              "description": "The 25th percentile (first quartile) of views across the last 20 YouTube videos.",
              "minimum": 0
            },
            "percentile75": {
              "type": "integer",
              "description": "The 75th percentile (third quartile) of views across the last 20 YouTube videos.",
              "minimum": 0
            },
            "iqr": {
              "type": "integer",
              "description": "Interquartile range (IQR) of views, calculated from the 25th to the 75th percentile, representing the spread of the middle 50%.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max",
            "percentile25",
            "percentile75",
            "iqr"
          ]
        },
        "length": {
          "type": "object",
          "description": "Video length in seconds.",
          "properties": {
            "avg": {
              "type": "integer",
              "description": "Average video length in seconds, rounded to an integer.",
              "minimum": 0
            }
          },
          "required": [
            "avg"
          ]
        },
        "engagement": {
          "type": "object",
          "description": "Engagement performance metrics including engagement rates, per-subscriber statistics, and consistency analysis.",
          "properties": {
            "avgEngagementRate": {
              "type": "number",
              "description": "Average engagement rate per video, rounded to 4th decimal place. <br />\n- *Engagement Rate = (Likes + Comments)/ Views*",
              "minimum": 0
            },
            "likesPerSubscriber": {
              "type": "number",
              "description": "Average likes per subscriber for the last 20 YouTube videos, rounded to 4th decimal place.",
              "minimum": 0
            },
            "commentsPerSubscriber": {
              "type": "number",
              "description": "Average comments per subscriber for the last 20 YouTube videos, rounded to 4th decimal place.",
              "minimum": 0
            },
            "viewsPerSubscriber": {
              "type": "number",
              "description": "Average views per subscriber for the last 20 YouTube videos, rounded to 4th decimal place.",
              "minimum": 0
            },
            "engagementConsistency": {
              "type": "object",
              "description": "Consistency of engagement performance across the last 20 YouTube videos.",
              "properties": {
                "cv": {
                  "type": "number",
                  "description": "*cv &#61; Standard Deviation of Engagement Rate/ Mean Engagement Rate* <br />\n- The value is rounded to 4th decimal place. <br />\n- Lower values indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "medianVsMean": {
                  "type": "number",
                  "description": "*medianVsMean &#61; Median Engagement Rate/ Mean Engagement Rate* <br />\n- The value is rounded to 4th decimal place. <br />\n- Values closer to `1` indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "topBottomRatio": {
                  "type": "number",
                  "description": "*topBottomRatio &#61; avg(Top 3 Engagement)/ avg(Bottom 3 Engagement)* <br />\n- The value is rounded to 4th decimal place. <br />\n- Lower ratios indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "consistencyScore": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "*consistencyScore &#61; 100 - [(cvScore*weight_cv) + (topBottomScore*weight_topBottom) + (medianVsMeanScore*weight_medianVsMean)]* <br />\n- The score is rounded to an integer. <br />\n- A higher score indicates more stable and consistent performance. <br />\n- If any of the three indicators is `0`, the `consistencyScore` will be null.",
                  "minimum": 0,
                  "maximum": 100
                },
                "consistencyLevel": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "high",
                    "moderate",
                    "low",
                    null
                  ],
                  "description": "A qualitative label based on the `consistencyScore`: <br />\n- high: 81 - 100 <br />\n- moderate: 51 - 80 <br />\n- low: 0 - 50 <br />\n- Returns `null` when `consistencyScore` is `null`."
                }
              },
              "required": [
                "cv",
                "medianVsMean",
                "topBottomRatio",
                "consistencyScore",
                "consistencyLevel"
              ]
            }
          },
          "required": [
            "avgEngagementRate",
            "likesPerSubscriber",
            "commentsPerSubscriber",
            "viewsPerSubscriber",
            "engagementConsistency"
          ]
        }
      },
      "required": [
        "likes",
        "comments",
        "views",
        "length",
        "engagement"
      ]
    },
    "shortsPerformanceRecent": {
      "type": "object",
      "description": "Performance metrics of the creator's last 20 YouTube shorts.",
      "properties": {
        "likes": {
          "type": "object",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of likes across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average likes per short for the last 20 YouTube shorts, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of likes across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of likes across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of likes across the last 20 YouTube shorts.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max"
          ]
        },
        "comments": {
          "type": "object",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of comments across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average comments per short, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of comments across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of comments across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of comments across the last 20 YouTube shorts.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max"
          ]
        },
        "views": {
          "type": "object",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of views across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average views per short for the last 20 YouTube shorts, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of views across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of views across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of views across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "percentile25": {
              "type": "integer",
              "description": "The 25th percentile (first quartile) of views across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "percentile75": {
              "type": "integer",
              "description": "The 75th percentile (third quartile) of views across the last 20 YouTube shorts.",
              "minimum": 0
            },
            "iqr": {
              "type": "integer",
              "description": "Interquartile range (IQR) of views, calculated as the 25th to 75th percentile, representing the spread of the middle 50%.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max",
            "percentile25",
            "percentile75",
            "iqr"
          ]
        },
        "length": {
          "type": "object",
          "description": "Shorts length statistics in seconds.",
          "properties": {
            "avg": {
              "type": "integer",
              "description": "The average shorts length in seconds, rounded to an integer.",
              "minimum": 0
            }
          },
          "required": [
            "avg"
          ]
        },
        "engagement": {
          "type": "object",
          "description": "Engagement performance metrics of shorts including rates, per-subscriber statistics and consistency analysis.",
          "properties": {
            "avgEngagementRate": {
              "type": "number",
              "description": "Average engagement rate per short, rounded to 4th decimal place. <br /> \n- *Engagement Rate = (Likes + Comments)/ Views*.",
              "minimum": 0
            },
            "likesPerSubscriber": {
              "type": "number",
              "description": "Average likes per subscriber for the last 20 YouTube shorts, rounded to 4th decimal place.",
              "minimum": 0
            },
            "commentsPerSubscriber": {
              "type": "number",
              "description": "Average comments per subscriber for the last 20 YouTube shorts, rounded to 4th decimal place.",
              "minimum": 0
            },
            "viewsPerSubscriber": {
              "type": "number",
              "description": "Average views per subscriber for the last 20 YouTube shorts, rounded to 4th decimal place.",
              "minimum": 0
            },
            "engagementConsistency": {
              "type": "object",
              "description": "Consistency of engagement performance across the last 20 YouTube shorts.",
              "properties": {
                "cv": {
                  "type": "number",
                  "description": "*cv &#61; Standard Deviation of Engagement Rate/Mean Engagement Rate* <br />\n- The value is rounded to 4th decimal place. <br />\n- Lower values indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "medianVsMean": {
                  "type": "number",
                  "description": "*medianVsMean &#61; Median Engagement Rate/ Mean Engagement Rate* <br />\n- The value is rounded to 4th decimal place. <br />\n- Values closer to `1` indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "topBottomRatio": {
                  "type": "number",
                  "description": "*topBottomRatio &#61; avg(Top 3 Engagement)/avg(Bottom 3 Engagement)* <br />\n- The value is rounded to 4th decimal place. <br />\n- Lower ratios indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "consistencyScore": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "*consistencyScore &#61; 100 - [(cvScore\\*weight_cv) + (topBottomScore\\*weight_topBottom) + (medianVsMeanScore\\*weight_medianVsMean)]* <br />\n- The score is rounded to an integer. <br />\n- A higher score indicates more stable and consistent performance. <br />\n- If any of the three indicators is `0`, the `consistencyScore` will be `null`.",
                  "minimum": 0,
                  "maximum": 100
                },
                "consistencyLevel": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "high",
                    "moderate",
                    "low",
                    null
                  ],
                  "description": "A qualitative label based on the `consistencyScore`: <br />\n- high: 81 - 100 <br />\n- moderate: 51 - 80 <br />\n- low: 0 - 50 <br />\n- Returns `null` when `consistencyScore` is `null`."
                }
              },
              "required": [
                "cv",
                "medianVsMean",
                "topBottomRatio",
                "consistencyScore",
                "consistencyLevel"
              ]
            }
          },
          "required": [
            "avgEngagementRate",
            "likesPerSubscriber",
            "commentsPerSubscriber",
            "viewsPerSubscriber",
            "engagementConsistency"
          ]
        }
      },
      "required": [
        "likes",
        "comments",
        "views",
        "length",
        "engagement"
      ]
    },
    "videosPerformanceAll": {
      "type": "object",
      "description": "Creator's video performance metrics for the last 800 YouTube videos.",
      "properties": {
        "likes": {
          "type": "object",
          "description": "Likes statistics for the last 800 YouTube videos.",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of likes across the last 800 YouTube videos.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average likes per video for the last 800 YouTube videos, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of likes across the last 800 YouTube videos.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of likes across the last 800 YouTube videos.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of likes across the last 800 YouTube videos.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max"
          ]
        },
        "comments": {
          "type": "object",
          "description": "Comments statistics for the last 800 YouTube videos.",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of comments across the last 800 YouTube videos.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average comments per video for the last 800 YouTube videos, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of comments across the last 800 YouTube videos.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of comments across the last 800 YouTube videos.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of comments across the last 800 YouTube videos.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max"
          ]
        },
        "views": {
          "type": "object",
          "description": "View statistics for the last 800 YouTube videos.",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of views across the last 800 YouTube videos.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average views per video for the last 800 YouTube videos, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of views across the last 800 YouTube videos.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of views across the last 800 YouTube videos.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of views across the last 800 YouTube videos.",
              "minimum": 0
            },
            "percentile25": {
              "type": "integer",
              "description": "The 25th percentile (first quartile) of views across the last 800 YouTube videos.",
              "minimum": 0
            },
            "percentile75": {
              "type": "integer",
              "description": "The 75th percentile (third quartile) of views across the last 800 YouTube videos.",
              "minimum": 0
            },
            "iqr": {
              "type": "integer",
              "description": "Interquartile range (IQR) of views, calculated as 25th to 75th percentile, representing the spread of the middle 50%.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max",
            "percentile25",
            "percentile75",
            "iqr"
          ]
        },
        "length": {
          "type": "object",
          "description": "Video length statistics for the last 800 YouTube videos.",
          "properties": {
            "avg": {
              "type": "integer",
              "description": "Average video length in seconds, rounded to an integer.",
              "minimum": 0
            }
          },
          "required": [
            "avg"
          ]
        },
        "engagement": {
          "type": "object",
          "description": "Engagement metrics for the last 800 YouTube videos.",
          "properties": {
            "avgEngagementRate": {
              "type": "number",
              "description": "Average engagement rate per video, rounded to 4th decimal place. <br /> \n- *Engagement Rate = (Likes + Comments)/ Views*",
              "minimum": 0
            },
            "likesPerSubscriber": {
              "type": "number",
              "description": "Average likes per subscriber for the last 800 YouTube videos, rounded to 4th decimal place.",
              "minimum": 0
            },
            "commentsPerSubscriber": {
              "type": "number",
              "description": "Average comments per subscriber for the last 800 YouTube videos, rounded to 4th decimal place.",
              "minimum": 0
            },
            "viewsPerSubscriber": {
              "type": "number",
              "description": "Average views per subscriber for the last 800 YouTube videos, rounded to 4th decimal place.",
              "minimum": 0
            },
            "engagementConsistency": {
              "type": "object",
              "description": "Consistency of engagement performance across the last 800 YouTube videos.",
              "properties": {
                "cv": {
                  "type": "number",
                  "description": "*cv &#61; Standard Deviation of Engagement Rate/Mean Engagement Rate* <br />\n- The value is rounded to 4th decimal place. <br />\n- Lower values indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "medianVsMean": {
                  "type": "number",
                  "description": "*medianVsMean &#61; Median Engagement Rate/ Mean Engagement Rate* <br />\n- The value is rounded to 4th decimal place. <br />\n- Values closer to `1` indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "topBottomRatio": {
                  "type": "number",
                  "description": "*topBottomRatio &#61; avg(Top 3 Engagement)/avg(Bottom 3 Engagement)* <br />\n- The value is rounded to 4th decimal place. <br />\n- Lower ratios indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "consistencyScore": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "*consistencyScore &#61; 100 - [(cvScore\\*weight_cv) + (topBottomScore\\*weight_topBottom) + (medianVsMeanScore\\*weight_medianVsMean)]* <br />\n- The score is rounded to an integer. <br />\n- A higher score indicates more stable and consistent performance. <br />\n- If any of the three indicators is `0`, the `consistencyScore` will be `null`.",
                  "minimum": 0,
                  "maximum": 100
                },
                "consistencyLevel": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "high",
                    "moderate",
                    "low",
                    null
                  ],
                  "description": "A qualitative label based on the `consistencyScore`: <br />\n- high: 81 - 100 <br />\n- moderate: 51 - 80 <br />\n- low: 0 - 50 <br />\n- Returns `null` when `consistencyScore` is `null`."
                }
              },
              "required": [
                "cv",
                "medianVsMean",
                "topBottomRatio",
                "consistencyScore",
                "consistencyLevel"
              ]
            }
          },
          "required": [
            "avgEngagementRate",
            "likesPerSubscriber",
            "commentsPerSubscriber",
            "viewsPerSubscriber",
            "engagementConsistency"
          ]
        }
      },
      "required": [
        "likes",
        "comments",
        "views",
        "length",
        "engagement"
      ]
    },
    "shortsPerformanceAll": {
      "type": "object",
      "description": "Performance metrics for the last 800 YouTube shorts.",
      "properties": {
        "likes": {
          "type": "object",
          "description": "Likes statistics for the last 800 YouTube shorts.",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of likes across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average likes per short, for the last 800 YouTube shorts, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of likes across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of likes across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of likes across the last 800 YouTube shorts.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max"
          ]
        },
        "comments": {
          "type": "object",
          "description": "Comments statistics for the last 800 YouTube shorts.",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of comments across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average comments per short for the last 800 YouTube shorts, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of comments across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of comments across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of comments across the last 800 YouTube shorts.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max"
          ]
        },
        "views": {
          "type": "object",
          "description": "Views statistics for the last 800 YouTube shorts.",
          "properties": {
            "all": {
              "type": "integer",
              "description": "Total number of views across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "avg": {
              "type": "integer",
              "description": "Average views per short for the last 800 YouTube shorts, rounded to an integer.",
              "minimum": 0
            },
            "median": {
              "type": "integer",
              "description": "Median number of views across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "min": {
              "type": "integer",
              "description": "Minimum number of views across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "max": {
              "type": "integer",
              "description": "Maximum number of views across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "percentile25": {
              "type": "integer",
              "description": "The 25th percentile (first quartile) of views across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "percentile75": {
              "type": "integer",
              "description": "The 75th percentile (third quartile) of views across the last 800 YouTube shorts.",
              "minimum": 0
            },
            "iqr": {
              "type": "integer",
              "description": "Interquartile range (IQR) of views calculated as 25th to 75th percentile, representing the spread of the middle 50%.",
              "minimum": 0
            }
          },
          "required": [
            "all",
            "avg",
            "median",
            "min",
            "max",
            "percentile25",
            "percentile75",
            "iqr"
          ]
        },
        "length": {
          "type": "object",
          "description": "Length statistics for the last 800 YouTube shorts.",
          "properties": {
            "avg": {
              "type": "integer",
              "description": "Average shorts length in seconds, rounded to an integer.",
              "minimum": 0
            }
          },
          "required": [
            "avg"
          ]
        },
        "engagement": {
          "type": "object",
          "description": "Engagement metrics for the last 800 YouTube shorts.",
          "properties": {
            "avgEngagementRate": {
              "type": "number",
              "description": "The average engagement rate per YouTube short, rounded to 4th decimal place. <br />\n- *Engagement Rate = (Likes + Comments)/Views*.",
              "minimum": 0
            },
            "likesPerSubscriber": {
              "type": "number",
              "description": "Average likes per subscriber for the last 800 YouTube shorts, rounded to 4th decimal place.",
              "minimum": 0
            },
            "commentsPerSubscriber": {
              "type": "number",
              "description": "Average comments per subscriber for the last 800 YouTube shorts, rounded to 4th decimal place.",
              "minimum": 0
            },
            "viewsPerSubscriber": {
              "type": "number",
              "description": "Average views per subscriber for the last 800 YouTube shorts, rounded to 4th decimal place.",
              "minimum": 0
            },
            "engagementConsistency": {
              "type": "object",
              "description": "Consistency of engagement performance across the last 800 YouTube shorts.",
              "properties": {
                "cv": {
                  "type": "number",
                  "description": "*cv &#61; Standard Deviation of Engagement Rate/Mean Engagement Rate* <br />\n- The value is rounded to 4th decimal place. <br />\n- Lower values indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "medianVsMean": {
                  "type": "number",
                  "description": "*medianVsMean &#61; Median Engagement Rate/ Mean Engagement Rate* <br />\n- The value is rounded to 4th decimal place. <br />\n- Values closer to `1` indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "topBottomRatio": {
                  "type": "number",
                  "description": "*topBottomRatio &#61; avg(Top 3 Engagement)/avg(Bottom 3 Engagement)* <br />\n- The value is rounded to 4th decimal place. <br />\n- Lower ratios indicate more consistent performance. <br />\n- *A value of `0` indicates insufficient data.*",
                  "minimum": 0
                },
                "consistencyScore": {
                  "type": [
                    "integer",
                    "null"
                  ],
                  "description": "*consistencyScore &#61; 100 - [(cvScore\\*weight_cv) + (topBottomScore\\*weight_topBottom) + (medianVsMeanScore\\*weight_medianVsMean)]* <br />\n-  The score is rounded to an integer. <br />\n-  A higher score indicates more stable and consistent performance. <br />\n- If any of the three indicators is `0`, the `consistencyScore` will be `null`.",
                  "minimum": 0,
                  "maximum": 100
                },
                "consistencyLevel": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "enum": [
                    "high",
                    "moderate",
                    "low",
                    null
                  ],
                  "description": "A qualitative label based on the `consistencyScore`: <br />\n- high: 81 - 100 <br />\n- moderate: 51 - 80 <br />\n- low: 0 - 50 <br />\n* Returns `null` when `consistencyScore` is `null`."
                }
              },
              "required": [
                "cv",
                "medianVsMean",
                "topBottomRatio",
                "consistencyScore",
                "consistencyLevel"
              ]
            }
          },
          "required": [
            "avgEngagementRate",
            "likesPerSubscriber",
            "commentsPerSubscriber",
            "viewsPerSubscriber",
            "engagementConsistency"
          ]
        }
      },
      "required": [
        "likes",
        "comments",
        "views",
        "length",
        "engagement"
      ]
    },
    "recentVideosGrowth": {
      "type": "object",
      "description": "Growth metrics for recent YouTube videos across 7, 30, and 90-day periods.",
      "properties": {
        "g7": {
          "type": "object",
          "description": "Growth metrics over 7 days.",
          "properties": {
            "avgViews": {
              "type": "number",
              "description": "Growth rate of average views, rounded to 4th decimal place."
            },
            "engagementRate": {
              "type": "number",
              "description": "Growth rate of engagement rate, rounded to 4th decimal place."
            }
          },
          "required": [
            "avgViews",
            "engagementRate"
          ]
        },
        "g30": {
          "type": "object",
          "description": "Growth metrics over 30 days.",
          "properties": {
            "avgViews": {
              "type": "number",
              "description": "The growth rate of average views, rounded to 4th decimal place."
            },
            "engagementRate": {
              "type": "number",
              "description": "Growth rate of engagement rate, rounded to 4th decimal place."
            }
          },
          "required": [
            "avgViews",
            "engagementRate"
          ]
        },
        "g90": {
          "type": "object",
          "description": "Growth metrics over 90 days.",
          "properties": {
            "avgViews": {
              "type": "number",
              "description": "Growth rate of average views, rounded to 4th decimal place."
            },
            "engagementRate": {
              "type": "number",
              "description": "Growth rate of engagement rate, rounded to 4th decimal place."
            }
          },
          "required": [
            "avgViews",
            "engagementRate"
          ]
        }
      },
      "required": [
        "g7",
        "g30",
        "g90"
      ]
    },
    "recentShortsGrowth": {
      "type": "object",
      "description": "Growth metrics for recent shorts across 7, 30, and 90-day periods.",
      "properties": {
        "g7": {
          "type": "object",
          "description": "Growth metrics over 7 days.",
          "properties": {
            "avgViews": {
              "type": "number",
              "description": "Growth rate of average views, rounded to 4th decimal place."
            },
            "engagementRate": {
              "type": "number",
              "description": "Growth rate of engagement rate, rounded to 4th decimal place."
            }
          },
          "required": [
            "avgViews",
            "engagementRate"
          ]
        },
        "g30": {
          "type": "object",
          "description": "Growth metrics over 30 days.",
          "properties": {
            "avgViews": {
              "type": "number",
              "description": "Growth rate of average views, rounded to 4th decimal place."
            },
            "engagementRate": {
              "type": "number",
              "description": "Growth rate of engagement rate, rounded to 4th decimal place."
            }
          },
          "required": [
            "avgViews",
            "engagementRate"
          ]
        },
        "g90": {
          "type": "object",
          "description": "Growth metrics over 90 days.",
          "properties": {
            "avgViews": {
              "type": "number",
              "description": "Growth rate of average views, rounded to 4th decimal place."
            },
            "engagementRate": {
              "type": "number",
              "description": "Growth rate of engagement rate, rounded to 4th decimal place."
            }
          },
          "required": [
            "avgViews",
            "engagementRate"
          ]
        }
      },
      "required": [
        "g7",
        "g30",
        "g90"
      ]
    },
    "videoPrice": {
      "type": "object",
      "description": "Estimated video prices, including Cost Per Mille (CPM) and per-video rate ranges.",
      "properties": {
        "cpmLow": {
          "type": "number",
          "description": "Lower bound of the estimated Cost Per Mille (CPM) range.",
          "minimum": 0
        },
        "cpmRaw": {
          "type": "number",
          "description": "Estimated average Cost Per Mille (CPM).",
          "minimum": 0
        },
        "cpmHigh": {
          "type": "number",
          "description": "Upper bound of the estimated Cost Per Mille (CPM) range.",
          "minimum": 0
        },
        "priceLow": {
          "type": "number",
          "description": "Lower bound of the estimated media value for a single piece of content.",
          "minimum": 0
        },
        "priceRaw": {
          "type": "number",
          "description": "Estimated media value for a single piece of content.",
          "minimum": 0
        },
        "priceHigh": {
          "type": "number",
          "description": "Upper bound of the estimated media value for a single piece of content.",
          "minimum": 0
        }
      },
      "required": [
        "cpmLow",
        "cpmRaw",
        "cpmHigh",
        "priceLow",
        "priceRaw",
        "priceHigh"
      ]
    },
    "shortsPrice": {
      "type": "object",
      "description": "Estimated YouTube Shorts prices, including CPM and per-video rate ranges.",
      "properties": {
        "cpmLow": {
          "type": "number",
          "description": "Lower bound of the estimated Cost Per Mille (CPM) range.",
          "minimum": 0
        },
        "cpmRaw": {
          "type": "number",
          "description": "Estimated average Cost Per Mille (CPM) for the creator.",
          "minimum": 0
        },
        "cpmHigh": {
          "type": "number",
          "description": "Upper bound of the estimated Cost Per Mille (CPM) range.",
          "minimum": 0
        },
        "priceLow": {
          "type": "number",
          "description": "Lower bound of the estimated media value for a single piece of content.",
          "minimum": 0
        },
        "priceRaw": {
          "type": "number",
          "description": "Estimated media value for a single piece of content.",
          "minimum": 0
        },
        "priceHigh": {
          "type": "number",
          "description": "Upper bound of the estimated media value for a single piece of content.",
          "minimum": 0
        }
      },
      "required": [
        "cpmLow",
        "cpmRaw",
        "cpmHigh",
        "priceLow",
        "priceRaw",
        "priceHigh"
      ]
    }
  }
}