{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/creatordb-app/json-schema/creatordb-app-youtube-sponsorship-data-schema.json",
  "title": "YoutubeSponsorshipData",
  "description": "Retrieve data of recently sponsored YouTube videos for a specified creator.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/creatordb-app-openapi.yaml#/components/schemas/YoutubeSponsorshipData",
  "type": "object",
  "properties": {
    "sponsorList": {
      "type": "array",
      "description": "List of sponsors and their associated branded content.",
      "items": {
        "type": "object",
        "description": "A sponsor's branded videos and aggregated performance metrics.",
        "properties": {
          "brandName": {
            "type": "string",
            "description": "The sponsor name."
          },
          "brandId": {
            "type": "string",
            "description": "The official website URL or unique identifier of the sponsor."
          },
          "brandIgIds": {
            "type": "array",
            "description": "The Instagram handles of the sponsor.",
            "items": {
              "type": "string"
            }
          },
          "sponsoredVideos": {
            "type": "array",
            "description": "Recent sponsored YouTube videos data.",
            "items": {
              "type": "object",
              "description": "A recent sponsored YouTube video.",
              "properties": {
                "publishTime": {
                  "type": "integer",
                  "description": "Publish time, represented as a Unix timestamp in milliseconds."
                },
                "contentId": {
                  "type": "string",
                  "description": "The unique identifier. Represented as follows: `https://www.youtube.com/watch?v={contentId}`"
                },
                "title": {
                  "type": "string",
                  "description": "The sponsored video title."
                },
                "description": {
                  "type": "string",
                  "description": "The sponsored video description, including emojis, mentions, URLs, and line breaks."
                },
                "length": {
                  "type": "integer",
                  "description": "Video length in seconds."
                },
                "isSponsored": {
                  "type": "boolean",
                  "description": "`true` if sponsored."
                },
                "isMemberOnly": {
                  "type": "boolean",
                  "description": "`true` if member-only."
                },
                "likes": {
                  "type": "integer",
                  "description": "Number of likes."
                },
                "comments": {
                  "type": "integer",
                  "description": "Number of comments."
                },
                "views": {
                  "type": "integer",
                  "description": "Number of views."
                },
                "engagementRate": {
                  "type": "number",
                  "description": "Engagement rate, rounded to 4th decimal place. <br /> *Engagement Rate &#61; (Likes + Comments) / Views*"
                },
                "hashtags": {
                  "type": "array",
                  "description": "Keywords used in the video description.",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "publishTime",
                "contentId",
                "title",
                "description",
                "length",
                "isSponsored",
                "isMemberOnly",
                "likes",
                "comments",
                "views",
                "engagementRate",
                "hashtags"
              ]
            }
          },
          "sponsoredVideosPerformance": {
            "type": "object",
            "description": "Aggregated performance metrics for sponsored YouTube videos broken down by brands.",
            "properties": {
              "likes": {
                "type": "object",
                "description": "Likes statistics for sponsored YouTube videos broken down by brands.",
                "properties": {
                  "all": {
                    "type": "integer",
                    "description": "Total number of likes across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "avg": {
                    "type": "integer",
                    "description": "Average likes per video for the last 20 sponsored YouTube videos, rounded to an integer.",
                    "minimum": 0
                  },
                  "median": {
                    "type": "integer",
                    "description": "Median number of likes across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "min": {
                    "type": "integer",
                    "description": "Minimum number of likes across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "max": {
                    "type": "integer",
                    "description": "Maximum number of likes across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  }
                },
                "required": [
                  "all",
                  "avg",
                  "median",
                  "min",
                  "max"
                ]
              },
              "comments": {
                "type": "object",
                "description": "Comments statistics for sponsored YouTube videos broken down by brands.",
                "properties": {
                  "all": {
                    "type": "integer",
                    "description": "Total number of comments across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "avg": {
                    "type": "integer",
                    "description": "Average comments per video for the last 20 sponsored YouTube videos, rounded to an integer.",
                    "minimum": 0
                  },
                  "median": {
                    "type": "integer",
                    "description": "Median number of comments across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "min": {
                    "type": "integer",
                    "description": "Minimum number of comments across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "max": {
                    "type": "integer",
                    "description": "Maximum number of comments across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  }
                },
                "required": [
                  "all",
                  "avg",
                  "median",
                  "min",
                  "max"
                ]
              },
              "views": {
                "type": "object",
                "description": "View statistics for sponsored YouTube videos broken down by brands.",
                "properties": {
                  "all": {
                    "type": "integer",
                    "description": "Total number of views across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "avg": {
                    "type": "integer",
                    "description": "Average views per video for the last 20 sponsored YouTube videos, rounded to an integer.",
                    "minimum": 0
                  },
                  "median": {
                    "type": "integer",
                    "description": "Median number of views across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "min": {
                    "type": "integer",
                    "description": "Minimum number of views across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "max": {
                    "type": "integer",
                    "description": "Maximum number of views across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "percentile25": {
                    "type": "integer",
                    "description": "The 25th percentile (first quartile) of views across the last 20 sponsored YouTube videos.",
                    "minimum": 0
                  },
                  "percentile75": {
                    "type": "integer",
                    "description": "The 75th percentile (third quartile) of views across the last 20 sponsored 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": "Length statistics for sponsored YouTube videos broken down by brands.",
                "properties": {
                  "avg": {
                    "type": "integer",
                    "description": "The average sponsored video length in seconds, rounded to an integer.",
                    "minimum": 0
                  }
                },
                "required": [
                  "avg"
                ]
              },
              "engagement": {
                "type": "object",
                "description": "Engagement performance metrics for sponsored YouTube videos broken down by brands.",
                "properties": {
                  "avgEngagementRate": {
                    "type": "number",
                    "description": "Average engagement rate per sponsored video, rounded to 4th decimal place. <br /> - *Engagement Rate &#61; (Likes + Comments)/ Views*",
                    "minimum": 0
                  },
                  "likesPerSubscriber": {
                    "type": "number",
                    "description": "Average number of likes per subscriber for sponsored videos, rounded to 4th decimal place.",
                    "minimum": 0
                  },
                  "commentsPerSubscriber": {
                    "type": "number",
                    "description": "Average number of comments per subscriber for sponsored videos, rounded to 4th decimal place.",
                    "minimum": 0
                  },
                  "viewsPerSubscriber": {
                    "type": "number",
                    "description": "Average number of views per subscriber for sponsored videos, rounded to 4th decimal place.",
                    "minimum": 0
                  },
                  "engagementConsistency": {
                    "type": "object",
                    "description": "Consistency of engagement performance across sponsored videos broken down by brands.",
                    "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"
            ]
          }
        },
        "required": [
          "brandName",
          "brandId",
          "brandIgIds",
          "sponsoredVideos",
          "sponsoredVideosPerformance"
        ]
      }
    }
  }
}