{
  "$schema": "https://edpol.pro/schemas/science-source-registry-v1.schema.json",
  "schema": "edpol-science-source-registry-v1",
  "updated_at": "2026-08-04",
  "mode": "snapshot-first",
  "truth_boundary": "Внешний источник помогает найти, сопоставить или проверить материал, но не выносит редакционный verdict автоматически.",
  "sources": [
    {
      "id": "openalex",
      "name": "OpenAlex",
      "class": "research-metadata",
      "role": "Открытый граф научных работ, авторов, учреждений, тем и цитирования.",
      "priority": "P0",
      "endpoint": "https://api.openalex.org/",
      "documentation_url": "https://developers.openalex.org/",
      "auth": "none",
      "refresh": "weekly",
      "access": "open-metadata",
      "verification_state": "candidate",
      "license": "Проверять условия OpenAlex для snapshot и атрибуции перед перераспределением.",
      "limitations": "Метаданные и citation graph не заменяют чтение исследования, peer review и проверку применимости к Казахстану.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 30, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "crossref",
      "name": "Crossref",
      "class": "research-metadata",
      "role": "DOI metadata, funding, licenses, ORCID/ROR links and post-publication updates.",
      "priority": "P0",
      "endpoint": "https://api.crossref.org/",
      "documentation_url": "https://www.crossref.org/documentation/retrieve-metadata/rest-api/",
      "auth": "mailto",
      "refresh": "weekly",
      "access": "open-metadata",
      "verification_state": "candidate",
      "license": "Metadata reuse and source-specific license fields must be retained.",
      "limitations": "DOI metadata can be incomplete, stale or publisher-supplied; it does not certify study quality.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 30, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "unpaywall",
      "name": "Unpaywall",
      "class": "research-metadata",
      "role": "Поиск легальных open-access locations по DOI.",
      "priority": "P0",
      "endpoint": "https://api.unpaywall.org/v2/",
      "documentation_url": "https://data.unpaywall.org/products/api",
      "auth": "email-required",
      "refresh": "weekly",
      "access": "open-metadata",
      "verification_state": "candidate",
      "license": "Проверять условия Unpaywall и права конкретной full-text location.",
      "limitations": "Наличие OA location не означает, что текст полон, актуален или является version of record.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 30, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "adilet",
      "name": "Әділет",
      "class": "legal",
      "role": "Официальный правовой информационный слой Казахстана и версии нормативных документов.",
      "priority": "P1",
      "endpoint": "https://adilet.zan.kz/eng/",
      "documentation_url": "https://adilet.zan.kz/eng/widAI",
      "auth": "none",
      "refresh": "daily",
      "access": "official",
      "verification_state": "candidate",
      "license": "Перед массовым использованием проверить условия публикации, цитирования и архивирования.",
      "limitations": "Карточка закона не заменяет юридическую проверку актуальной редакции, переходных положений и применимой нормы.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 7, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "bns",
      "name": "Бюро национальной статистики",
      "class": "official-data",
      "role": "Официальные показатели, metadata и методология национальной статистики Казахстана.",
      "priority": "P1",
      "endpoint": "https://api.stat.gov.kz/",
      "documentation_url": "https://stat.gov.kz/en/standard/national/",
      "auth": "check-current-terms",
      "refresh": "monthly",
      "access": "official",
      "verification_state": "candidate",
      "license": "Проверять условия конкретного набора и требования к атрибуции.",
      "limitations": "Показатель нельзя использовать без определения, методологии, периода, единиц и revisions.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 45, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "data-egov",
      "name": "data.egov.kz",
      "class": "official-data",
      "role": "Государственные открытые наборы данных Казахстана.",
      "priority": "P1",
      "endpoint": "https://data.egov.kz/",
      "documentation_url": "https://data.egov.kz/pages/portalpage?id=57238451",
      "auth": "developer-key",
      "refresh": "monthly",
      "access": "official",
      "verification_state": "candidate",
      "license": "Проверять условия портала и dataset-specific ограничения перед публикацией.",
      "limitations": "Качество, полнота и актуальность зависят от владельца набора; API key не является доказательством достоверности данных.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 45, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "gdelt",
      "name": "GDELT",
      "class": "media-discovery",
      "role": "Глобальный мультиязычный discovery слой для медиасюжетов, событий и динамики внимания.",
      "priority": "P2",
      "endpoint": "https://api.gdeltproject.org/api/v2/",
      "documentation_url": "https://docs.gdeltcloud.com/api-reference/introduction",
      "auth": "none",
      "refresh": "daily",
      "access": "open",
      "verification_state": "candidate",
      "license": "Проверять условия конкретного endpoint и атрибуцию перед перераспределением.",
      "limitations": "Медиадинамика – context signal, не source-of-truth и не автоматическая оценка правдивости.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 3, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "media-cloud",
      "name": "Media Cloud",
      "class": "media-discovery",
      "role": "Открытый анализ онлайн-медиа, коллекций, источников, языков и внимания.",
      "priority": "P2",
      "endpoint": "https://api.mediacloud.org/",
      "documentation_url": "https://www.mediacloud.org/documentation",
      "auth": "token",
      "refresh": "weekly",
      "access": "conditional",
      "verification_state": "candidate",
      "license": "Проверять доступ API, source collection terms и downstream attribution.",
      "limitations": "Coverage и collection design влияют на результат; график внимания не измеряет истину или общественную значимость.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 14, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "wikidata",
      "name": "Wikidata SPARQL",
      "class": "entity-graph",
      "role": "Нормализация людей, организаций, учреждений, мест и тематических связей.",
      "priority": "P2",
      "endpoint": "https://query.wikidata.org/sparql",
      "documentation_url": "https://www.wikidata.org/wiki/Help:Queries",
      "auth": "none",
      "refresh": "monthly",
      "access": "open",
      "verification_state": "candidate",
      "license": "Проверять лицензию конкретных statements и соблюдать endpoint rate limits.",
      "limitations": "Entity graph может быть неполным, contested или устаревшим; merge identity требует human review.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 45, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "open-sanctions",
      "name": "OpenSanctions",
      "class": "entity-graph",
      "role": "Screening-сигналы по sanctions, PEP, ownership и связанным сущностям.",
      "priority": "P2",
      "endpoint": "https://api.opensanctions.org/",
      "documentation_url": "https://www.opensanctions.org/docs/api/",
      "auth": "token",
      "refresh": "daily",
      "access": "conditional",
      "verification_state": "candidate",
      "license": "Проверять условия API, dataset licenses и permissible use до production.",
      "limitations": "Name match – только screening signal; не доказательство identity, нарушения или вины. Нужна false-positive review.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 7, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "osm-overpass",
      "name": "OpenStreetMap / Overpass",
      "class": "geo-context",
      "role": "Контекстная география и объекты для проверяемой геолокации.",
      "priority": "P2",
      "endpoint": "https://overpass-api.de/api/interpreter",
      "documentation_url": "https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL",
      "auth": "none",
      "refresh": "on-demand",
      "access": "open",
      "verification_state": "candidate",
      "license": "Сохранять ODbL attribution и проверять условия выбранного Overpass instance.",
      "limitations": "Map data может быть неполной или устаревшей; наличие объекта не подтверждает событие на месте.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 30, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    },
    {
      "id": "c2pa",
      "name": "C2PA Specifications",
      "class": "technical-standard",
      "role": "Стандарт content provenance и Content Credentials для цифровых медиа.",
      "priority": "P1",
      "endpoint": "https://spec.c2pa.org/specifications/",
      "documentation_url": "https://c2pa.org/specifications/specifications/2.2/explainer/Explainer.html",
      "auth": "none",
      "refresh": "manual-review",
      "access": "open",
      "verification_state": "candidate",
      "license": "Проверять version-specific terms и implementation requirements.",
      "limitations": "Provenance связывает asset с assertions и событиями, но сама по себе не доказывает truth of content.",
      "snapshot_policy": {"cache_required": true, "browser_fetch_forbidden": true, "stale_after_days": 180, "hash_algorithm": "sha256", "failure_state": "needs-review"}
    }
  ]
}
