Duolingo – Ajax cheating

Đầu tiên gửi 1 Ajax để lấy list các Skills và các thông tin liên quan

https://www.duolingo.com/{2017-06-30}/users/{user-id}?fields=adsConfig,bio,blockedUserIds,canUseModerationTools,courses,creationDate,currentCourse,email,emailAnnouncement,emailAssignment,emailAssignmentComplete,emailClassroomJoin,emailClassroomLeave,emailComment,emailEditSuggested,emailFollow,emailPass,emailWeeklyProgressReport,emailSchoolsAnnouncement,emailStreamPost,emailVerified,emailWeeklyReport,enableMicrophone,enableSoundEffects,enableSpeaker,experiments%7Bacquisition_perimeterx_block_web,acquisition_web_save_credentials_3,courses_la_en_v1,learning_web_autoscroll_placement_test,learning_web_local_grading_v2,learning_web_placement_test_skip,midas_web_full_name_required_2,midas_web_student_plan_rerun,retention_add_more_leagues,retention_remove_streak_lingot_bonus,retention_web_juicify_soft_wall,retention_web_shorter_leaderboard,retention_web_shorter_streak_calendars,retention_web_streak_freeze_used,retention_web_streak_panel,retention_web_update_language_settings,stories_en_from_es_pt_3,web_auto_display_checkpoint_popover,web_lesson_coach_duo,web_smart_tips_apply_rules,web_smart_tips_request_rules%7D,facebookId,fromLanguage,globalAmbassadorStatus,googleId,hasPlus,id,inviteURL,joinedClassroomIds,lastStreak%7BisAvailableForRepair,length%7D,learningLanguage,lingots,location,monthlyXp,name,observedClassroomIds,optionalFeatures,persistentNotifications,picture,plusDiscounts,practiceReminderSettings,privacySettings,referralInfo,requiresParentalConsent,roles,streak,streakData%7Blength%7D,timezone,timezoneOffset,totalXp,trackingProperties,unconsumedGiftIds,username,webNotificationIds,weeklyXp,xpGains,xpGoal,zhTw,_achievements&_=1567952650160

Ajax này sẽ trả về nhiều thứ. Tuy nhiên cái quan tâm là currentCourse.skills.id

Tiếp tục là ajax lấy session cho skill tương ứng

https://www.duolingo.com/2017-06-30/sessions

Ajax này dùng POST và có data là

{"fromLanguage":"vi","learningLanguage":"en","challengeTypes":["characterIntro","characterMatch","characterSelect","completeReverseTranslation","definition","dialogue","form","freeResponse","gapFill","judge","listen","name","listenComprehension","listenTap","readComprehension","select","selectPronunciation","selectTranscription","speak","tapCloze","tapComplete","tapDescribe","translate"],"levelIndex":1,"levelSessionIndex":1,"skillId":"8b5996f5b0f1f4fb6320f1e6ac9b91b4","type":"LESSON","juicy":true,"smartTipsVersion":2}

Có thể thay skillId bằng bất kì ID nào có ở Skills trên

Ajax này trả về nhiều thứ. Những cái quan trọng là

  • challenges : Danh sách bộ câu hỏi và đáp án
  • id : ID của session này

Sau khi giải quyết hết các câu hỏi sẽ có 1 ajax mới

https://www.duolingo.com/2017-06-30/sessions/{session-id}

Sử dụng session id có từ request session ở trên

PUT này hơi khá complicated

{
  "fromLanguage": "vi",
  "levelSessionIndex": 1,
  "beginner": true,
  "learningLanguage": "en",
  "explanations": {},
  "trackingProperties": {
    "num_challenges_gt": 7,
    "num_challenges_gt_form": 1,
    "activity_uuid": "1e1f7c63-c324-4998-99af-49075d0313d8",
    "read_from_cache": false,
    "sum_content_length": 112,
    "level_index": 1,
    "skill_id": "8b5996f5b0f1f4fb6320f1e6ac9b91b4",
    "percent_kc_coverage": 1,
    "distinct_undirected_sentences_count": 7,
    "data_version": "default",
    "num_challenges_generated": 7,
    "level_session_index": 1,
    "num_challenges_gt_tap": 1,
    "lesson_number": 2,
    "offline": false,
    "skill_tree_id": "2eb417f7ac714adc24e39a11a3fcd9fc",
    "type": "lesson",
    "distinct_sentences_count": 7,
    "lexemes_were_reordered": false,
    "percent_high_failure_challenges": 0.2857142857142857,
    "skill_x_coord": 2,
    "tree_level": 1,
    "generation_timestamp": 1567952827134,
    "max_repeated_sentence_count": 1,
    "from_language": "vi",
    "skill_name": "Cơ bản 1",
    "expected_length": 7,
    "max_repeated_challenge_count": 1,
    "generation_app_version": null,
    "learning_language": "en",
    "num_challenges_gt_listen_tap": 1,
    "sentences_count": 7,
    "is_shorter_than_expected": false,
    "num_challenges_gt_target_learning_judge": 1,
    "max_repeated_undirected_sentence_count": 1,
    "num_high_failure_challenges": 2,
    "avg_content_length": 16,
    "num_challenges_gt_reverse_tap": 3
  },
  "lessonIndex": 1,
  "progressUpdates": [
    {
      "progressVersion": 4,
      "progress": [
        0,
        0,
        0.047619047619047616,
        0.047619047619047616,
        0.047619047619047616,
        0,
        0,
        0,
        0.047619047619047616,
        0,
        0,
        0,
        0,
        0.047619047619047616,
        0.047619047619047616,
        0.047619047619047616,
        0,
        0,
        0,
        0
      ],
      "levelIndex": 0,
      "progressKeys": [
        "01669d9689c5cf2ec04c58a893f02ab6",
        "0b92ea6f088f642e9aaa8c2acc7d7b0a",
        "0d9244f805fd55af1281a1bcb1a2cba6",
        "142ad0f32d08728de0f9955df5b83f32",
        "16f2acaffe30cb9a81f422674d398df4",
        "375662ec82debfdebd8215b147848cc7",
        "547bb1812414cec172b0afef5ca93fce",
        "5e29d77697d23070a1fb92eb6c90e9b6",
        "65e39bd07057893f74d8db10b367f7aa",
        "678bfa5d0ccd050c12395a792abaff12",
        "80765ae2a08ba6812a4ab9df607b97d2",
        "827a8ecb89f9b59ac5c29b620a5d3ed6",
        "928787744a962cd4ec55c1b22cedc913",
        "97e922f780d628eac638bea7a02bf496",
        "a826c47947d68549fa81e19cafa57ba0",
        "aa94db3b587c7027e8505c25f6fc8ed9",
        "b974624f112084b39586380fe4aaf32a",
        "c52ab45d4e22ee7580041911159e3c0c",
        "cdfecc9247566d40bb964a218c54c783",
        "d5efc552aaea3109eb5388aa1ec8673d"
      ],
      "skillId": "8b5996f5b0f1f4fb6320f1e6ac9b91b4"
    },
    {
      "progressVersion": 4,
      "progress": [
        0,
        0,
        0.047619047619047616,
        0.047619047619047616,
        0.047619047619047616,
        0,
        0,
        0,
        0.047619047619047616,
        0,
        0,
        0,
        0,
        0.047619047619047616,
        0.047619047619047616,
        0.047619047619047616,
        0,
        0,
        0,
        0
      ],
      "levelIndex": 1,
      "progressKeys": [
        "01669d9689c5cf2ec04c58a893f02ab6",
        "0b92ea6f088f642e9aaa8c2acc7d7b0a",
        "0d9244f805fd55af1281a1bcb1a2cba6",
        "142ad0f32d08728de0f9955df5b83f32",
        "16f2acaffe30cb9a81f422674d398df4",
        "375662ec82debfdebd8215b147848cc7",
        "547bb1812414cec172b0afef5ca93fce",
        "5e29d77697d23070a1fb92eb6c90e9b6",
        "65e39bd07057893f74d8db10b367f7aa",
        "678bfa5d0ccd050c12395a792abaff12",
        "80765ae2a08ba6812a4ab9df607b97d2",
        "827a8ecb89f9b59ac5c29b620a5d3ed6",
        "928787744a962cd4ec55c1b22cedc913",
        "97e922f780d628eac638bea7a02bf496",
        "a826c47947d68549fa81e19cafa57ba0",
        "aa94db3b587c7027e8505c25f6fc8ed9",
        "b974624f112084b39586380fe4aaf32a",
        "c52ab45d4e22ee7580041911159e3c0c",
        "cdfecc9247566d40bb964a218c54c783",
        "d5efc552aaea3109eb5388aa1ec8673d"
      ],
      "skillId": "8b5996f5b0f1f4fb6320f1e6ac9b91b4"
    }
  ],
  "challenges": [
    {
      "sentenceDiscussionId": "52c8d78f11b457b8561930c93b3f5e1e",
      "newWords": [],
      "sentenceId": "52c8d78f11b457b8561930c93b3f5e1e",
      "prompt": "Tôi ăn một trái táo.",
      "sourceLanguage": "vi",
      "progressUpdates": [],
      "correctIndices": [
        2
      ],
      "choices": [
        "I eat an woman.",
        "I eat an bread.",
        "I eat an apple."
      ],
      "targetLanguage": "en",
      "type": "judge",
      "id": "c5843e3b66304fc4835dd655e6936470",
      "metadata": {
        "tagged_kc_ids": [
          {
            "kc_type_str": "lex",
            "legacy_id": "142ad0f32d08728de0f9955df5b83f32"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "a826c47947d68549fa81e19cafa57ba0"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "aa94db3b587c7027e8505c25f6fc8ed9"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "678bfa5d0ccd050c12395a792abaff12"
          }
        ],
        "num_correct": 1,
        "solution_key": "52c8d78f11b457b8561930c93b3f5e1e",
        "source_language": "vi",
        "activity_uuid": "909c8d08-3999-424d-aa26-8c18cba98d12",
        "backoff": true,
        "lexemes_to_update": [
          "142ad0f32d08728de0f9955df5b83f32",
          "a826c47947d68549fa81e19cafa57ba0",
          "aa94db3b587c7027e8505c25f6fc8ed9"
        ],
        "sentences": [
          {
            "i": 0,
            "correct": false,
            "sentence": "I eat an woman.",
            "number": 1,
            "tabindex": 1
          },
          {
            "i": 1,
            "correct": false,
            "sentence": "I eat an bread.",
            "number": 2,
            "tabindex": 2
          },
          {
            "i": 2,
            "correct": true,
            "sentence": "I eat an apple.",
            "number": 3,
            "tabindex": 3
          }
        ],
        "lexeme_ids_to_update": [
          "142ad0f32d08728de0f9955df5b83f32",
          "a826c47947d68549fa81e19cafa57ba0",
          "aa94db3b587c7027e8505c25f6fc8ed9",
          "678bfa5d0ccd050c12395a792abaff12"
        ],
        "unknown_words": [],
        "specific_type": "target_learning_judge",
        "num_comments": 32,
        "generator_id": "52c8d78f11b457b8561930c93b3f5e1e",
        "text": "Tôi ăn một trái táo.",
        "type": "judge",
        "generic_lexeme_map": {},
        "teaches_lexeme_ids": [
          "142ad0f32d08728de0f9955df5b83f32",
          "a826c47947d68549fa81e19cafa57ba0",
          "aa94db3b587c7027e8505c25f6fc8ed9"
        ],
        "correct_solutions": [
          2
        ],
        "sentence_id": "52c8d78f11b457b8561930c93b3f5e1e",
        "discussion_count": 32,
        "known": true,
        "from_language": "vi",
        "correct_indices": [
          2
        ],
        "learning_language": "en",
        "highlight": [],
        "knowledge_components": [
          "142ad0f32d08728de0f9955df5b83f32",
          "a826c47947d68549fa81e19cafa57ba0",
          "aa94db3b587c7027e8505c25f6fc8ed9"
        ],
        "options": [
          {
            "i": 0,
            "correct": false,
            "sentence": "I eat an woman.",
            "number": 1,
            "tabindex": 1
          },
          {
            "i": 1,
            "correct": false,
            "sentence": "I eat an bread.",
            "number": 2,
            "tabindex": 2
          },
          {
            "i": 2,
            "correct": true,
            "sentence": "I eat an apple.",
            "number": 3,
            "tabindex": 3
          }
        ],
        "target_language": "en"
      },
      "timeTaken": 183775,
      "correct": true,
      "correctSolutions": [
        "I eat an apple."
      ],
      "guess": 2
    },
    {
      "sentenceDiscussionId": "8942f9200fad27c9a98d1241d8efca14",
      "newWords": [],
      "sentenceId": "8942f9200fad27c9a98d1241d8efca14",
      "prompt": "She is a girl and I am a boy.",
      "correctSolutions": [
        "Cô ấy là một cô bé và tôi là một cậu bé."
      ],
      "sourceLanguage": "en",
      "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/a2c51b1b8742341c411a9034ae9f3c79",
      "wrongTokens": [
        "nữ",
        "táo",
        "trái",
        "phụ"
      ],
      "compactTranslations": [
        "Cô ấy là một cô bé và tôi là một cậu bé.",
        "[Cô/Chị] [ấy/ta] là [một/] [con gái/cô gái/cô con gái/đứa con gái/cô bé/bé gái/người con gái] [và/còn] tôi là [một/] [con trai/cậu bé/thằng con trai/đứa con trai/chàng trai/cậu con trai/chú bé/bé trai/thằng bé/người con trai]."
      ],
      "metadata": {
        "tagged_kc_ids": [
          {
            "kc_type_str": "lex",
            "legacy_id": "547bb1812414cec172b0afef5ca93fce"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "827a8ecb89f9b59ac5c29b620a5d3ed6"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "0d9244f805fd55af1281a1bcb1a2cba6"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "97e922f780d628eac638bea7a02bf496"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "0b92ea6f088f642e9aaa8c2acc7d7b0a"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "65e39bd07057893f74d8db10b367f7aa"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "80765ae2a08ba6812a4ab9df607b97d2"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "678bfa5d0ccd050c12395a792abaff12"
          }
        ],
        "non_character_tts": {
          "tokens": {
            "a": "https://d1vq87e9lcf771.cloudfront.net/joey/f87eaf58e5c92f51f6363430351e9940",
            "boy": "https://d1vq87e9lcf771.cloudfront.net/joey/2072f2a2a8d261ea214d8593ddb8d3a2",
            "and": "https://d1vq87e9lcf771.cloudfront.net/joey/4579340d48edc13cb319fe89c01cba24",
            "I": "https://d1vq87e9lcf771.cloudfront.net/joey/24b18a31cac362a0cef58b1b942f3f55",
            "is": "https://d1vq87e9lcf771.cloudfront.net/joey/bcbdd2b76268017755653875b80904c4",
            "am": "https://d1vq87e9lcf771.cloudfront.net/joey/f7b2086332378f8ebca70827e116eb8d",
            "She": "https://d1vq87e9lcf771.cloudfront.net/joey/2b2875274bf30b583ff96cfc06ec1b38",
            "girl": "https://d1vq87e9lcf771.cloudfront.net/joey/c9d0380602ab5ddf74a4f534a2ae2116"
          },
          "slow": "https://d1vq87e9lcf771.cloudfront.net/joey/c63d247357deb33b88c2ec9810f76220",
          "normal": "https://d1vq87e9lcf771.cloudfront.net/joey/a2c51b1b8742341c411a9034ae9f3c79"
        },
        "sentence": "She is a girl and I am a boy.",
        "solution_key": "8942f9200fad27c9a98d1241d8efca14",
        "source_language": "en",
        "activity_uuid": "909c8d08-3999-424d-aa26-8c18cba98d12",
        "wrong_tokens": [
          "nữ",
          "táo",
          "trái",
          "phụ"
        ],
        "lexeme_ids_to_update": [
          "547bb1812414cec172b0afef5ca93fce",
          "827a8ecb89f9b59ac5c29b620a5d3ed6",
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "97e922f780d628eac638bea7a02bf496",
          "0b92ea6f088f642e9aaa8c2acc7d7b0a",
          "65e39bd07057893f74d8db10b367f7aa",
          "80765ae2a08ba6812a4ab9df607b97d2",
          "678bfa5d0ccd050c12395a792abaff12"
        ],
        "unknown_words": [
          "She"
        ],
        "specific_type": "translate",
        "wrong_lexemes": [
          "nữ",
          "táo",
          "trái",
          "phụ"
        ],
        "num_comments": 62,
        "generator_id": "8942f9200fad27c9a98d1241d8efca14",
        "text": "She is a girl and I am a boy.",
        "type": "translate",
        "new_explanation_ids": [],
        "generic_lexeme_map": {},
        "lexeme_ids": [
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "97e922f780d628eac638bea7a02bf496",
          "65e39bd07057893f74d8db10b367f7aa"
        ],
        "teaches_lexeme_ids": [
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "97e922f780d628eac638bea7a02bf496",
          "65e39bd07057893f74d8db10b367f7aa"
        ],
        "tokens": [
          "Cô",
          "ấy",
          "là",
          "một",
          "cô",
          "bé",
          "và",
          "tôi",
          "là",
          "một",
          "cậu",
          "bé"
        ],
        "sentence_id": "8942f9200fad27c9a98d1241d8efca14",
        "discussion_count": 62,
        "target_language_name": "Vietnamese",
        "highlight": [],
        "translation": "Cô ấy là một cô bé và tôi là một cậu bé.",
        "from_language": "vi",
        "has_tts": true,
        "learning_language": "en",
        "has_accents": false,
        "lexemes_to_update": [
          "0b92ea6f088f642e9aaa8c2acc7d7b0a",
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "547bb1812414cec172b0afef5ca93fce",
          "65e39bd07057893f74d8db10b367f7aa",
          "678bfa5d0ccd050c12395a792abaff12",
          "80765ae2a08ba6812a4ab9df607b97d2",
          "827a8ecb89f9b59ac5c29b620a5d3ed6",
          "97e922f780d628eac638bea7a02bf496"
        ],
        "knowledge_components": [
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "97e922f780d628eac638bea7a02bf496",
          "65e39bd07057893f74d8db10b367f7aa"
        ],
        "target_language": "vi"
      },
      "progressUpdates": [],
      "correctIndices": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9,
        10,
        11
      ],
      "tokens": [
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "cô ấy"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "cô ta"
                }
              ]
            ]
          },
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/2b2875274bf30b583ff96cfc06ec1b38",
          "value": "She"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "là"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "ở"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "đang"
                }
              ]
            ]
          },
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/bcbdd2b76268017755653875b80904c4",
          "value": "is"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "một"
                }
              ]
            ]
          },
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/3b6b373905a4351a2ca6a1bb07b6888a",
          "value": "a"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "cô bé"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "cô gái"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "bé gái"
                }
              ]
            ]
          },
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/c9d0380602ab5ddf74a4f534a2ae2116",
          "value": "girl"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "và"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "với"
                }
              ]
            ]
          },
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/4579340d48edc13cb319fe89c01cba24",
          "value": "and"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "tôi"
                }
              ]
            ]
          },
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/81fc6ff8ce84e29155680651d54d6ca2",
          "value": "I"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "là"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "đang"
                }
              ]
            ]
          },
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/f7b2086332378f8ebca70827e116eb8d",
          "value": "am"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "một"
                }
              ]
            ]
          },
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/3b6b373905a4351a2ca6a1bb07b6888a",
          "value": "a"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "cậu bé"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "thằng nhóc"
                }
              ]
            ]
          },
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/2072f2a2a8d261ea214d8593ddb8d3a2",
          "value": "boy"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/42f5c8f8e1ba7916757ad434dffad3e5",
          "value": "."
        }
      ],
      "correctTokens": [
        "Cô",
        "ấy",
        "là",
        "một",
        "cô",
        "bé",
        "và",
        "tôi",
        "là",
        "một",
        "cậu",
        "bé"
      ],
      "targetLanguage": "vi",
      "type": "translate",
      "id": "ca5f4dcf86ef45368b43e7cb1b0c1772",
      "choices": [
        {
          "tts": null,
          "text": "Cô"
        },
        {
          "tts": null,
          "text": "ấy"
        },
        {
          "tts": null,
          "text": "là"
        },
        {
          "tts": null,
          "text": "một"
        },
        {
          "tts": null,
          "text": "cô"
        },
        {
          "tts": null,
          "text": "bé"
        },
        {
          "tts": null,
          "text": "và"
        },
        {
          "tts": null,
          "text": "tôi"
        },
        {
          "tts": null,
          "text": "là"
        },
        {
          "tts": null,
          "text": "một"
        },
        {
          "tts": null,
          "text": "cậu"
        },
        {
          "tts": null,
          "text": "bé"
        },
        {
          "tts": null,
          "text": "nữ"
        },
        {
          "tts": null,
          "text": "táo"
        },
        {
          "tts": null,
          "text": "trái"
        },
        {
          "tts": null,
          "text": "phụ"
        }
      ],
      "timeTaken": 27044,
      "closestSolution": "Cô ấy là một cô bé và tôi là một cậu bé.",
      "correct": true,
      "guess": "Cô ấy là một cô bé và tôi là một cậu bé."
    },
    {
      "sentenceDiscussionId": "7d943917cf533f858717c52296f3f7de",
      "newWords": [],
      "sentenceId": "7d943917cf533f858717c52296f3f7de",
      "prompt": "Anh ấy là một cậu bé.",
      "correctSolutions": [
        "He is a boy."
      ],
      "sourceLanguage": "vi",
      "tts": "https://d1vq87e9lcf771.cloudfront.net/vi_v1/0a2af52e3bc1d9bdc7c2ca2f015e3433",
      "wrongTokens": [
        "apple",
        "an",
        "and",
        "she"
      ],
      "compactTranslations": [
        "He is a boy.",
        "He is [the/a/one] [boy/young man/lad/little boy]."
      ],
      "metadata": {
        "tagged_kc_ids": [
          {
            "kc_type_str": "lex",
            "legacy_id": "97e922f780d628eac638bea7a02bf496"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "0b92ea6f088f642e9aaa8c2acc7d7b0a"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "16f2acaffe30cb9a81f422674d398df4"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "827a8ecb89f9b59ac5c29b620a5d3ed6"
          }
        ],
        "sentence": "Anh ấy là một cậu bé.",
        "solution_key": "7d943917cf533f858717c52296f3f7de",
        "source_language": "vi",
        "activity_uuid": "909c8d08-3999-424d-aa26-8c18cba98d12",
        "lexemes_to_update": [
          "16f2acaffe30cb9a81f422674d398df4",
          "97e922f780d628eac638bea7a02bf496"
        ],
        "lexeme_ids_to_update": [
          "97e922f780d628eac638bea7a02bf496",
          "16f2acaffe30cb9a81f422674d398df4"
        ],
        "unknown_words": [
          "He"
        ],
        "specific_type": "reverse_translate",
        "wrong_lexemes": [
          "apple",
          "an",
          "and",
          "she"
        ],
        "num_comments": 53,
        "generator_id": "7d943917cf533f858717c52296f3f7de",
        "text": "Anh ấy là một cậu bé.",
        "type": "translate",
        "new_explanation_ids": [],
        "generic_lexeme_map": {},
        "lexeme_ids": [
          "97e922f780d628eac638bea7a02bf496",
          "16f2acaffe30cb9a81f422674d398df4"
        ],
        "teaches_lexeme_ids": [
          "97e922f780d628eac638bea7a02bf496",
          "16f2acaffe30cb9a81f422674d398df4"
        ],
        "tokens": [
          "He",
          "is",
          "a",
          "boy"
        ],
        "sentence_id": "7d943917cf533f858717c52296f3f7de",
        "discussion_count": 53,
        "target_language_name": "English",
        "highlight": [],
        "translation": "He is a boy.",
        "from_language": "vi",
        "has_tts": false,
        "learning_language": "en",
        "has_accents": true,
        "wrong_tokens": [
          "apple",
          "an",
          "and",
          "she"
        ],
        "knowledge_components": [
          "97e922f780d628eac638bea7a02bf496",
          "16f2acaffe30cb9a81f422674d398df4"
        ],
        "target_language": "en"
      },
      "progressUpdates": [],
      "correctIndices": [
        0,
        1,
        2,
        3
      ],
      "tokens": [
        {
          "hintTable": {
            "headers": [
              "anh",
              "ấy"
            ],
            "rows": [
              [
                {
                  "colspan": 2,
                  "hint": "he"
                }
              ],
              [
                {
                  "colspan": 2,
                  "hint": "him"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "elder brother"
                },
                {
                  "colspan": 1
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "Britain"
                },
                {
                  "colspan": 1
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "English"
                },
                {
                  "colspan": 1
                }
              ]
            ]
          },
          "value": "Anh"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [
              "anh",
              "ấy"
            ],
            "rows": [
              [
                {
                  "colspan": 2,
                  "hint": "he"
                }
              ],
              [
                {
                  "colspan": 2,
                  "hint": "him"
                }
              ],
              [
                {
                  "colspan": 1
                },
                {
                  "colspan": 1,
                  "hint": "that"
                }
              ]
            ]
          },
          "value": "ấy"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "is"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "am"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "that"
                }
              ]
            ]
          },
          "value": "là"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "a"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "one"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "an"
                }
              ]
            ]
          },
          "value": "một"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [
              "cậu",
              "bé"
            ],
            "rows": [
              [
                {
                  "colspan": 2,
                  "hint": "boy"
                }
              ],
              [
                {
                  "colspan": 2,
                  "hint": "little boy"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "uncle"
                },
                {
                  "colspan": 1
                }
              ]
            ]
          },
          "value": "cậu"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [
              "cậu",
              "bé"
            ],
            "rows": [
              [
                {
                  "colspan": 2,
                  "hint": "boy"
                }
              ],
              [
                {
                  "colspan": 2,
                  "hint": "little boy"
                }
              ],
              [
                {
                  "colspan": 1
                },
                {
                  "colspan": 1,
                  "hint": "little"
                }
              ],
              [
                {
                  "colspan": 1
                },
                {
                  "colspan": 1,
                  "hint": "baby"
                }
              ],
              [
                {
                  "colspan": 1
                },
                {
                  "colspan": 1,
                  "hint": "small"
                }
              ]
            ]
          },
          "value": "bé"
        },
        {
          "value": "."
        }
      ],
      "correctTokens": [
        "He",
        "is",
        "a",
        "boy"
      ],
      "targetLanguage": "en",
      "type": "translate",
      "id": "3ee7f32a2fe448f49cd83a8c90cefdc0",
      "choices": [
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/93cd2db61f4b7de75885d74bea1d308a",
          "text": "He"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/1f5c4a3cea02f78c013398466cdff526",
          "text": "is"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/3b6b373905a4351a2ca6a1bb07b6888a",
          "text": "a"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/0611740980b1d460c7dde52501baaa65",
          "text": "boy"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/e7d25b73c479030243026d7f84b5f065",
          "text": "apple"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/ddd546bdcc279682f016a4d899d796bf",
          "text": "an"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/8d3404963b6fb4b7fa0dcdddb50d8b89",
          "text": "and"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/592aef72c264760a994a8b45663b7db8",
          "text": "she"
        }
      ],
      "timeTaken": 9987,
      "closestSolution": "He is a boy.",
      "correct": true,
      "guess": "He is a boy."
    },
    {
      "sentenceDiscussionId": "512b9a7f01e237329823f805b8d7e9c1",
      "newWords": [],
      "sentenceId": "512b9a7f01e237329823f805b8d7e9c1",
      "prompt": "He is a man and I am a boy.",
      "solutionTranslation": "Anh ấy là một người đàn ông và tôi là một cậu bé.",
      "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/38efcb70a2d7bad65b5ced98015d589f",
      "wrongTokens": [
        "eat",
        "he",
        "an",
        "apple"
      ],
      "progressUpdates": [],
      "correctIndices": [
        0,
        1,
        2,
        3,
        4,
        5,
        6,
        7,
        8
      ],
      "slowTts": "https://d1vq87e9lcf771.cloudfront.net/joey/ca688e35e0ed1c93a4954cb2ba88da7d",
      "correctTokens": [
        "He",
        "is",
        "a",
        "man",
        "and",
        "I",
        "am",
        "a",
        "boy"
      ],
      "choices": [
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/793a15a963bc44bd2013a893085d43ec",
          "text": "He"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/bcbdd2b76268017755653875b80904c4",
          "text": "is"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/f87eaf58e5c92f51f6363430351e9940",
          "text": "a"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/5faa5cf07d96c4346fa42bda3eeb9709",
          "text": "man"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/4579340d48edc13cb319fe89c01cba24",
          "text": "and"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/81fc6ff8ce84e29155680651d54d6ca2",
          "text": "I"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/f7b2086332378f8ebca70827e116eb8d",
          "text": "am"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/f87eaf58e5c92f51f6363430351e9940",
          "text": "a"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/2072f2a2a8d261ea214d8593ddb8d3a2",
          "text": "boy"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/f4a87e55b1af7247b55ab18c8e45affe",
          "text": "eat"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/793a15a963bc44bd2013a893085d43ec",
          "text": "he"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/41489d676b3b9535e7c2e747990e592d",
          "text": "an"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/a5567d9ea33a33d4ac0d3b49de19b891",
          "text": "apple"
        }
      ],
      "type": "listenTap",
      "id": "703a688e57464435a53ded7bce03a1b9",
      "metadata": {
        "tagged_kc_ids": [
          {
            "kc_type_str": "lex",
            "legacy_id": "827a8ecb89f9b59ac5c29b620a5d3ed6"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "0d9244f805fd55af1281a1bcb1a2cba6"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "97e922f780d628eac638bea7a02bf496"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "0b92ea6f088f642e9aaa8c2acc7d7b0a"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "80765ae2a08ba6812a4ab9df607b97d2"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "b974624f112084b39586380fe4aaf32a"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "678bfa5d0ccd050c12395a792abaff12"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "16f2acaffe30cb9a81f422674d398df4"
          }
        ],
        "solution_key": "512b9a7f01e237329823f805b8d7e9c1",
        "source_language": "en",
        "activity_uuid": "909c8d08-3999-424d-aa26-8c18cba98d12",
        "wrong_tokens": [
          "eat",
          "he",
          "an",
          "apple"
        ],
        "lexeme_ids_to_update": [
          "827a8ecb89f9b59ac5c29b620a5d3ed6",
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "97e922f780d628eac638bea7a02bf496",
          "0b92ea6f088f642e9aaa8c2acc7d7b0a",
          "80765ae2a08ba6812a4ab9df607b97d2",
          "b974624f112084b39586380fe4aaf32a",
          "678bfa5d0ccd050c12395a792abaff12",
          "16f2acaffe30cb9a81f422674d398df4"
        ],
        "unknown_words": [],
        "specific_type": "listen_tap",
        "num_comments": 17,
        "solution_translation": "Anh ấy là một người đàn ông và tôi là một cậu bé.",
        "text": "He is a man and I am a boy.",
        "language_name": "English",
        "type": "listen_tap",
        "generator_id": "512b9a7f01e237329823f805b8d7e9c1",
        "generic_lexeme_map": {},
        "lexeme_ids": [
          "16f2acaffe30cb9a81f422674d398df4",
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "97e922f780d628eac638bea7a02bf496"
        ],
        "teaches_lexeme_ids": [
          "16f2acaffe30cb9a81f422674d398df4",
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "97e922f780d628eac638bea7a02bf496"
        ],
        "correct_solutions": "He is a man and I am a boy.",
        "tokens": [
          "He",
          "is",
          "a",
          "man",
          "and",
          "I",
          "am",
          "a",
          "boy"
        ],
        "sentence_id": "512b9a7f01e237329823f805b8d7e9c1",
        "discussion_count": 0,
        "highlight": [],
        "from_language": "vi",
        "language": "en",
        "learning_language": "en",
        "lexemes_to_update": [
          "0b92ea6f088f642e9aaa8c2acc7d7b0a",
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "16f2acaffe30cb9a81f422674d398df4",
          "678bfa5d0ccd050c12395a792abaff12",
          "80765ae2a08ba6812a4ab9df607b97d2",
          "827a8ecb89f9b59ac5c29b620a5d3ed6",
          "97e922f780d628eac638bea7a02bf496",
          "b974624f112084b39586380fe4aaf32a"
        ],
        "knowledge_components": [
          "16f2acaffe30cb9a81f422674d398df4",
          "0d9244f805fd55af1281a1bcb1a2cba6",
          "97e922f780d628eac638bea7a02bf496"
        ]
      },
      "timeTaken": 6043,
      "closestSolution": "He is a man and I am a boy.",
      "correct": true,
      "guess": "He is a man and I am a boy."
    },
    {
      "sentenceDiscussionId": "2db143580b1411fa488bd97adf6054a2",
      "newWords": [],
      "sentenceId": "2db143580b1411fa488bd97adf6054a2",
      "prompt": "một trái táo",
      "correctSolutions": [
        "an apple"
      ],
      "sourceLanguage": "vi",
      "tts": null,
      "wrongTokens": [
        "he",
        "and",
        "is",
        "she"
      ],
      "compactTranslations": [
        "an apple",
        "[one/the] apple"
      ],
      "metadata": {
        "tagged_kc_ids": [
          {
            "kc_type_str": "lex",
            "legacy_id": "142ad0f32d08728de0f9955df5b83f32"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "aa94db3b587c7027e8505c25f6fc8ed9"
          }
        ],
        "sentence": "một trái táo",
        "solution_key": "2db143580b1411fa488bd97adf6054a2",
        "source_language": "vi",
        "activity_uuid": "909c8d08-3999-424d-aa26-8c18cba98d12",
        "lexemes_to_update": [
          "142ad0f32d08728de0f9955df5b83f32",
          "aa94db3b587c7027e8505c25f6fc8ed9"
        ],
        "lexeme_ids_to_update": [
          "142ad0f32d08728de0f9955df5b83f32",
          "aa94db3b587c7027e8505c25f6fc8ed9"
        ],
        "unknown_words": [],
        "specific_type": "reverse_translate",
        "wrong_lexemes": [
          "he",
          "and",
          "is",
          "she"
        ],
        "num_comments": 36,
        "generator_id": "2db143580b1411fa488bd97adf6054a2",
        "text": "một trái táo",
        "type": "translate",
        "new_explanation_ids": [],
        "generic_lexeme_map": {},
        "lexeme_ids": [
          "142ad0f32d08728de0f9955df5b83f32",
          "aa94db3b587c7027e8505c25f6fc8ed9"
        ],
        "teaches_lexeme_ids": [
          "142ad0f32d08728de0f9955df5b83f32",
          "aa94db3b587c7027e8505c25f6fc8ed9"
        ],
        "tokens": [
          "an",
          "apple"
        ],
        "sentence_id": "2db143580b1411fa488bd97adf6054a2",
        "discussion_count": 36,
        "target_language_name": "English",
        "highlight": [],
        "translation": "an apple",
        "from_language": "vi",
        "has_tts": false,
        "learning_language": "en",
        "has_accents": true,
        "wrong_tokens": [
          "he",
          "and",
          "is",
          "she"
        ],
        "knowledge_components": [
          "142ad0f32d08728de0f9955df5b83f32",
          "aa94db3b587c7027e8505c25f6fc8ed9"
        ],
        "target_language": "en"
      },
      "progressUpdates": [],
      "correctIndices": [
        0,
        1
      ],
      "tokens": [
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "an"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "one"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "a"
                }
              ]
            ]
          },
          "value": "một"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [
              "trái",
              "táo"
            ],
            "rows": [
              [
                {
                  "colspan": 2,
                  "hint": "apple"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "(classifier for fruits)"
                },
                {
                  "colspan": 1
                }
              ]
            ]
          },
          "value": "trái"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [
              "trái",
              "táo"
            ],
            "rows": [
              [
                {
                  "colspan": 2,
                  "hint": "apple"
                }
              ],
              [
                {
                  "colspan": 1
                },
                {
                  "colspan": 1,
                  "hint": "apple"
                }
              ],
              [
                {
                  "colspan": 1
                },
                {
                  "colspan": 1,
                  "hint": "apples"
                }
              ]
            ]
          },
          "value": "táo"
        }
      ],
      "correctTokens": [
        "an",
        "apple"
      ],
      "targetLanguage": "en",
      "type": "translate",
      "id": "ed4a59d9ee8149afbc9ab8a4dcb0c1a6",
      "choices": [
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/ddd546bdcc279682f016a4d899d796bf",
          "text": "an"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/e7d25b73c479030243026d7f84b5f065",
          "text": "apple"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/793a15a963bc44bd2013a893085d43ec",
          "text": "he"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/8d3404963b6fb4b7fa0dcdddb50d8b89",
          "text": "and"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/bcbdd2b76268017755653875b80904c4",
          "text": "is"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/592aef72c264760a994a8b45663b7db8",
          "text": "she"
        }
      ],
      "timeTaken": 13654,
      "closestSolution": "an apple",
      "correct": true,
      "guess": "an apple"
    },
    {
      "newWords": [],
      "metadata": {
        "generic_lexeme_map": {},
        "tagged_kc_ids": [
          {
            "kc_type_str": "lex",
            "legacy_id": "142ad0f32d08728de0f9955df5b83f32"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "a826c47947d68549fa81e19cafa57ba0"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "aa94db3b587c7027e8505c25f6fc8ed9"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "678bfa5d0ccd050c12395a792abaff12"
          }
        ],
        "solution_key": "b652e3673678a329feeb6677031aa3c2",
        "teaches_lexeme_ids": [
          "142ad0f32d08728de0f9955df5b83f32"
        ],
        "correct_solutions": [
          "I eat an apple."
        ],
        "form_element_key": "db0e8666720b0402e51393e8d40172f2",
        "tokens": [
          {
            "i": 0,
            "word": true,
            "display_value": "I"
          },
          {
            "i": 1,
            "word": true,
            "display_value": " "
          },
          {
            "i": 2,
            "word": true,
            "display_value": "eat"
          },
          {
            "i": 5,
            "word": true,
            "display_value": " "
          },
          {
            "i": 6,
            "options": [
              {
                "display_value": "a",
                "value": "a",
                "correct": false
              },
              {
                "display_value": "am",
                "value": "am",
                "correct": false
              },
              {
                "display_value": "an",
                "value": "an",
                "correct": true
              }
            ]
          },
          {
            "i": 8,
            "word": true,
            "display_value": " "
          },
          {
            "i": 9,
            "word": true,
            "display_value": "apple"
          },
          {
            "i": 14,
            "word": true,
            "display_value": "."
          }
        ],
        "lexeme_ids": [
          "142ad0f32d08728de0f9955df5b83f32"
        ],
        "lexemes_to_update": [
          "142ad0f32d08728de0f9955df5b83f32",
          "678bfa5d0ccd050c12395a792abaff12",
          "a826c47947d68549fa81e19cafa57ba0",
          "aa94db3b587c7027e8505c25f6fc8ed9"
        ],
        "activity_uuid": "909c8d08-3999-424d-aa26-8c18cba98d12",
        "highlight": [],
        "lexeme_ids_to_update": [
          "142ad0f32d08728de0f9955df5b83f32",
          "a826c47947d68549fa81e19cafa57ba0",
          "aa94db3b587c7027e8505c25f6fc8ed9",
          "678bfa5d0ccd050c12395a792abaff12"
        ],
        "from_language": "vi",
        "unknown_words": [],
        "form_tokens": [
          {
            "i": 0,
            "word": true,
            "display_value": "I"
          },
          {
            "i": 1,
            "word": true,
            "display_value": " "
          },
          {
            "i": 2,
            "word": true,
            "display_value": "eat"
          },
          {
            "i": 5,
            "word": true,
            "display_value": " "
          },
          {
            "i": 6,
            "options": [
              {
                "display_value": "a",
                "value": "a",
                "correct": false
              },
              {
                "display_value": "am",
                "value": "am",
                "correct": false
              },
              {
                "display_value": "an",
                "value": "an",
                "correct": true
              }
            ]
          },
          {
            "i": 8,
            "word": true,
            "display_value": " "
          },
          {
            "i": 9,
            "word": true,
            "display_value": "apple"
          },
          {
            "i": 14,
            "word": true,
            "display_value": "."
          }
        ],
        "specific_type": "form",
        "num_comments": 10,
        "learning_language": "en",
        "generator_id": "db0e8666720b0402e51393e8d40172f2",
        "discussion_count": 10,
        "knowledge_components": [
          "142ad0f32d08728de0f9955df5b83f32"
        ],
        "type": "form",
        "solution_translation": "Tôi ăn một trái táo."
      },
      "solutionTranslation": "Tôi ăn một trái táo.",
      "correctIndex": 2,
      "promptPieces": [
        "I eat ",
        " apple."
      ],
      "type": "form",
      "id": "24fd42f1b4e045969c703ff1af25d190",
      "progressUpdates": [],
      "choices": [
        "a",
        "am",
        "an"
      ],
      "timeTaken": 10294,
      "correct": true,
      "correctSolutions": [
        "an"
      ],
      "guess": "2"
    },
    {
      "sentenceDiscussionId": "2a656cdbff812f5739643fc32fdf975a",
      "newWords": [],
      "sentenceId": "2a656cdbff812f5739643fc32fdf975a",
      "prompt": "Tôi ăn.",
      "correctSolutions": [
        "I eat."
      ],
      "sourceLanguage": "vi",
      "tts": null,
      "wrongTokens": [
        "apple",
        "he",
        "is",
        "and"
      ],
      "compactTranslations": [
        "I eat."
      ],
      "metadata": {
        "tagged_kc_ids": [
          {
            "kc_type_str": "lex",
            "legacy_id": "a826c47947d68549fa81e19cafa57ba0"
          },
          {
            "kc_type_str": "lex",
            "legacy_id": "678bfa5d0ccd050c12395a792abaff12"
          }
        ],
        "sentence": "Tôi ăn.",
        "solution_key": "2a656cdbff812f5739643fc32fdf975a",
        "source_language": "vi",
        "activity_uuid": "909c8d08-3999-424d-aa26-8c18cba98d12",
        "lexemes_to_update": [
          "a826c47947d68549fa81e19cafa57ba0"
        ],
        "lexeme_ids_to_update": [
          "a826c47947d68549fa81e19cafa57ba0"
        ],
        "unknown_words": [],
        "specific_type": "reverse_translate",
        "wrong_lexemes": [
          "apple",
          "he",
          "is",
          "and"
        ],
        "num_comments": 71,
        "generator_id": "2a656cdbff812f5739643fc32fdf975a",
        "text": "Tôi ăn.",
        "type": "translate",
        "new_explanation_ids": [],
        "generic_lexeme_map": {},
        "lexeme_ids": [
          "a826c47947d68549fa81e19cafa57ba0"
        ],
        "teaches_lexeme_ids": [
          "a826c47947d68549fa81e19cafa57ba0"
        ],
        "tokens": [
          "I",
          "eat"
        ],
        "sentence_id": "2a656cdbff812f5739643fc32fdf975a",
        "discussion_count": 71,
        "target_language_name": "English",
        "highlight": [],
        "translation": "I eat.",
        "from_language": "vi",
        "has_tts": false,
        "learning_language": "en",
        "has_accents": false,
        "wrong_tokens": [
          "apple",
          "he",
          "is",
          "and"
        ],
        "knowledge_components": [
          "a826c47947d68549fa81e19cafa57ba0"
        ],
        "target_language": "en"
      },
      "progressUpdates": [],
      "correctIndices": [
        0,
        1
      ],
      "tokens": [
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "I"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "me"
                }
              ]
            ]
          },
          "value": "Tôi"
        },
        {
          "value": " "
        },
        {
          "hintTable": {
            "headers": [],
            "rows": [
              [
                {
                  "colspan": 1,
                  "hint": "eat"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "eats"
                }
              ],
              [
                {
                  "colspan": 1,
                  "hint": "eating"
                }
              ]
            ]
          },
          "value": "ăn"
        },
        {
          "value": "."
        }
      ],
      "correctTokens": [
        "I",
        "eat"
      ],
      "targetLanguage": "en",
      "type": "translate",
      "id": "ae64cb2c05e4462d9fae076c11654e3d",
      "choices": [
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/b0c2d4f97d2b4a3475d061be095bbe54",
          "text": "I"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/f4a87e55b1af7247b55ab18c8e45affe",
          "text": "eat"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/a5567d9ea33a33d4ac0d3b49de19b891",
          "text": "apple"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/93cd2db61f4b7de75885d74bea1d308a",
          "text": "he"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/joey/bcbdd2b76268017755653875b80904c4",
          "text": "is"
        },
        {
          "tts": "https://d1vq87e9lcf771.cloudfront.net/salli/8d3404963b6fb4b7fa0dcdddb50d8b89",
          "text": "and"
        }
      ],
      "timeTaken": 7181,
      "closestSolution": "I eat.",
      "correct": true,
      "guess": "I eat."
    }
  ],
  "levelIndex": 1,
  "metadata": {
    "language_string": "English",
    "hints_url": "d2.duolingo.com/api/1/dictionary/hints",
    "beginner": true,
    "target_lexeme_ids": [
      "16f2acaffe30cb9a81f422674d398df4",
      "142ad0f32d08728de0f9955df5b83f32",
      "a826c47947d68549fa81e19cafa57ba0",
      "aa94db3b587c7027e8505c25f6fc8ed9",
      "0d9244f805fd55af1281a1bcb1a2cba6",
      "97e922f780d628eac638bea7a02bf496",
      "65e39bd07057893f74d8db10b367f7aa"
    ],
    "mixture_models": {
      "0d9244f805fd55af1281a1bcb1a2cba6": {},
      "65e39bd07057893f74d8db10b367f7aa": {},
      "142ad0f32d08728de0f9955df5b83f32": {},
      "16f2acaffe30cb9a81f422674d398df4": {},
      "aa94db3b587c7027e8505c25f6fc8ed9": {},
      "a826c47947d68549fa81e19cafa57ba0": {},
      "97e922f780d628eac638bea7a02bf496": {}
    },
    "first_lesson": false,
    "pass_strength": 1.7286372085613828,
    "level_session_number": 2,
    "level_index": 1,
    "skill_id": "8b5996f5b0f1f4fb6320f1e6ac9b91b4",
    "min_strength_increment": 0.1,
    "id": "MNVc68hUPZ0CLruX",
    "first_user_lesson": false,
    "min_strength_decrement": 0.075,
    "skill_index": 1,
    "lesson_number": 2,
    "skill_tree_id": "2eb417f7ac714adc24e39a11a3fcd9fc",
    "type": "lesson",
    "level_session_index": 1,
    "explanation": "Tại Duolingo, các đại từ nhân xưng sẽ được dịch theo qui tắc sau: \n\n| Đại từ \t|   Cách dịch  \t|\n|:------:\t|:------------:\t|\n|    I   \t|      Tôi     \t|\n|   He   \t|    Anh ấy    \t|\n|   She  \t|     Cô ấy    \t|\n|   It   \t|     Nó/Đó    \t|\n|   We   \t| Chúng tôi/ta \t|\n|   You  \t|      Bạn     \t|\n|  They  \t|      Họ      \t|\n\nLưu ý: các cách dịch khác như mày, tao, hoặc, anh, em, cậu, tớ ..v..v.. sẽ không được chấp nhận. Mong các bạn thông cảm.",
    "skill_title": "Cơ bản 1",
    "teaches_lexeme_ids": [
      "142ad0f32d08728de0f9955df5b83f32",
      "a826c47947d68549fa81e19cafa57ba0",
      "aa94db3b587c7027e8505c25f6fc8ed9",
      "0d9244f805fd55af1281a1bcb1a2cba6",
      "97e922f780d628eac638bea7a02bf496",
      "65e39bd07057893f74d8db10b367f7aa",
      "16f2acaffe30cb9a81f422674d398df4"
    ],
    "skill_color": "blue",
    "from_language": "vi",
    "skill_name": "Cơ bản 1",
    "skill_tree_level": 1,
    "language": "en",
    "kc_strength_model_version": 2,
    "tts_enabled": true,
    "ui_language": "vi",
    "lexeme_level_updates": {
      "4": {
        "0d9244f805fd55af1281a1bcb1a2cba6": {
          "0": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          },
          "1": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          }
        },
        "65e39bd07057893f74d8db10b367f7aa": {
          "0": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          },
          "1": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          }
        },
        "142ad0f32d08728de0f9955df5b83f32": {
          "0": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          },
          "1": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          }
        },
        "16f2acaffe30cb9a81f422674d398df4": {
          "0": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          },
          "1": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          }
        },
        "aa94db3b587c7027e8505c25f6fc8ed9": {
          "0": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          },
          "1": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          }
        },
        "a826c47947d68549fa81e19cafa57ba0": {
          "0": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          },
          "1": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          }
        },
        "97e922f780d628eac638bea7a02bf496": {
          "0": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          },
          "1": {
            "level_index": 1,
            "untargeted_progress": 0,
            "times_targeted": 1,
            "targeted_progress": 1.000001
          }
        }
      }
    }
  },
  "type": "LESSON",
  "id": "MNVc68hUPZ0CLruX",
  "challengeTimeTakenCutoff": 60000,
  "skillId": "8b5996f5b0f1f4fb6320f1e6ac9b91b4",
  "heartsLeft": 0,
  "startTime": 1567952828,
  "disable_bonus_points": false,
  "endTime": 1567953097,
  "failed": false,
  "max_in_lesson_streak": 7
}

Về cơ bản xem qua nhanh thì có thể chỉ cần thay ID ứng với session ID và keep submitting là có thể get scores 😉

Update: Tương tự cho SKILL_TEST ( Thay vì chỉ là LESSON ). SKILL_TEST cho tới 20 points thay vì chỉ 15 cho LESSON 😀

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Up ↑

%d bloggers like this: