{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://ordinis.nstart.cloud/schemas/cuod/instrument/1.0.0",
  "title": "Instrument (бортовой сенсор)",
  "description": "Конкретный сенсор/полезная нагрузка на борту КА. Один прибор может летать на нескольких бортах (many-to-many со spacecraft).",
  "type": "object",
  "required": ["code", "name", "type", "status"],
  "additionalProperties": false,
  "x-id-source": "code",
  "properties": {
    "code": {
      "type": "string",
      "description": "Код прибора. UPPER кириллицу транслитерируем; разрешены буквы, цифры, _ и -.",
      "pattern": "^[A-Z][A-Z0-9_\\-]{1,63}$",
      "x-unique": true
    },
    "name": {
      "type": "object",
      "x-localized": true,
      "description": "Наименование прибора",
      "patternProperties": {
        "^[a-z]{2}-[A-Z]{2}$": { "type": "string", "minLength": 1 }
      },
      "required": ["ru-RU"]
    },
    "description": {
      "type": "object",
      "x-localized": true,
      "patternProperties": {
        "^[a-z]{2}-[A-Z]{2}$": { "type": "string" }
      }
    },
    "spacecraft_codes": {
      "type": "array",
      "description": "businessKey'и КА с этим прибором (many-to-many)",
      "items": { "type": "string" },
      "uniqueItems": true
    },
    "type": {
      "type": "string",
      "description": "Тип сенсора. UI использует для фильтрации.",
      "enum": ["optical", "sar", "infrared", "multispectral", "hyperspectral", "thermal", "lidar", "radiometer"]
    },
    "spatial_resolution_m": {
      "type": "number",
      "description": "Лучшее пространственное разрешение, метры",
      "minimum": 0
    },
    "swath_km": {
      "type": "number",
      "description": "Ширина полосы захвата, километры",
      "minimum": 0
    },
    "spectral_bands": {
      "type": "array",
      "description": "Спектральные каналы прибора",
      "items": { "type": "string" },
      "uniqueItems": true
    },
    "supported_format_codes": {
      "type": "array",
      "description": "businessKey'и из data_format — какие форматы поддерживает выгрузка",
      "items": { "type": "string" },
      "uniqueItems": true
    },
    "supported_level_codes": {
      "type": "array",
      "description": "businessKey'и из processing_level — какие уровни обработки доступны",
      "items": { "type": "string" },
      "uniqueItems": true
    },
    "status": {
      "type": "string",
      "enum": ["active", "archived", "planned"]
    }
  }
}
