{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/flashdata-dev/json-schema/flashdata-dev-data-source-schema.json",
  "title": "DataSource",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/flashdata-dev-catalog-api-openapi.yml#/components/schemas/DataSource",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "id",
    "name",
    "category",
    "product",
    "modes",
    "inputSchema",
    "estimatedCredits",
    "requiresStorageDestination"
  ],
  "properties": {
    "id": {
      "type": "string",
      "enum": [
        "google_search",
        "google_images",
        "google_news",
        "google_shopping",
        "google_videos",
        "google_places",
        "youtube_search",
        "youtube_search_extended",
        "youtube_metadata",
        "youtube_transcript",
        "youtube_captions",
        "youtube_trainability",
        "youtube_channel",
        "youtube_suggestions",
        "youtube_download"
      ]
    },
    "name": {
      "type": "string"
    },
    "category": {
      "type": "string",
      "enum": [
        "google",
        "youtube"
      ]
    },
    "product": {
      "type": "string",
      "enum": [
        "google_search",
        "youtube_data",
        "youtube_download"
      ]
    },
    "modes": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "description": "Only modes backed by a real adapter or consumer in the current release",
      "items": {
        "type": "string",
        "enum": [
          "realtime",
          "async",
          "batch"
        ]
      }
    },
    "inputSchema": {
      "type": "object",
      "additionalProperties": true,
      "description": "JSON Schema used by the Playground and generated clients"
    },
    "estimatedCredits": {
      "type": "number",
      "minimum": 0,
      "multipleOf": 0.001
    },
    "requiresStorageDestination": {
      "type": "boolean",
      "description": "Whether query submission must include per-request storage configuration."
    }
  }
}