{
  "provenance": {
    "source": "Metkagram",
    "source_url": "https://metkagram.github.io",
    "source_repository": "https://github.com/metkagram/metkagram.github.io",
    "creator": "Metkagram",
    "creator_url": "https://github.com/metkagram",
    "maintainer": "Applied Systems Lab at MetalHatsCats",
    "maintainer_url": "https://metalhatscats.com",
    "license": "Metkagram Source-Available Terms",
    "license_url": "https://metkagram.github.io/en/licensing/",
    "rights_status": "source-available-not-open-source",
    "rights_url": "https://metkagram.github.io/rights.json",
    "historical_license": "CC BY-NC 4.0 before 2026-08-17; prior grants remain valid for copies received under those terms",
    "attribution_required": true,
    "attribution_text": "Source: Metkagram — https://metkagram.github.io/",
    "attribution_html": "Source: <a href=\"https://metkagram.github.io/\">Metkagram</a>",
    "terms_url": "https://metkagram.github.io/en/licensing/",
    "privacy_url": "https://metkagram.github.io/en/legal/privacy/",
    "contact_email": "metalhatscats@gmail.com",
    "contact_url": "https://www.linkedin.com/company/metalhatscats",
    "collaboration_url": "https://metkagram.github.io/en/licensing/",
    "dataset_version": "1.0.0+8bda5f7406ae",
    "release_date": "2026-09-01",
    "canonical_url": "https://metkagram.github.io/api/v1/sets.json",
    "record_type": "study_sets",
    "content_hash": "d310321659a2cb72afab4620175aeff9fba591a15b06c79ad2f67db9c5eaf6f1"
  },
  "data": [
    {
      "id": "ARG",
      "slug": "argumentation",
      "title_en": "Argumentation",
      "title_ru": "Аргументация",
      "description": "Build and test a line of reasoning.",
      "level": "B2–C1",
      "path": "ARG",
      "pattern_count": 1,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/argumentation/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/argumentation/",
        "ru": "https://metkagram.github.io/ru/practice/sets/argumentation/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/arg.json"
    },
    {
      "id": "OPI",
      "slug": "opinions-and-stance",
      "title_en": "Opinions and stance",
      "title_ru": "Мнение и позиция",
      "description": "State a position with the right degree of commitment.",
      "level": "B2–C1",
      "path": "OPI",
      "pattern_count": 145,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/opinions-and-stance/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/opinions-and-stance/",
        "ru": "https://metkagram.github.io/ru/practice/sets/opinions-and-stance/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/opi.json"
    },
    {
      "id": "EVD",
      "slug": "evidence-and-inference",
      "title_en": "Evidence and inference",
      "title_ru": "Доказательства и выводы",
      "description": "Connect a claim to evidence without overclaiming.",
      "level": "B2–C1",
      "path": "EVD",
      "pattern_count": 16,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/evidence-and-inference/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/evidence-and-inference/",
        "ru": "https://metkagram.github.io/ru/practice/sets/evidence-and-inference/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/evd.json"
    },
    {
      "id": "AGR",
      "slug": "agreement-and-disagreement",
      "title_en": "Agreement and disagreement",
      "title_ru": "Согласие и несогласие",
      "description": "Respond constructively to another view.",
      "level": "B2–C1",
      "path": "AGR",
      "pattern_count": 1,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/agreement-and-disagreement/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/agreement-and-disagreement/",
        "ru": "https://metkagram.github.io/ru/practice/sets/agreement-and-disagreement/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/agr.json"
    },
    {
      "id": "HED",
      "slug": "qualification-and-hedging",
      "title_en": "Qualification and hedging",
      "title_ru": "Оговорки и смягчение",
      "description": "Make precise, proportionate claims.",
      "level": "B2–C1",
      "path": "HED",
      "pattern_count": 1,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/qualification-and-hedging/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/qualification-and-hedging/",
        "ru": "https://metkagram.github.io/ru/practice/sets/qualification-and-hedging/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/hed.json"
    },
    {
      "id": "PRB",
      "slug": "probability-and-prediction",
      "title_en": "Probability and prediction",
      "title_ru": "Вероятность и прогноз",
      "description": "Discuss likelihood, risk, and uncertainty.",
      "level": "B2–C1",
      "path": "PRB",
      "pattern_count": 2,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/probability-and-prediction/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/probability-and-prediction/",
        "ru": "https://metkagram.github.io/ru/practice/sets/probability-and-prediction/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/prb.json"
    },
    {
      "id": "CLR",
      "slug": "clarification-and-reformulation",
      "title_en": "Clarification and reformulation",
      "title_ru": "Уточнение и переформулирование",
      "description": "Repair and sharpen meaning in conversation.",
      "level": "B2–C1",
      "path": "CLR",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/clarification-and-reformulation/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/clarification-and-reformulation/",
        "ru": "https://metkagram.github.io/ru/practice/sets/clarification-and-reformulation/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/clr.json"
    },
    {
      "id": "CMP",
      "slug": "comparison-and-evaluation",
      "title_en": "Comparison and evaluation",
      "title_ru": "Сравнение и оценка",
      "description": "Compare options using nuanced criteria.",
      "level": "B2–C1",
      "path": "CMP",
      "pattern_count": 9,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/comparison-and-evaluation/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/comparison-and-evaluation/",
        "ru": "https://metkagram.github.io/ru/practice/sets/comparison-and-evaluation/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/cmp.json"
    },
    {
      "id": "CAU",
      "slug": "cause-effect-and-consequence",
      "title_en": "Cause, effect, and consequence",
      "title_ru": "Причина, следствие и результат",
      "description": "Explain how one development leads to another.",
      "level": "B2–C1",
      "path": "CAU",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/cause-effect-and-consequence/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/cause-effect-and-consequence/",
        "ru": "https://metkagram.github.io/ru/practice/sets/cause-effect-and-consequence/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/cau.json"
    },
    {
      "id": "NEG",
      "slug": "negotiation-and-decisions",
      "title_en": "Negotiation and decisions",
      "title_ru": "Переговоры и решения",
      "description": "Make proposals, trade-offs, and commitments.",
      "level": "B2–C1",
      "path": "NEG",
      "pattern_count": 6,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/negotiation-and-decisions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/negotiation-and-decisions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/negotiation-and-decisions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/neg.json"
    },
    {
      "id": "PRO",
      "slug": "professional-communication",
      "title_en": "Professional communication",
      "title_ru": "Профессиональная коммуникация",
      "description": "Write and speak clearly at work.",
      "level": "B2–C1",
      "path": "PRO",
      "pattern_count": 1,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/professional-communication/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/professional-communication/",
        "ru": "https://metkagram.github.io/ru/practice/sets/professional-communication/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/pro.json"
    },
    {
      "id": "STO",
      "slug": "storytelling-and-reflection",
      "title_en": "Storytelling and reflection",
      "title_ru": "Истории и рефлексия",
      "description": "Narrate events and draw a lesson from them.",
      "level": "B2–C1",
      "path": "STO",
      "pattern_count": 1,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/storytelling-and-reflection/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/storytelling-and-reflection/",
        "ru": "https://metkagram.github.io/ru/practice/sets/storytelling-and-reflection/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/sto.json"
    },
    {
      "id": "LNK",
      "slug": "advanced-connectors",
      "title_en": "Advanced connectors",
      "title_ru": "Продвинутые связки",
      "description": "Create coherent, well-signposted discourse.",
      "level": "B2–C1",
      "path": "LNK",
      "pattern_count": 18,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/advanced-connectors/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/advanced-connectors/",
        "ru": "https://metkagram.github.io/ru/practice/sets/advanced-connectors/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/lnk.json"
    },
    {
      "id": "CND",
      "slug": "conditionals-and-counterfactuals",
      "title_en": "Conditionals and counterfactuals",
      "title_ru": "Условия и контрфакты",
      "description": "Reason through possibilities and alternatives.",
      "level": "B2–C1",
      "path": "CND",
      "pattern_count": 18,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/conditionals-and-counterfactuals/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/conditionals-and-counterfactuals/",
        "ru": "https://metkagram.github.io/ru/practice/sets/conditionals-and-counterfactuals/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/cnd.json"
    },
    {
      "id": "MOD",
      "slug": "modality-and-obligation",
      "title_en": "Modality and obligation",
      "title_ru": "Модальность и обязанность",
      "description": "Express necessity, permission, and recommendation.",
      "level": "B2–C1",
      "path": "MOD",
      "pattern_count": 6,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/modality-and-obligation/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/modality-and-obligation/",
        "ru": "https://metkagram.github.io/ru/practice/sets/modality-and-obligation/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/mod.json"
    },
    {
      "id": "PSV",
      "slug": "passive-and-impersonal-style",
      "title_en": "Passive and impersonal style",
      "title_ru": "Пассив и безличные конструкции",
      "description": "Use formal, process-focused language.",
      "level": "B2–C1",
      "path": "PSV",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/passive-and-impersonal-style/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/passive-and-impersonal-style/",
        "ru": "https://metkagram.github.io/ru/practice/sets/passive-and-impersonal-style/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/psv.json"
    },
    {
      "id": "REP",
      "slug": "reported-speech-and-attribution",
      "title_en": "Reported speech and attribution",
      "title_ru": "Косвенная речь и источник",
      "description": "Report what people said with accuracy.",
      "level": "B2–C1",
      "path": "REP",
      "pattern_count": 1,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/reported-speech-and-attribution/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/reported-speech-and-attribution/",
        "ru": "https://metkagram.github.io/ru/practice/sets/reported-speech-and-attribution/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/rep.json"
    },
    {
      "id": "TAS",
      "slug": "tense-and-aspect",
      "title_en": "Tense and aspect",
      "title_ru": "Время и аспект",
      "description": "Position actions in time and show duration or completion.",
      "level": "B2–C1",
      "path": "TAS",
      "pattern_count": 5,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/tense-and-aspect/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/tense-and-aspect/",
        "ru": "https://metkagram.github.io/ru/practice/sets/tense-and-aspect/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/tas.json"
    },
    {
      "id": "QNN",
      "slug": "questions-negatives-and-reference",
      "title_en": "Questions, negatives, and reference",
      "title_ru": "Вопросы, отрицания и отсылки",
      "description": "Ask precise questions and manage reference.",
      "level": "B2–C1",
      "path": "QNN",
      "pattern_count": 24,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/questions-negatives-and-reference/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/questions-negatives-and-reference/",
        "ru": "https://metkagram.github.io/ru/practice/sets/questions-negatives-and-reference/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qnn.json"
    },
    {
      "id": "DGR",
      "slug": "german-grammar-in-use",
      "title_en": "German grammar in use",
      "title_ru": "Немецкая грамматика в речи",
      "description": "Transfer German word order, cases, and particles into real use.",
      "level": "B2–C1",
      "path": "DGR",
      "pattern_count": 11,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/german-grammar-in-use/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/german-grammar-in-use/",
        "ru": "https://metkagram.github.io/ru/practice/sets/german-grammar-in-use/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/dgr.json"
    },
    {
      "id": "DET",
      "slug": "determiners-and-quantifiers",
      "title_en": "Determiners and quantifiers",
      "title_ru": "Определители и квантификаторы",
      "description": "Make reference, quantity and scope precise.",
      "level": "B2–C1",
      "path": "DET",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/determiners-and-quantifiers/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/determiners-and-quantifiers/",
        "ru": "https://metkagram.github.io/ru/practice/sets/determiners-and-quantifiers/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/det.json"
    },
    {
      "id": "INF",
      "slug": "verb-complements-and-non-finite-clauses",
      "title_en": "Verb complements and non-finite clauses",
      "title_ru": "Инфинитив, герундий и неличные конструкции",
      "description": "Choose verb complements and condensed clauses accurately.",
      "level": "B2–C1",
      "path": "INF",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/verb-complements-and-non-finite-clauses/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/verb-complements-and-non-finite-clauses/",
        "ru": "https://metkagram.github.io/ru/practice/sets/verb-complements-and-non-finite-clauses/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/inf.json"
    },
    {
      "id": "SUB",
      "slug": "subordinate-and-complement-clauses",
      "title_en": "Subordinate and complement clauses",
      "title_ru": "Придаточные и изъяснительные конструкции",
      "description": "Build multi-clause reasoning with clear dependencies.",
      "level": "B2–C1",
      "path": "SUB",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/subordinate-and-complement-clauses/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/subordinate-and-complement-clauses/",
        "ru": "https://metkagram.github.io/ru/practice/sets/subordinate-and-complement-clauses/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/sub.json"
    },
    {
      "id": "FCS",
      "slug": "focus-inversion-and-emphasis",
      "title_en": "Focus, inversion and emphasis",
      "title_ru": "Фокус, инверсия и эмфаза",
      "description": "Bring the key part of a message into focus.",
      "level": "B2–C1",
      "path": "FCS",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/focus-inversion-and-emphasis/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/focus-inversion-and-emphasis/",
        "ru": "https://metkagram.github.io/ru/practice/sets/focus-inversion-and-emphasis/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/fcs.json"
    },
    {
      "id": "REL",
      "slug": "relative-and-participial-clauses",
      "title_en": "Relative and participial clauses",
      "title_ru": "Относительные и причастные конструкции",
      "description": "Add precise information without losing the main clause.",
      "level": "B2–C1",
      "path": "REL",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/relative-and-participial-clauses/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/relative-and-participial-clauses/",
        "ru": "https://metkagram.github.io/ru/practice/sets/relative-and-participial-clauses/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/rel.json"
    },
    {
      "id": "PRP",
      "slug": "prepositions-and-governed-complements",
      "title_en": "Prepositions and governed complements",
      "title_ru": "Предлоги и управление",
      "description": "Use the complements that verbs, nouns and adjectives require.",
      "level": "B2–C1",
      "path": "PRP",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/prepositions-and-governed-complements/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/prepositions-and-governed-complements/",
        "ru": "https://metkagram.github.io/ru/practice/sets/prepositions-and-governed-complements/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/prp.json"
    },
    {
      "id": "WOR",
      "slug": "word-order-and-verb-position",
      "title_en": "Word order and verb position",
      "title_ru": "Порядок слов и позиция глагола",
      "description": "Control sentence structure across statements, questions and clauses.",
      "level": "B2–C1",
      "path": "WOR",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/word-order-and-verb-position/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/word-order-and-verb-position/",
        "ru": "https://metkagram.github.io/ru/practice/sets/word-order-and-verb-position/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/wor.json"
    },
    {
      "id": "CAS",
      "slug": "cases-and-nominal-agreement",
      "title_en": "Cases and nominal agreement",
      "title_ru": "Падежи и согласование в именной группе",
      "description": "Keep roles and agreement clear inside the noun phrase.",
      "level": "B2–C1",
      "path": "CAS",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/cases-and-nominal-agreement/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/cases-and-nominal-agreement/",
        "ru": "https://metkagram.github.io/ru/practice/sets/cases-and-nominal-agreement/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/cas.json"
    },
    {
      "id": "ADJ",
      "slug": "adjectives-and-comparison",
      "title_en": "Adjectives and comparison",
      "title_ru": "Прилагательные и сравнение",
      "description": "Describe, compare and qualify with accurate noun phrases.",
      "level": "B2–C1",
      "path": "ADJ",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/adjectives-and-comparison/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/adjectives-and-comparison/",
        "ru": "https://metkagram.github.io/ru/practice/sets/adjectives-and-comparison/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/adj.json"
    },
    {
      "id": "KON",
      "slug": "mood-modality-and-reported-stance",
      "title_en": "Mood, modality and reported stance",
      "title_ru": "Наклонение, модальность и передача позиции",
      "description": "Express possibility, recommendation and reported judgement precisely.",
      "level": "B2–C1",
      "path": "KON",
      "pattern_count": 8,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/mood-modality-and-reported-stance/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/mood-modality-and-reported-stance/",
        "ru": "https://metkagram.github.io/ru/practice/sets/mood-modality-and-reported-stance/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/kon.json"
    },
    {
      "id": "QYN",
      "slug": "yes-no-questions",
      "title_en": "Yes/no questions",
      "title_ru": "Общие вопросы",
      "description": "Check a fact, possibility or condition.",
      "level": "B2–C1",
      "path": "QYN",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/yes-no-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/yes-no-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/yes-no-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qyn.json"
    },
    {
      "id": "QWH",
      "slug": "wh-questions",
      "title_en": "Wh-questions",
      "title_ru": "Специальные вопросы",
      "description": "Ask for the missing reason, method, thing or outcome.",
      "level": "B2–C1",
      "path": "QWH",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/wh-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/wh-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/wh-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qwh.json"
    },
    {
      "id": "QSUB",
      "slug": "subject-questions",
      "title_en": "Subject questions",
      "title_ru": "Вопросы к подлежащему",
      "description": "Ask who or what performs the key action.",
      "level": "B2–C1",
      "path": "QSUB",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/subject-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/subject-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/subject-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qsub.json"
    },
    {
      "id": "QOBJ",
      "slug": "object-questions",
      "title_en": "Object questions",
      "title_ru": "Вопросы к дополнению",
      "description": "Ask what action, evidence or response is needed.",
      "level": "B2–C1",
      "path": "QOBJ",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/object-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/object-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/object-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qobj.json"
    },
    {
      "id": "QPRE",
      "slug": "preposition-questions",
      "title_en": "Preposition questions",
      "title_ru": "Вопросы с предлогом",
      "description": "Practise preposition plus question word as one unit.",
      "level": "B2–C1",
      "path": "QPRE",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/preposition-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/preposition-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/preposition-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qpre.json"
    },
    {
      "id": "QTAG",
      "slug": "tag-and-checking-questions",
      "title_en": "Tag and checking questions",
      "title_ru": "Разделительные и проверочные вопросы",
      "description": "Invite confirmation without sounding abrupt.",
      "level": "B2–C1",
      "path": "QTAG",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/tag-and-checking-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/tag-and-checking-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/tag-and-checking-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qtag.json"
    },
    {
      "id": "QIND",
      "slug": "indirect-questions",
      "title_en": "Indirect questions",
      "title_ru": "Косвенные вопросы",
      "description": "Keep question order inside polite embedded clauses.",
      "level": "B2–C1",
      "path": "QIND",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/indirect-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/indirect-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/indirect-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qind.json"
    },
    {
      "id": "QNEG",
      "slug": "negative-questions",
      "title_en": "Negative questions",
      "title_ru": "Отрицательные вопросы",
      "description": "Use negation to question an assumption or prompt action.",
      "level": "B2–C1",
      "path": "QNEG",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/negative-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/negative-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/negative-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qneg.json"
    },
    {
      "id": "QCHO",
      "slug": "alternative-questions",
      "title_en": "Alternative questions",
      "title_ru": "Альтернативные вопросы",
      "description": "Compare two routes before making a choice.",
      "level": "B2–C1",
      "path": "QCHO",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/alternative-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/alternative-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/alternative-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qcho.json"
    },
    {
      "id": "QCNF",
      "slug": "confirmation-questions",
      "title_en": "Confirmation questions",
      "title_ru": "Вопросы на подтверждение",
      "description": "Check a fact carefully before relying on it.",
      "level": "B2–C1",
      "path": "QCNF",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/confirmation-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/confirmation-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/confirmation-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qcnf.json"
    },
    {
      "id": "QCL",
      "slug": "clarification-questions",
      "title_en": "Clarification questions",
      "title_ru": "Уточняющие вопросы",
      "description": "Repair meaning before the conversation moves on.",
      "level": "B2–C1",
      "path": "QCL",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/clarification-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/clarification-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/clarification-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qcl.json"
    },
    {
      "id": "QFOL",
      "slug": "follow-up-questions",
      "title_en": "Follow-up questions",
      "title_ru": "Уточняющие вопросы продолжения",
      "description": "Keep an answer moving toward its implication.",
      "level": "B2–C1",
      "path": "QFOL",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/follow-up-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/follow-up-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/follow-up-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qfol.json"
    },
    {
      "id": "QOP",
      "slug": "opinion-questions",
      "title_en": "Opinion questions",
      "title_ru": "Вопросы о мнении",
      "description": "Invite a view with the right amount of openness.",
      "level": "B2–C1",
      "path": "QOP",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/opinion-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/opinion-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/opinion-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qop.json"
    },
    {
      "id": "QCAU",
      "slug": "cause-and-reason-questions",
      "title_en": "Cause and reason questions",
      "title_ru": "Вопросы о причине",
      "description": "Trace a result back to its likely cause.",
      "level": "B2–C1",
      "path": "QCAU",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/cause-and-reason-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/cause-and-reason-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/cause-and-reason-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qcau.json"
    },
    {
      "id": "QPUR",
      "slug": "purpose-questions",
      "title_en": "Purpose questions",
      "title_ru": "Вопросы о цели",
      "description": "Ask what an action is meant to achieve.",
      "level": "B2–C1",
      "path": "QPUR",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/purpose-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/purpose-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/purpose-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qpur.json"
    },
    {
      "id": "QTM",
      "slug": "time-questions",
      "title_en": "Time questions",
      "title_ru": "Вопросы о времени",
      "description": "Place an action, answer or decision on a timeline.",
      "level": "B2–C1",
      "path": "QTM",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/time-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/time-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/time-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qtm.json"
    },
    {
      "id": "QPLC",
      "slug": "place-and-setting-questions",
      "title_en": "Place and setting questions",
      "title_ru": "Вопросы о месте и формате",
      "description": "Choose the right place or setting for the next step.",
      "level": "B2–C1",
      "path": "QPLC",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/place-and-setting-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/place-and-setting-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/place-and-setting-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qplc.json"
    },
    {
      "id": "QPRS",
      "slug": "people-and-responsibility-questions",
      "title_en": "People and responsibility questions",
      "title_ru": "Вопросы о людях и ответственности",
      "description": "Identify who can act, decide or approve.",
      "level": "B2–C1",
      "path": "QPRS",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/people-and-responsibility-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/people-and-responsibility-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/people-and-responsibility-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qprs.json"
    },
    {
      "id": "QQNT",
      "slug": "quantity-and-degree-questions",
      "title_en": "Quantity and degree questions",
      "title_ru": "Вопросы о количестве и степени",
      "description": "Ask about scale, frequency and intensity.",
      "level": "B2–C1",
      "path": "QQNT",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/quantity-and-degree-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/quantity-and-degree-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/quantity-and-degree-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qqnt.json"
    },
    {
      "id": "QCMP",
      "slug": "comparison-questions",
      "title_en": "Comparison questions",
      "title_ru": "Вопросы для сравнения",
      "description": "Compare options, outcomes and trade-offs.",
      "level": "B2–C1",
      "path": "QCMP",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/comparison-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/comparison-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/comparison-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qcmp.json"
    },
    {
      "id": "QHYP",
      "slug": "hypothetical-questions",
      "title_en": "Hypothetical questions",
      "title_ru": "Гипотетические вопросы",
      "description": "Explore a possible world before committing to it.",
      "level": "B2–C1",
      "path": "QHYP",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/hypothetical-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/hypothetical-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/hypothetical-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qhyp.json"
    },
    {
      "id": "QPRB",
      "slug": "probability-questions",
      "title_en": "Probability questions",
      "title_ru": "Вопросы о вероятности",
      "description": "Ask about likelihood without claiming certainty.",
      "level": "B2–C1",
      "path": "QPRB",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/probability-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/probability-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/probability-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qprb.json"
    },
    {
      "id": "QPOL",
      "slug": "polite-request-questions",
      "title_en": "Polite request questions",
      "title_ru": "Вежливые вопросы-просьбы",
      "description": "Ask for help, information or action tactfully.",
      "level": "B2–C1",
      "path": "QPOL",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/polite-request-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/polite-request-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/polite-request-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qpol.json"
    },
    {
      "id": "QWRK",
      "slug": "workplace-questions",
      "title_en": "Workplace questions",
      "title_ru": "Вопросы на работе",
      "description": "Coordinate tasks, owners and deadlines at work.",
      "level": "B2–C1",
      "path": "QWRK",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/workplace-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/workplace-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/workplace-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qwrk.json"
    },
    {
      "id": "QACA",
      "slug": "academic-and-research-questions",
      "title_en": "Academic and research questions",
      "title_ru": "Академические и исследовательские вопросы",
      "description": "Turn evidence and uncertainty into researchable questions.",
      "level": "B2–C1",
      "path": "QACA",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/academic-and-research-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/academic-and-research-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/academic-and-research-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qaca.json"
    },
    {
      "id": "QDEC",
      "slug": "decision-questions",
      "title_en": "Decision questions",
      "title_ru": "Вопросы для принятия решений",
      "description": "Frame the next decision and its threshold clearly.",
      "level": "B2–C1",
      "path": "QDEC",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/decision-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/decision-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/decision-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qdec.json"
    },
    {
      "id": "QNGT",
      "slug": "negotiation-questions",
      "title_en": "Negotiation questions",
      "title_ru": "Вопросы для переговоров",
      "description": "Open room for concessions, pauses and workable compromise.",
      "level": "B2–C1",
      "path": "QNGT",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/negotiation-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/negotiation-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/negotiation-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qngt.json"
    },
    {
      "id": "QREP",
      "slug": "reported-questions",
      "title_en": "Reported questions",
      "title_ru": "Косвенная передача вопросов",
      "description": "Report what was asked without losing the question's meaning.",
      "level": "B2–C1",
      "path": "QREP",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/reported-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/reported-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/reported-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qrep.json"
    },
    {
      "id": "QDIS",
      "slug": "discourse-management-questions",
      "title_en": "Discourse-management questions",
      "title_ru": "Вопросы для управления разговором",
      "description": "Use questions to steer a conversation with care.",
      "level": "B2–C1",
      "path": "QDIS",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/discourse-management-questions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/discourse-management-questions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/discourse-management-questions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qdis.json"
    },
    {
      "id": "QFRM",
      "slug": "question-forms-and-auxiliaries",
      "title_en": "Question forms and auxiliaries",
      "title_ru": "Формы вопросов и вспомогательные глаголы",
      "description": "Control tense, auxiliary verbs and question formation.",
      "level": "B2–C1",
      "path": "QFRM",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-QUESTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/question-forms-and-auxiliaries/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/question-forms-and-auxiliaries/",
        "ru": "https://metkagram.github.io/ru/practice/sets/question-forms-and-auxiliaries/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/qfrm.json"
    },
    {
      "id": "PFR",
      "slug": "preferences-and-choices",
      "title_en": "Preferences and choices",
      "title_ru": "Предпочтения и выбор",
      "description": "State a preference and weigh alternatives.",
      "level": "B2–C1",
      "path": "PFR",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/preferences-and-choices/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/preferences-and-choices/",
        "ru": "https://metkagram.github.io/ru/practice/sets/preferences-and-choices/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/pfr.json"
    },
    {
      "id": "ADV",
      "slug": "advice-and-recommendations",
      "title_en": "Advice and recommendations",
      "title_ru": "Советы и рекомендации",
      "description": "Recommend a next step without overstating certainty.",
      "level": "B2–C1",
      "path": "ADV",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/advice-and-recommendations/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/advice-and-recommendations/",
        "ru": "https://metkagram.github.io/ru/practice/sets/advice-and-recommendations/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/adv.json"
    },
    {
      "id": "RQT",
      "slug": "requests-and-follow-through",
      "title_en": "Requests and follow-through",
      "title_ru": "Просьбы и дальнейшие действия",
      "description": "Make a clear, workable request.",
      "level": "B2–C1",
      "path": "RQT",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/requests-and-follow-through/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/requests-and-follow-through/",
        "ru": "https://metkagram.github.io/ru/practice/sets/requests-and-follow-through/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/rqt.json"
    },
    {
      "id": "OFR",
      "slug": "offers-and-support",
      "title_en": "Offers and support",
      "title_ru": "Предложения помощи",
      "description": "Offer a concrete contribution with an easy next step.",
      "level": "B2–C1",
      "path": "OFR",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/offers-and-support/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/offers-and-support/",
        "ru": "https://metkagram.github.io/ru/practice/sets/offers-and-support/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/ofr.json"
    },
    {
      "id": "PRM",
      "slug": "permission-and-boundaries",
      "title_en": "Permission and boundaries",
      "title_ru": "Разрешение и границы",
      "description": "State what is allowed, required or out of scope.",
      "level": "B2–C1",
      "path": "PRM",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/permission-and-boundaries/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/permission-and-boundaries/",
        "ru": "https://metkagram.github.io/ru/practice/sets/permission-and-boundaries/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/prm.json"
    },
    {
      "id": "CMT",
      "slug": "commitments-and-promises",
      "title_en": "Commitments and promises",
      "title_ru": "Обязательства и обещания",
      "description": "Make commitments that are specific and accountable.",
      "level": "B2–C1",
      "path": "CMT",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/commitments-and-promises/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/commitments-and-promises/",
        "ru": "https://metkagram.github.io/ru/practice/sets/commitments-and-promises/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/cmt.json"
    },
    {
      "id": "PLN",
      "slug": "planning-and-scheduling",
      "title_en": "Planning and scheduling",
      "title_ru": "Планирование и расписание",
      "description": "Sequence actions and make the next step visible.",
      "level": "B2–C1",
      "path": "PLN",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/planning-and-scheduling/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/planning-and-scheduling/",
        "ru": "https://metkagram.github.io/ru/practice/sets/planning-and-scheduling/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/pln.json"
    },
    {
      "id": "PRI",
      "slug": "priorities-and-trade-offs",
      "title_en": "Priorities and trade-offs",
      "title_ru": "Приоритеты и компромиссы",
      "description": "Name what matters most and what can wait.",
      "level": "B2–C1",
      "path": "PRI",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/priorities-and-trade-offs/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/priorities-and-trade-offs/",
        "ru": "https://metkagram.github.io/ru/practice/sets/priorities-and-trade-offs/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/pri.json"
    },
    {
      "id": "GOA",
      "slug": "goals-and-intentions",
      "title_en": "Goals and intentions",
      "title_ru": "Цели и намерения",
      "description": "Express what the work is meant to achieve.",
      "level": "B2–C1",
      "path": "GOA",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/goals-and-intentions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/goals-and-intentions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/goals-and-intentions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/goa.json"
    },
    {
      "id": "CNS",
      "slug": "concession-and-contrast",
      "title_en": "Concession and contrast",
      "title_ru": "Уступка и контраст",
      "description": "Acknowledge a point while keeping the main claim clear.",
      "level": "B2–C1",
      "path": "CNS",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/concession-and-contrast/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/concession-and-contrast/",
        "ru": "https://metkagram.github.io/ru/practice/sets/concession-and-contrast/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/cns.json"
    },
    {
      "id": "EXM",
      "slug": "examples-and-specification",
      "title_en": "Examples and specification",
      "title_ru": "Примеры и конкретизация",
      "description": "Make an abstract point concrete and precise.",
      "level": "B2–C1",
      "path": "EXM",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/examples-and-specification/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/examples-and-specification/",
        "ru": "https://metkagram.github.io/ru/practice/sets/examples-and-specification/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/exm.json"
    },
    {
      "id": "SUM",
      "slug": "summaries-and-conclusions",
      "title_en": "Summaries and conclusions",
      "title_ru": "Итоги и выводы",
      "description": "Close a discussion with a proportionate conclusion.",
      "level": "B2–C1",
      "path": "SUM",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/summaries-and-conclusions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/summaries-and-conclusions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/summaries-and-conclusions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/sum.json"
    },
    {
      "id": "ORG",
      "slug": "organising-conversation",
      "title_en": "Organising conversation",
      "title_ru": "Организация разговора",
      "description": "Open, sequence and redirect a discussion constructively.",
      "level": "B2–C1",
      "path": "ORG",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/organising-conversation/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/organising-conversation/",
        "ru": "https://metkagram.github.io/ru/practice/sets/organising-conversation/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/org.json"
    },
    {
      "id": "FEL",
      "slug": "feelings-and-reactions",
      "title_en": "Feelings and reactions",
      "title_ru": "Чувства и реакции",
      "description": "Express a reaction without making it a personal attack.",
      "level": "B2–C1",
      "path": "FEL",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/feelings-and-reactions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/feelings-and-reactions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/feelings-and-reactions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/fel.json"
    },
    {
      "id": "TCT",
      "slug": "tact-and-politeness",
      "title_en": "Tact and politeness",
      "title_ru": "Такт и вежливость",
      "description": "Make a difficult point easier to receive.",
      "level": "B2–C1",
      "path": "TCT",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/tact-and-politeness/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/tact-and-politeness/",
        "ru": "https://metkagram.github.io/ru/practice/sets/tact-and-politeness/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/tct.json"
    },
    {
      "id": "FBK",
      "slug": "feedback-and-evaluation",
      "title_en": "Feedback and evaluation",
      "title_ru": "Обратная связь и оценка",
      "description": "Give feedback that points to a concrete improvement.",
      "level": "B2–C1",
      "path": "FBK",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/feedback-and-evaluation/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/feedback-and-evaluation/",
        "ru": "https://metkagram.github.io/ru/practice/sets/feedback-and-evaluation/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/fbk.json"
    },
    {
      "id": "SOL",
      "slug": "problem-solving",
      "title_en": "Problem-solving",
      "title_ru": "Решение проблем",
      "description": "Frame a problem around a practical response.",
      "level": "B2–C1",
      "path": "SOL",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/problem-solving/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/problem-solving/",
        "ru": "https://metkagram.github.io/ru/practice/sets/problem-solving/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/sol.json"
    },
    {
      "id": "RSK",
      "slug": "risk-and-precautions",
      "title_en": "Risk and precautions",
      "title_ru": "Риск и меры предосторожности",
      "description": "Name uncertainty and choose a proportionate safeguard.",
      "level": "B2–C1",
      "path": "RSK",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/risk-and-precautions/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/risk-and-precautions/",
        "ru": "https://metkagram.github.io/ru/practice/sets/risk-and-precautions/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/rsk.json"
    },
    {
      "id": "PRS",
      "slug": "persuasion-and-influence",
      "title_en": "Persuasion and influence",
      "title_ru": "Убеждение и влияние",
      "description": "Make the case for action without forcing agreement.",
      "level": "B2–C1",
      "path": "PRS",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/persuasion-and-influence/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/persuasion-and-influence/",
        "ru": "https://metkagram.github.io/ru/practice/sets/persuasion-and-influence/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/prs.json"
    },
    {
      "id": "SOC",
      "slug": "social-interaction",
      "title_en": "Social interaction",
      "title_ru": "Социальное взаимодействие",
      "description": "Handle invitations, thanks and shared plans naturally.",
      "level": "B2–C1",
      "path": "SOC",
      "pattern_count": 4,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/social-interaction/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/social-interaction/",
        "ru": "https://metkagram.github.io/ru/practice/sets/social-interaction/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/soc.json"
    },
    {
      "id": "CGR",
      "slug": "contrast-grammar",
      "title_en": "Contrast grammar",
      "title_ru": "Грамматика через контрасты",
      "description": "Choose between easily confused structures by meaning, not by rule name.",
      "level": "B2–C1",
      "path": "CGR",
      "pattern_count": 6,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/contrast-grammar/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/contrast-grammar/",
        "ru": "https://metkagram.github.io/ru/practice/sets/contrast-grammar/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/cgr.json"
    },
    {
      "id": "SPK",
      "slug": "spoken-grammar",
      "title_en": "Spoken grammar",
      "title_ru": "Грамматика живой речи",
      "description": "Use compact spoken frames that organise an idea naturally in conversation.",
      "level": "B2–C1",
      "path": "SPK",
      "pattern_count": 6,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/spoken-grammar/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/spoken-grammar/",
        "ru": "https://metkagram.github.io/ru/practice/sets/spoken-grammar/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/spk.json"
    },
    {
      "id": "INT",
      "slug": "interaction-moves",
      "title_en": "Interaction moves",
      "title_ru": "Управление разговором",
      "description": "Enter, hold, redirect and close a turn without losing the thread.",
      "level": "B2–C1",
      "path": "INT",
      "pattern_count": 6,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/interaction-moves/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/interaction-moves/",
        "ru": "https://metkagram.github.io/ru/practice/sets/interaction-moves/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/int.json"
    },
    {
      "id": "REG",
      "slug": "register-shifting",
      "title_en": "Register shifting",
      "title_ru": "Переключение регистра",
      "description": "Express the same intent in casual, neutral and professional language.",
      "level": "B2–C1",
      "path": "REG",
      "pattern_count": 6,
      "learning_path_ids": [
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/register-shifting/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/register-shifting/",
        "ru": "https://metkagram.github.io/ru/practice/sets/register-shifting/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/reg.json"
    },
    {
      "id": "RTR",
      "slug": "russian-speaker-transfer-traps",
      "title_en": "Russian-speaker transfer traps",
      "title_ru": "Ловушки переноса из русского",
      "description": "Correct recurring English and German structures that Russian speakers tend to transfer literally.",
      "level": "B2–C1",
      "path": "RTR",
      "pattern_count": 12,
      "learning_path_ids": [
        "C1-GRAMMAR"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/russian-speaker-transfer-traps/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/russian-speaker-transfer-traps/",
        "ru": "https://metkagram.github.io/ru/practice/sets/russian-speaker-transfer-traps/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/rtr.json"
    },
    {
      "id": "TRN",
      "slug": "transformations-and-reformulation",
      "title_en": "Transformations and reformulation",
      "title_ru": "Трансформации и переформулирование",
      "description": "Rebuild the same meaning with a different grammatical or discourse frame.",
      "level": "B2–C1",
      "path": "TRN",
      "pattern_count": 6,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/transformations-and-reformulation/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/transformations-and-reformulation/",
        "ru": "https://metkagram.github.io/ru/practice/sets/transformations-and-reformulation/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/trn.json"
    },
    {
      "id": "FRM",
      "slug": "problem-framing-and-reframing",
      "title_en": "Problem framing and reframing",
      "title_ru": "Постановка и переопределение проблемы",
      "description": "Define the problem before solving it, expose hidden assumptions, and choose a more useful frame.",
      "level": "B2–C1",
      "path": "FRM",
      "pattern_count": 5,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/problem-framing-and-reframing/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/problem-framing-and-reframing/",
        "ru": "https://metkagram.github.io/ru/practice/sets/problem-framing-and-reframing/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/frm.json"
    },
    {
      "id": "UNC",
      "slug": "reasoning-under-uncertainty",
      "title_en": "Reasoning under uncertainty",
      "title_ru": "Рассуждение в условиях неопределённости",
      "description": "Separate evidence from assumptions, calibrate confidence, and identify what information would change the conclusion.",
      "level": "B2–C1",
      "path": "UNC",
      "pattern_count": 5,
      "learning_path_ids": [
        "C1-COMMUNICATE"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/reasoning-under-uncertainty/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/reasoning-under-uncertainty/",
        "ru": "https://metkagram.github.io/ru/practice/sets/reasoning-under-uncertainty/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/unc.json"
    },
    {
      "id": "SYS",
      "slug": "systems-thinking",
      "title_en": "Systems thinking",
      "title_ru": "Системное мышление",
      "description": "Trace second-order effects, bottlenecks, local optimisation, and the drivers that keep a problem recurring.",
      "level": "B2–C1",
      "path": "SYS",
      "pattern_count": 5,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/systems-thinking/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/systems-thinking/",
        "ru": "https://metkagram.github.io/ru/practice/sets/systems-thinking/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/sys.json"
    },
    {
      "id": "DEC",
      "slug": "decision-quality-and-trade-offs",
      "title_en": "Decision quality and trade-offs",
      "title_ru": "Качество решений и компромиссы",
      "description": "Compare options by explicit criteria, weigh the cost of delay, and preserve useful flexibility when certainty is impossible.",
      "level": "B2–C1",
      "path": "DEC",
      "pattern_count": 5,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/decision-quality-and-trade-offs/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/decision-quality-and-trade-offs/",
        "ru": "https://metkagram.github.io/ru/practice/sets/decision-quality-and-trade-offs/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/dec.json"
    },
    {
      "id": "CDG",
      "slug": "causal-diagnosis",
      "title_en": "Causal diagnosis",
      "title_ru": "Причинная диагностика",
      "description": "Separate triggers from causes, compare mechanisms, and diagnose causal structure without treating sequence as proof.",
      "level": "B2–C1",
      "path": "CDG",
      "pattern_count": 5,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/causal-diagnosis/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/causal-diagnosis/",
        "ru": "https://metkagram.github.io/ru/practice/sets/causal-diagnosis/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/cdg.json"
    },
    {
      "id": "HYP",
      "slug": "hypothesis-testing",
      "title_en": "Hypothesis testing",
      "title_ru": "Проверка гипотез",
      "description": "Turn explanations into testable predictions, seek discriminating evidence, and revise claims when the data require it.",
      "level": "B2–C1",
      "path": "HYP",
      "pattern_count": 5,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/hypothesis-testing/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/hypothesis-testing/",
        "ru": "https://metkagram.github.io/ru/practice/sets/hypothesis-testing/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/hyp.json"
    },
    {
      "id": "PST",
      "slug": "perspective-taking",
      "title_en": "Perspective taking",
      "title_ru": "Смена перспективы",
      "description": "Represent another viewpoint fairly, separate positions from interests, and locate the real source of disagreement.",
      "level": "B2–C1",
      "path": "PST",
      "pattern_count": 5,
      "learning_path_ids": [
        "C1-COMMUNICATE",
        "C1-FUNCTIONS"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/perspective-taking/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/perspective-taking/",
        "ru": "https://metkagram.github.io/ru/practice/sets/perspective-taking/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/pst.json"
    },
    {
      "id": "META",
      "slug": "metacognitive-learning",
      "title_en": "Metacognitive learning",
      "title_ru": "Метакогнитивное обучение",
      "description": "Notice what you recognise but cannot recall, diagnose recurring errors, and convert feedback into the next practice target.",
      "level": "B2–C1",
      "path": "META",
      "pattern_count": 5,
      "learning_path_ids": [
        "C1-CONTROL"
      ],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/metacognitive-learning/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/metacognitive-learning/",
        "ru": "https://metkagram.github.io/ru/practice/sets/metacognitive-learning/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/meta.json"
    },
    {
      "id": "GFA",
      "slug": "time-and-aspect",
      "title_en": "Time and aspect",
      "title_ru": "Время и вид действия",
      "description": "Compare how English and German express time and aspect. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/time-and-aspect/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/time-and-aspect/",
        "ru": "https://metkagram.github.io/ru/practice/sets/time-and-aspect/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfa.json"
    },
    {
      "id": "GFB",
      "slug": "modal-scope-and-past-inference",
      "title_en": "Modal scope and past inference",
      "title_ru": "Модальность и выводы о прошлом",
      "description": "Compare how English and German express modal scope and past inference. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/modal-scope-and-past-inference/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/modal-scope-and-past-inference/",
        "ru": "https://metkagram.github.io/ru/practice/sets/modal-scope-and-past-inference/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfb.json"
    },
    {
      "id": "GFC",
      "slug": "conditions-and-counterfactuals",
      "title_en": "Conditions and counterfactuals",
      "title_ru": "Условия и нереальные ситуации",
      "description": "Compare how English and German express conditions and counterfactuals. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/conditions-and-counterfactuals/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/conditions-and-counterfactuals/",
        "ru": "https://metkagram.github.io/ru/practice/sets/conditions-and-counterfactuals/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfc.json"
    },
    {
      "id": "GFD",
      "slug": "comparison-and-degree",
      "title_en": "Comparison and degree",
      "title_ru": "Сравнения и степень",
      "description": "Compare how English and German express comparison and degree. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/comparison-and-degree/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/comparison-and-degree/",
        "ru": "https://metkagram.github.io/ru/practice/sets/comparison-and-degree/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfd.json"
    },
    {
      "id": "GFE",
      "slug": "quantification-and-agreement",
      "title_en": "Quantification and agreement",
      "title_ru": "Количество и согласование",
      "description": "Compare how English and German express quantification and agreement. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/quantification-and-agreement/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/quantification-and-agreement/",
        "ru": "https://metkagram.github.io/ru/practice/sets/quantification-and-agreement/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfe.json"
    },
    {
      "id": "GFF",
      "slug": "negation-inversion-and-focus",
      "title_en": "Negation, inversion and focus",
      "title_ru": "Отрицание, инверсия и акцент",
      "description": "Compare how English and German express negation, inversion and focus. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/negation-inversion-and-focus/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/negation-inversion-and-focus/",
        "ru": "https://metkagram.github.io/ru/practice/sets/negation-inversion-and-focus/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gff.json"
    },
    {
      "id": "GFG",
      "slug": "relative-and-nominal-clauses",
      "title_en": "Relative and nominal clauses",
      "title_ru": "Относительные и именные придаточные",
      "description": "Compare how English and German express relative and nominal clauses. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/relative-and-nominal-clauses/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/relative-and-nominal-clauses/",
        "ru": "https://metkagram.github.io/ru/practice/sets/relative-and-nominal-clauses/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfg.json"
    },
    {
      "id": "GFH",
      "slug": "infinitive-tense-voice-and-subject-control",
      "title_en": "Infinitive tense, voice and subject control",
      "title_ru": "Время, залог и исполнитель инфинитива",
      "description": "Compare how English and German express infinitive tense, voice and subject control. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/infinitive-tense-voice-and-subject-control/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/infinitive-tense-voice-and-subject-control/",
        "ru": "https://metkagram.github.io/ru/practice/sets/infinitive-tense-voice-and-subject-control/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfh.json"
    },
    {
      "id": "GFI",
      "slug": "gerund-contrasts-and-participial-clauses",
      "title_en": "Gerund contrasts and participial clauses",
      "title_ru": "Герундий и причастные конструкции",
      "description": "Compare how English and German express gerund contrasts and participial clauses. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/gerund-contrasts-and-participial-clauses/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/gerund-contrasts-and-participial-clauses/",
        "ru": "https://metkagram.github.io/ru/practice/sets/gerund-contrasts-and-participial-clauses/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfi.json"
    },
    {
      "id": "GFJ",
      "slug": "passive-causative-and-perception",
      "title_en": "Passive, causative and perception",
      "title_ru": "Пассив, побуждение и восприятие",
      "description": "Compare how English and German express passive, causative and perception. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/passive-causative-and-perception/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/passive-causative-and-perception/",
        "ru": "https://metkagram.github.io/ru/practice/sets/passive-causative-and-perception/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfj.json"
    },
    {
      "id": "GFK",
      "slug": "reporting-and-clause-complements",
      "title_en": "Reporting and clause complements",
      "title_ru": "Косвенная речь и дополнения",
      "description": "Compare how English and German express reporting and clause complements. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/reporting-and-clause-complements/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/reporting-and-clause-complements/",
        "ru": "https://metkagram.github.io/ru/practice/sets/reporting-and-clause-complements/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfk.json"
    },
    {
      "id": "GFL",
      "slug": "questions-tags-and-ellipsis",
      "title_en": "Questions, tags and ellipsis",
      "title_ru": "Вопросы, хвостики и сокращения",
      "description": "Compare how English and German express questions, tags and ellipsis. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/questions-tags-and-ellipsis/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/questions-tags-and-ellipsis/",
        "ru": "https://metkagram.github.io/ru/practice/sets/questions-tags-and-ellipsis/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfl.json"
    },
    {
      "id": "GFM",
      "slug": "noun-phrases-and-reference",
      "title_en": "Noun phrases and reference",
      "title_ru": "Именные группы и отсылки",
      "description": "Compare how English and German express noun phrases and reference. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/noun-phrases-and-reference/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/noun-phrases-and-reference/",
        "ru": "https://metkagram.github.io/ru/practice/sets/noun-phrases-and-reference/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfm.json"
    },
    {
      "id": "GFN",
      "slug": "concession-cause-and-circumstance",
      "title_en": "Concession, cause and circumstance",
      "title_ru": "Уступка, причина, цель и обстоятельства",
      "description": "Compare how English and German express concession, cause and circumstance. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/concession-cause-and-circumstance/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/concession-cause-and-circumstance/",
        "ru": "https://metkagram.github.io/ru/practice/sets/concession-cause-and-circumstance/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfn.json"
    },
    {
      "id": "GFO",
      "slug": "german-led-grammatical-flexibility",
      "title_en": "German-led grammatical flexibility",
      "title_ru": "Немецкие конструкции и английские параллели",
      "description": "Compare how English and German express german-led grammatical flexibility. Practise reusable constructions with Russian translations.",
      "pattern_count": 20,
      "learning_path_ids": [],
      "canonical_url": "https://metkagram.github.io/en/practice/sets/german-led-grammatical-flexibility/",
      "page_urls": {
        "en": "https://metkagram.github.io/en/practice/sets/german-led-grammatical-flexibility/",
        "ru": "https://metkagram.github.io/ru/practice/sets/german-led-grammatical-flexibility/"
      },
      "api_url": "https://metkagram.github.io/api/v1/sets/gfo.json"
    }
  ]
}
