{
	"api_kicker": "Developer API",
	"api_title": "Maak activiteiten vanuit je eigen systeem",
	"api_intro": "Eén POST per activiteitstype. Stuur je inhoud als JSON en je krijgt een activiteit in je Puzzel.org-account terug, plus een URL die je aan spelers kunt geven of in een iframe kunt zetten.",
	"api_search_placeholder": "Zoek endpoints, velden en instellingen",
	"api_search_results": "op deze pagina",
	"api_search_empty": "Niets op deze pagina komt hiermee overeen. Probeer een endpointnaam, een veld zoals activity_key of een statuscode.",
	"api_search_clear": "Zoekopdracht wissen",
	"api_nav_guide": "Aan de slag",
	"api_nav_endpoints": "Endpoints",
	"api_toc_label": "Op deze pagina",
	"api_hero_base_label": "Base URL",
	"api_hero_method_label": "Methode",
	"api_hero_method_value": "POST, JSON-body",
	"api_hero_auth_label": "Auth",
	"api_hero_auth_value": "Sleutel + e-mailadres in de body",
	"api_hero_limit_label": "Quotum",
	"api_hero_limit_value": "[limit] activiteiten per dag",
	"api_hero_count_label": "Endpoints",
	"api_hero_count_value": "[count] activiteitstypen",
	"api_s_quickstart_title": "Je eerste request",
	"api_s_quickstart_body": "Stuur een POST-request met je API-sleutel, e-mailadres en inhoud als JSON. Je hoeft niets te installeren of vooraf verbinding te maken. De response bevat de sleutel van de nieuwe activiteit en de URL om deze te spelen.",
	"api_s_quickstart_note": "Elk voorbeeld op deze pagina is een compleet, uitvoerbaar request. Vul je eigen sleutel en inhoud in en het werkt meteen.",
	"api_s_auth_title": "Authenticatie",
	"api_s_auth_body": "Je stuurt de API-sleutel en het e-mailadres mee in de JSON-body van elk request. Authenticatieheaders of een bearer token zijn niet nodig. De sleutel moet horen bij het account met dat e-mailadres.",
	"api_s_auth_where": "Je sleutel staat in het accountgedeelte van je dashboard, achter Tonen.",
	"api_s_auth_where_link": "Mijn API-sleutel openen",
	"api_s_auth_premium": "API-sleutels worden uitgegeven zodra een abonnement ingaat, dus een gratis account heeft er nog geen.",
	"api_s_auth_plans": "Bekijk de abonnementen",
	"api_s_auth_secret": "Behandel de sleutel als een wachtwoord. Hij maakt en overschrijft activiteiten in je account, dus houd hem server-side en buiten alles wat een browser kan lezen.",
	"api_prefill_kicker": "Voorbeelden",
	"api_prefill_label": "Vul de voorbeelden met mijn eigen API-sleutel",
	"api_prefill_signed_out": "Log in en je sleutel verschijnt in elk voorbeeld op deze pagina.",
	"api_prefill_sign_in": "Inloggen",
	"api_prefill_none": "Dit account heeft nog geen API-sleutel.",
	"api_prefill_warning": "Elk voorbeeld bevat nu je echte sleutel. Plak er geen in een chat, een issue of een openbare repo.",
	"api_s_request_title": "De request-body",
	"api_s_request_body": "Elk endpoint gebruikt dezelfde vijf basisvelden. Het veld voor de inhoud verschilt per activiteitstype: meestal stuur je een array met items, soms één zin of afbeelding. Voor sudoku hoef je geen inhoud mee te sturen.",
	"api_s_request_settings": "settings is een object met opties per endpoint. Welke een endpoint leest staat er hieronder bij vermeld; al het andere dat je erin zet wordt genegeerd.",
	"api_col_field": "Veld",
	"api_col_type": "Type",
	"api_col_notes": "Wat het doet",
	"api_col_status": "Status",
	"api_col_meaning": "Wat het betekent",
	"api_required": "verplicht",
	"api_optional": "optioneel",
	"api_default_label": "Standaard",
	"api_allowed_label": "Een van",
	"api_in_settings": "in settings",
	"api_f_account_api_key": "De API-sleutel van je account. Die gaat in de body, niet in een header.",
	"api_f_email": "Het e-mailadres waarmee je Puzzel.org-account inlogt. De sleutel is alleen geldig in combinatie hiermee.",
	"api_f_title": "De naam die de activiteit in je dashboard krijgt. Laat je hem weg, dan gebruikt het endpoint zijn eigen standaardnaam.",
	"api_f_language": "Bepaalt de taalcode in de URL van de response; je inhoud wordt niet vertaald. Bij een woordzoeker bepaalt deze waarde ook de vulletters: bij \"ar\" worden Arabische letters gebruikt.",
	"api_f_activity_key": "Laat je dit weg, dan wordt er een nieuwe activiteit gemaakt. Stuur je de key van een activiteit die je al bezit, dan wordt die in plaats daarvan opnieuw opgebouwd.",
	"api_f_sentence_cryptogram": "De zin die versleuteld wordt. Spelers ontcijferen hem teken voor teken.",
	"api_f_sentence_calculation": "De zin die spelers onthullen door de sommen op te lossen.",
	"api_f_image": "Absolute URL van de afbeelding die in stukken wordt geknipt. Wordt op het hoogste niveau gestuurd, niet binnen settings.",
	"api_f_image_setting": "Absolute URL van de afbeelding die door elkaar wordt geschoven. Anders dan bij de legpuzzel staat deze binnen settings.",
	"api_s_response_title": "Wat je terugkrijgt",
	"api_s_response_body": "Een geslaagde aanroep geeft statuscode 200 terug, samen met de sleutel van de nieuwe activiteit en de URL om deze te spelen. Bij een fout bevat de response success: false en een foutmelding als string.",
	"api_response_success": "Geslaagd",
	"api_response_error": "Mislukt",
	"api_s_response_urls": "De url die je terugkrijgt is de insluitweergave. Vervang embed door play om hem paginavullend te openen, of door build om hem in de editor te openen — de key achter p= blijft hetzelfde.",
	"api_s_updating_title": "Aanmaken versus bijwerken",
	"api_s_updating_body": "Stuur activity_key mee om een bestaande activiteit opnieuw op te bouwen. De inhoud wordt vervangen en de naam en het versiestempel worden bijgewerkt. De sleutel blijft gelijk, dus gedeelde links en ingesloten activiteiten blijven werken. Resultaten, de map en instellingen die het endpoint niet aanpast, blijven behouden.",
	"api_s_updating_own": "Je kunt alleen activiteiten bijwerken die je eigen account bezit. De key van iemand anders antwoordt met 403.",
	"api_s_updating_name": "title wordt bij elke update toegepast, ook de standaardwaarde — laat je hem weg, dan wordt de activiteit hernoemd naar de standaardnaam van dat endpoint.",
	"api_s_updating_settings": "Instellingenblokken die het endpoint aanpast, worden volledig opnieuw opgebouwd. Ze krijgen de waarden uit je request of, als je die weglaat, de standaardwaarden van het endpoint.",
	"api_s_updating_quota": "Een update kost hetzelfde als een aanmaak: één aanroep van het quotum van vandaag.",
	"api_s_limits_title": "Rate limit",
	"api_s_limits_body": "Elke geslaagde aanroep telt mee, aanmaken en bijwerken allebei. Ga je eroverheen, dan antwoordt het volgende request met 429 tot de teller is gewist.",
	"api_s_limits_counter": "[limit] activiteiten per account per dag",
	"api_s_limits_reset": "De teller wordt één keer per dag gewist door een geplande taak, niet op basis van een voortschrijdend venster van 24 uur.",
	"api_s_errors_title": "Fouten",
	"api_s_errors_body": "Een foutresponse is altijd JSON met dezelfde twee velden. Het veld error bevat een leesbare melding die aangeeft welk veld of welke limiet het probleem veroorzaakt.",
	"api_err_400": "Er ontbreekt iets in de body, of het is verkeerd gevormd of buiten bereik. De melding noemt het veld.",
	"api_err_401": "Het e-mailadres is onbekend, of de sleutel hoort niet bij dat account.",
	"api_err_403": "De activity_key die je stuurde hoort bij een ander account.",
	"api_err_429": "Het quotum van vandaag is op. Het wordt één keer per dag gewist.",
	"api_err_500": "De generator kon geen puzzel maken van wat je stuurde — meestal te weinig woorden, of woorden die niet in elkaar passen.",
	"api_endpoints_title": "Endpoints",
	"api_endpoints_intro": "Eén pad per activiteitstype, allemaal POST, allemaal onder dezelfde base URL. Bij elk staat welke inhoud het nodig heeft, welke instellingen het leest en een request dat je kunt uitvoeren.",
	"api_group_words": "Woorden & letters",
	"api_group_cards": "Kaarten & paren",
	"api_group_questions": "Vragen & antwoorden",
	"api_group_text": "Zinnen & getallen",
	"api_group_images": "Afbeeldingen",
	"api_ep_content_label": "Inhoud",
	"api_ep_settings_label": "Instellingen die het leest",
	"api_ep_settings_none": "Dit endpoint leest geen instellingen.",
	"api_ep_example_label": "Voorbeeldrequest",
	"api_ep_notes_label": "Goed om te weten",
	"api_ep_min_items": "Minimaal [count] in items",
	"api_ep_no_items": "Neemt geen items",
	"api_ep_default_title": "Valt terug op de naam “[title]”",
	"api_copy": "Kopiëren",
	"api_copied": "Gekopieerd",
	"api_toast_copied": "Gekopieerd naar het klembord",
	"api_ep_open_builder": "De editor openen",
	"api_ep_back_to_top": "Terug naar boven",
	"api_e_crossword": "Vlecht je antwoorden in elkaar tot een raster en nummert de omschrijvingen voor je.",
	"api_c_crossword": "Een array van woorden. Elk item koppelt het antwoord aan de omschrijving die ernaar verwijst.",
	"api_note_crossword_length": "Antwoorden korter dan twee tekens worden weggelaten voordat het raster wordt gebouwd, en er moeten er minstens twee overblijven.",
	"api_note_crossword_layout": "Antwoorden worden in hoofdletters gezet en de generator krijgt twintig pogingen om ze te plaatsen. Lukt het niet om ook maar één woord te plaatsen, dan antwoordt de aanroep met 500.",
	"api_e_wordseeker": "Verstopt je woorden in een letterraster, in de richtingen en de vorm die jij kiest.",
	"api_c_wordseeker": "Een array van woorden. De omschrijvingstekst wordt de woordenlijst waar spelers mee werken.",
	"api_note_wordseeker_length": "Antwoorden korter dan twee tekens worden weggelaten, en elk antwoord wordt in hoofdletters gezet voordat het het raster ingaat.",
	"api_note_wordseeker_arabic": "Het raster wordt opgevuld met Latijnse letters, tenzij language \"ar\" is — dan worden de vulletters Arabisch.",
	"api_set_wordseeker_hidden_solution": "De overgebleven letters vormen dit woord. Als je een verborgen oplossing opgeeft, geeft de generator die voorrang bij het indelen van het raster.",
	"api_set_wordseeker_directions": "In welke richtingen een woord mag lopen. Laat je dit weg, dan lopen woorden alleen naar rechts, schuin rechtsonder en naar beneden.",
	"api_set_wordseeker_template": "Snijdt het raster in een vorm in plaats van het vierkant te laten.",
	"api_e_acrostic": "Stapelt je antwoorden zo dat één kolom een verborgen woord vormt.",
	"api_c_acrostic": "Een array van woorden. Samen moeten ze elke letter van het verborgen woord leveren.",
	"api_set_acrostic_hidden_solution": "Het woord dat de gemarkeerde kolom vormt. Zonder dit doet dit endpoint niets.",
	"api_note_acrostic_letters": "Als de antwoorden niet de letters kunnen leveren die de oplossing nodig heeft, antwoordt de aanroep met 500 in plaats van een half opgebouwd raster op te slaan.",
	"api_note_acrostic_order": "De generator zet je antwoorden in een andere volgorde om de kolom te laten kloppen, dus de volgorde die je stuurt is niet de volgorde die spelers zien.",
	"api_e_word-scramble": "Husselt de letters van elk antwoord door elkaar, zodat spelers ze weer op orde brengen.",
	"api_c_word-scramble": "Een array van woorden. De omschrijving staat naast de gehusselde letters.",
	"api_set_scramble_hidden_solution": "Een optioneel bonuswoord dat spelers invullen zodra de rest is opgelost.",
	"api_note_scramble_random": "Activiteiten die via de API zijn gemaakt hebben de instelling voor willekeurige volgorde altijd aan, dus de volgorde die je stuurt is niet de volgorde die spelers krijgen.",
	"api_e_hangman": "Maakt van je woorden of zinnen rondes raad-de-letter.",
	"api_c_hangman": "Een array van woorden of korte zinnen. De omschrijving is de hint die spelers zien.",
	"api_e_wordle": "Maakt van elk woord dat je stuurt een raad-het-woord-spel.",
	"api_c_wordle": "Een array van woorden. Spelers krijgen één ronde per woord.",
	"api_note_wordle_dictionary": "Standaard wordt gecontroleerd of ingevoerde woorden in de woordenlijst staan. Zet deze instelling uit in de editor als je namen of zelfbedachte woorden gebruikt.",
	"api_e_typing-practice": "Maakt van zinnen typeoefeningen.",
	"api_c_typing-practice": "Een array van woorden of zinnen om over te typen. Het omschrijvingsveld dient tegelijk als instructie.",
	"api_e_wheel-of-fortune": "Vult een draaiend rad met je eigen vakken.",
	"api_c_wheel-of-fortune": "Een array van segmenten. Elk antwoord wordt één vak op het rad.",
	"api_note_wheel_outcome": "Gemaakt met “toon de uitkomst alleen in het rad”, dus het resultaat lees je af van het rad in plaats van dat het ernaast wordt gemeld.",
	"api_e_memory": "Omgekeerde kaarten om om te draaien en in paren te matchen.",
	"api_c_memory": "Een array van paren. Elk paar bevat de twee kaarten die bij elkaar horen.",
	"api_note_cards_media": "Een kaart is een object met een type en een value. Gebruik \"text\" voor woorden, of \"image\", \"audio\", \"youtube\" of \"link\" met een URL in value, en voeg alt toe voor een beschrijving.",
	"api_e_matching-pairs": "Twee kolommen kaarten om naar elkaar toe te slepen.",
	"api_c_matching-pairs": "Een array van paren. De eerste kaart van elk paar komt aan de ene kant, zijn partner aan de andere.",
	"api_e_flash-cards": "Tweezijdige kaarten om doorheen te bladeren.",
	"api_c_flash-cards": "Een array van kaarten. De eerste kaart is de voorkant, de tweede de achterkant.",
	"api_note_flashcards_sides": "Het endpoint slaat zoveel kaarten op als je stuurt, dus stuur er precies twee per item — eerst de voorkant, dan de achterkant.",
	"api_e_categorize": "Kaarten om te sorteren in de bak waar ze thuishoren.",
	"api_c_categorize": "Een array van categorieën, elk met een naam en de kaarten die erin horen.",
	"api_note_categorize_name": "Een categorie die zonder naam wordt gestuurd, wordt opgeslagen als “Untitled Category”, dus stuur er altijd een mee.",
	"api_e_reorder": "Een reeks die spelers weer in de juiste volgorde moeten zetten.",
	"api_c_reorder": "Een array van reeksen. Elke reeks bevat zijn kaarten in de juiste volgorde.",
	"api_note_reorder_order": "De volgorde die je stuurt wordt opgeslagen als de juiste volgorde — nummer één eerst.",
	"api_e_quiz": "Meerkeuzevragen en open vragen, met een score die meeloopt tijdens het spelen.",
	"api_c_quiz": "Een array van vragen. Meerkeuzevragen bevatten hun antwoordopties; open vragen bevatten het antwoord dat je goedkeurt.",
	"api_note_question_types": "Gebruik voor question_type de waarde \"multiple_choice\" of \"open_answer\". Bij meerkeuzevragen heeft de juiste optie isCorrect: true; bij open vragen geef je het antwoord op in correct_answer. Als je question_type weglaat, wordt de vraag als meerkeuzevraag behandeld.",
	"api_note_quiz_settings": "Het quiz-endpoint geeft settings rechtstreeks door als instellingenblokken van de activiteit, dus dit is geen plek voor losse opties — stel de quiz achteraf bij in de editor.",
	"api_e_board-game": "Een bord om over te racen, met jouw vragen op de vakjes.",
	"api_c_board-game": "Een array van vragen, precies in de vorm die het quiz-endpoint neemt.",
	"api_set_board_tiles": "Hoeveel vakjes het bord heeft. Tussen 10 en 75.",
	"api_set_board_mode": "Of spelers naar de finish racen of onderweg voorwerpen verzamelen.",
	"api_e_cryptogram": "Maakt van een zin een code om te kraken, teken voor teken.",
	"api_c_cryptogram": "Eén zin, in het veld sentence. Dit endpoint neemt geen items.",
	"api_note_cryptogram_no_items": "Alles wat je in items stuurt wordt genegeerd — de puzzel wordt alleen uit de zin opgebouwd.",
	"api_set_cryptogram_helpers": "Welke tekens gratis worden weggegeven als opstapje: geen, de meest voorkomende, de klinkers, of de tekens die je zelf opgeeft.",
	"api_set_cryptogram_character_list": "Het alfabet waaruit de code wordt opgebouwd. Leeg gelaten kiest de versleuteling er zelf een.",
	"api_set_cryptogram_extra_letters": "De tekens die worden weggegeven als helpers \"custom\" is. Genegeerd bij de andere helper-modi.",
	"api_set_cryptogram_hide_unused": "Laat tekens die de zin nooit gebruikt uit de sleutel weg.",
	"api_e_calculation": "Verstopt een zin achter sommen — los de som op, onthul de letter.",
	"api_c_calculation": "Eén zin, in het veld sentence. Dit endpoint neemt geen items.",
	"api_set_calc_difficulty": "De hoogste uitkomst die een som mag hebben.",
	"api_set_calc_operators": "Welke bewerkingen mogen voorkomen. x is vermenigvuldigen, : is delen.",
	"api_set_calc_max_operations": "Hoeveel bewerkingen één som achter elkaar mag zetten.",
	"api_set_calc_number_difficulty": "Begrenst de losse getallen binnen een som. Ergens tussen 5 en 1000.",
	"api_note_calculation_fit": "Als de beperkingen te strak zijn om de zin te coderen, antwoordt de aanroep met 400 en het verzoek ze te versoepelen, in plaats van een halve puzzel op te slaan.",
	"api_e_sudoku": "Genereert een opgelost raster en haalt daar weer getallen uit.",
	"api_c_sudoku": "Niets. De hele puzzel komt voort uit zijn twee instellingen.",
	"api_note_sudoku_no_items": "Stuur geen items en geen sentence — size en difficulty zijn de volledige invoer.",
	"api_note_sudoku_difficulty_sizes": "De editor biedt de moeilijkheidsgraad alleen aan voor 2x3, 3x3 en 3x4. De API past hem toe op elke grootte, 2x2 en 4x4 inbegrepen.",
	"api_set_sudoku_size": "De grootte van één blok, geschreven als rijen bij kolommen — 3x3 geeft het klassieke 9x9-raster. Het endpoint controleert alleen of het als twee getallen te lezen is, dus houd het bij de groottes die de editor aanbiedt.",
	"api_set_sudoku_difficulty": "Hoeveel getallen er op het bord blijven staan om mee te beginnen.",
	"api_e_jigsaw": "Knipt een afbeelding in stukjes om weer in elkaar te schuiven.",
	"api_c_jigsaw": "Eén afbeeldings-URL, in het veld image. Dit endpoint neemt geen items.",
	"api_note_jigsaw_grid": "De API maakt altijd een legpuzzel van 4 bij 4. Aantal stukjes, onregelmatige stukjes en rechte randen zijn instellingen in de editor — rows of columns hier meesturen doet niets.",
	"api_note_image_reachable": "De URL wordt opgeslagen zoals je hem stuurde en het bestand wordt nooit gekopieerd, dus hij moet openbaar bereikbaar blijven zolang de activiteit gespeeld wordt.",
	"api_e_slidingpuzzle": "Husselt een afbeelding tot tegels die op hun plek geschoven worden.",
	"api_c_slidingpuzzle": "Eén afbeeldings-URL, binnen settings. Dit endpoint neemt geen items.",
	"api_note_sliding_image_slot": "Anders dan de legpuzzel leest dit endpoint zijn afbeelding uit settings.image. Een image-veld op het hoogste niveau wordt genegeerd en de aanroep antwoordt met 400.",
	"api_help_title": "Doet iets niet wat het moet doen?",
	"api_help_body": "Stuur je request en de foutmelding die je terugkreeg. Je krijgt antwoord van de maker van de API.",
	"api_help_cta": "Mail support",
	"api_int_kicker": "Integraties voor ontwikkelaars",
	"api_int_title": "Verbind Puzzel met je eigen platform",
	"api_int_intro": "Puzzel kan het resultaat van een speler rechtstreeks doorgeven aan een ander systeem — de score, hoe ver iemand kwam, wat er is ingevuld — zonder dat dat systeem een volwaardig LMS hoeft te zijn. Deze pagina laat elk kanaal zien dat er is: wat eruit gaat, wanneer het eruit gaat, en het kleinste stukje dat je moet bouwen om het op te vangen.",
	"api_int_hero_out_label": "Resultaten gaan naar buiten via",
	"api_int_hero_out_value": "Een webhook, of een bericht naar de pagina rond de activiteit",
	"api_int_hero_in_label": "Jouw pagina kan",
	"api_int_hero_in_value": "De speler inloggen en de activiteit resetten",
	"api_int_hero_where_label": "Ingeschakeld",
	"api_int_hero_where_value": "Per activiteit, onder Ontwikkelaar in de editor",
	"api_int_hero_plan_label": "Inbegrepen bij",
	"api_int_hero_plan_value": "Een betaald abonnement — deze instellingen staan uit bij een gratis account",
	"api_int_search_placeholder": "Zoek kanalen, velden en voorbeelden",
	"api_int_search_empty": "Niets op deze pagina komt daarmee overeen. Probeer een kanaal zoals webhook of postMessage, of een veld zoals progress.",
	"api_int_nav_channels": "Kanalen",
	"api_int_s_choose_title": "Welk kanaal heb je nodig?",
	"api_int_s_choose_body": "Drie dingen kunnen een activiteit verlaten en één kan erin. Welke bij jou past hangt af van één vraag: zit de speler binnen jouw pagina, of ergens heel anders?",
	"api_int_choose_out": "Uit Puzzel",
	"api_int_choose_in": "Naar Puzzel",
	"api_int_choose_when": "Gebruik dit wanneer",
	"api_int_choose_needs": "Je hebt nodig",
	"api_int_choose_setting": "Instelling",
	"api_int_ch_webhook_name": "Resultaten-webhook",
	"api_int_ch_webhook_summary": "Elk opgeslagen resultaat wordt met een POST als JSON naar een URL van jou gestuurd.",
	"api_int_ch_webhook_when": "De speler kan overal zitten — een gedeelde link, een QR-code, de site van iemand anders — en je wilt het resultaat in je eigen database.",
	"api_int_ch_webhook_needs": "Een HTTPS-endpoint dat een cross-origin POST accepteert.",
	"api_int_ch_parent_name": "Resultaten naar de omliggende pagina",
	"api_int_ch_parent_summary": "Dezelfde JSON, gepost naar de pagina die de activiteit insluit in plaats van naar een server.",
	"api_int_ch_parent_when": "Je sluit de activiteit in op je eigen cursuspagina en die pagina kan zelf iets met het resultaat doen.",
	"api_int_ch_parent_needs": "Een iframe op je pagina en een message listener. Geen server, geen CORS.",
	"api_int_ch_completion_name": "Afrondingssignaal",
	"api_int_ch_completion_summary": "Eén bericht zodra de speler klaar is, dat verder niets bevat dan dat feit.",
	"api_int_ch_completion_when": "Je wilt alleen weten of ze klaar zijn — om de les af te vinken, de volgende te ontgrendelen, of je eigen scherm te tonen.",
	"api_int_ch_completion_needs": "Een iframe op je pagina en een message listener.",
	"api_int_ch_trigger_name": "Resetten vanaf jouw pagina",
	"api_int_ch_trigger_summary": "Jouw pagina laat de ingesloten activiteit weten dat die de antwoorden van de speler moet wissen en opnieuw moet beginnen.",
	"api_int_ch_trigger_when": "Je hebt je eigen \"opnieuw proberen\"-knop buiten de activiteit.",
	"api_int_ch_trigger_needs": "Een iframe op je pagina. Het bericht wordt alleen geaccepteerd van de pagina die insluit.",
	"api_int_s_webhook_title": "Resultaten-webhook",
	"api_int_s_webhook_body": "Zet \"Resultaten naar een webhook sturen\" aan in de editor en geef er een URL bij op. Vanaf dan post de browser van de speler bij elke keer dat de voortgang wordt opgeslagen het hele resultaat als JSON naar die URL.",
	"api_int_webhook_steps_title": "Zo stel je het in",
	"api_int_webhook_step_1": "Open de activiteit in de editor en ga naar het menu Ontwikkelaar.",
	"api_int_webhook_step_2": "Zet \"Resultaten naar een webhook sturen\" aan en plak je endpoint in het veld eronder. Het moet een volledige URL zijn — een kaal domein wordt geweigerd — en het moet https zijn, omdat de browser een gewone http-aanroep blokkeert vanaf een pagina die over https wordt geserveerd.",
	"api_int_webhook_step_3": "Speel de activiteit zelf één keer. De eerste POST komt binnen zodra je iets invult.",
	"api_int_webhook_receiver": "Een ontvanger, van begin tot eind",
	"api_int_webhook_timing_title": "Het vuurt terwijl je speelt, niet pas aan het einde",
	"api_int_webhook_timing_body": "Er gaat een resultaat naar buiten elke keer dat de invoer wordt opgeslagen: na een pauze in het typen, wanneer een kaart wordt neergelegd, wanneer de klok stopt, en nog eens wanneer de activiteit is afgerond. Een lange kruiswoordpuzzel is een stuk of twintig aanroepen, niet één — schrijf je handler dus als een upsert op basis van playerUid en activityKey, niet als een insert. Elke aanroep bevat de volledige staat, dus de nieuwste vervangt altijd de vorige, en een aanroep die wegvalt wordt door de volgende weer goedgemaakt.",
	"api_int_webhook_finished_title": "Een afronding herkennen tussen de tussentijdse opslagmomenten",
	"api_int_webhook_finished_body": "progress is een percentage: 100 betekent dat de activiteit is afgerond. Een paar types kunnen eindigen zonder dat te bereiken — een quiz die helemaal is doorlopen, een opgelost oplossingsveld — en die krijgen in plaats daarvan hasAlternateCompletion. Behandel beide als afgerond.",
	"api_int_webhook_cors_title": "Het wordt verstuurd door de browser van de speler",
	"api_int_webhook_cors_body": "De POST komt uit het tabblad waarin de activiteit wordt gespeeld, niet van een server van Puzzel. De meeste endpoints die zijn gebouwd om webhooks te ontvangen accepteren dit al. Komt er bij jou nooit een verzoek binnen, dan is dit de reden: de browser vraagt eerst toestemming, dus beantwoord de OPTIONS-preflight met een Access-Control-Allow-Origin-header en de echte POST volgt vanzelf.",
	"api_int_webhook_trust_title": "Behandel de payload als een bewering, geen bewijs",
	"api_int_webhook_trust_body": "Er zit geen handtekening op het verzoek, en het komt van een browser die jij niet beheert, dus iedereen die naar de pagina kijkt kan er ook een sturen. Dat is prima voor het vullen van een voortgangsbalk of een dashboard. Voor alles wat je een leerling niet zelf zou laten instellen — een cijfer dat meetelt, een certificaat, een betaling — controleer je het tegen de resultaten in je eigen Puzzel-dashboard, of laat je de LMS-koppelingen voor cijfers de score meenemen.",
	"api_int_s_parent_title": "Resultaten naar de omliggende pagina",
	"api_int_s_parent_body": "Sluit je de activiteit in, dan kun je diezelfde JSON naar je eigen pagina laten posten in plaats van naar een server. Zet \"Resultaten naar de bovenliggende pagina sturen\" aan en luister naar het bericht. Er verlaat niets de browser, dus je hoeft geen endpoint te bouwen en niet aan CORS te denken.",
	"api_int_parent_origin_title": "Controleer waar het bericht vandaan komt",
	"api_int_parent_origin_body": "Jouw listener hoort elk bericht dat naar de pagina wordt gepost, ook vanuit andere frames en browserextensies. Vergelijk event.origin met https://puzzel.org voordat je vertrouwt op wat erin staat.",
	"api_int_parent_same_title": "Dezelfde payload, dezelfde timing",
	"api_int_parent_same_body": "Dit is de tweelingbroer van de webhook: dezelfde velden, verstuurd op dezelfde momenten. Alles onder \"Wat een resultaat bevat\" geldt hier ook.",
	"api_int_s_completion_title": "Afrondingssignaal",
	"api_int_s_completion_body": "Het kleinste kanaal, voor als het resultaat zelf je niets aangaat: zet \"Een afrondingssignaal versturen\" aan en je pagina krijgt één bericht op het moment dat de speler klaar is.",
	"api_int_completion_shape": "Wat er binnenkomt",
	"api_int_completion_order_title": "Het resultaat is al opgeslagen wanneer het binnenkomt",
	"api_int_completion_order_body": "Het signaal wordt bewust pas verstuurd nadat de afrondende save is aangekomen, zodat een pagina die daarop reageert door het resultaat terug te lezen het daar ook aantreft.",
	"api_int_completion_embed_title": "Alleen binnen een iframe",
	"api_int_completion_embed_body": "Beide berichtkanalen posten naar de pagina die de activiteit omkadert. Geopend in een eigen tabblad is er niemand om het aan te vertellen, dus wordt er niets verstuurd.",
	"api_int_s_payload_title": "Wat een resultaat bevat",
	"api_int_s_payload_body": "Eén vorm, welk kanaal het ook draagt. De antwoorden van de speler zijn gesleuteld op de eigen item-id's van de activiteit, dus dezelfde sleutels komen terug in correctUids.",
	"api_int_col_when": "Wanneer het er is",
	"api_int_always": "altijd",
	"api_int_sometimes": "soms",
	"api_int_payload_absent_title": "Afwezig, niet leeg",
	"api_int_payload_absent_body": "Een veld dat niet van toepassing is wordt uit de JSON weggelaten in plaats van als null of nul verstuurd. Zo is een type dat een run niet scoort te onderscheiden van een run die nul scoorde — lees dus met een standaardwaarde en ga er nooit van uit dat een sleutel aanwezig is.",
	"api_int_payload_example": "Een afgeronde quiz, zoals die binnenkomt",
	"api_int_f_activity_key": "De activiteit waar het resultaat bij hoort. Dezelfde sleutel die je ziet in de eigen URL van de activiteit, na ?p=.",
	"api_int_f_player_uid": "Wie er speelde, als een anonieme id. Stabiel voor deze speler op dit apparaat, dus gebruik dit als sleutel voor je resultaten — het is geen e-mailadres en geen Puzzel-account.",
	"api_int_f_player": "De registratievelden die de activiteit uitvraagt, zoals jij ze hebt ingesteld: naam, e-mail, klas, student_id en zo verder. Afwezig totdat de speler zich heeft geregistreerd, en volledig afwezig bij een activiteit die niets uitvraagt.",
	"api_int_f_progress": "Hoe ver iemand is, als percentage. 100 betekent afgerond.",
	"api_int_f_time_passed": "Tijd op de activiteit, in milliseconden.",
	"api_int_f_last_played_at": "Wanneer dit resultaat is opgeslagen, als Unix-timestamp in milliseconden.",
	"api_int_f_created": "Wanneer de poging is gestart, als Unix-timestamp in milliseconden.",
	"api_int_f_player_input": "Wat de speler daadwerkelijk heeft ingevoerd, gesleuteld op de id van het item waar het bij hoort. De vorm daarbinnen hangt af van het activiteitstype — een woord, een lijst geplaatste kaarten, een gekozen optie.",
	"api_int_f_correct_uids": "Welke van die items goed zijn, op dezelfde manier gesleuteld. Afwezig zolang er nog niets is beantwoord.",
	"api_int_f_score": "Behaalde punten, bij de types die een run scoren. Overal elders afwezig — ook bij een run die daadwerkelijk nul scoorde, dus controleer of de sleutel bestaat voordat je hem uitleest.",
	"api_int_f_performance": "De eigen maatstaf van een type voor hoe goed het ging, waar die wordt bijgehouden — woorden per minuut bij typeoefening, bijvoorbeeld.",
	"api_int_f_attempts": "Welke run dit is: 1 de eerste keer, telkens één hoger bij elke herstart. Alleen bij types die een run vroegtijdig kunnen beëindigen en de pogingen tellen.",
	"api_int_f_knocked_out": "De run eindigde op een fout antwoord en is voorbij zonder afgerond te zijn.",
	"api_int_f_alternate": "De activiteit is afgerond op een manier die geen 100% haalt — een quiz die helemaal is doorlopen, een opgelost oplossingsveld. Behandel dit als een afronding.",
	"api_int_f_missed_keys": "Tekens die de speler steeds fout bleef typen, meest gemist eerst. Alleen bij typeoefening.",
	"api_int_f_content_version": "Tegen welke versie van de inhoud van de activiteit dit is gespeeld. Deze verandert wanneer de eigenaar de vragen bewerkt, zodat een oud resultaat te onderscheiden is van een actueel.",
	"api_int_s_control_title": "De activiteit resetten vanaf jouw pagina",
	"api_int_s_control_body": "Eén instructie gaat de andere kant op. Met \"Triggers van de bovenliggende pagina accepteren\" aangezet kan de insluitende pagina de antwoorden van de speler wissen en de activiteit terugzetten naar het begin — voor een eigen \"opnieuw proberen\"-knop buiten het frame.",
	"api_int_control_only_title": "Resetten is de enige trigger",
	"api_int_control_only_body": "Er is geen bericht voor het inleveren van een resultaat, het openen van het eindbericht, of het springen naar een vraag. Een bericht dat om iets anders dan een reset vraagt wordt genegeerd.",
	"api_int_control_guard_title": "Alleen de insluitende pagina wordt gehoord",
	"api_int_control_guard_body": "De trigger wordt alleen geaccepteerd van de pagina die de activiteit omkadert en van nergens anders — geen naburig frame, geen script op de pagina. De instelling staat standaard uit, dus zet hem aan voor de activiteiten die jij aanstuurt.",
	"api_int_s_identity_title": "Je eigen spelersidentiteit meenemen",
	"api_int_s_identity_body": "Als jouw platform al weet wie er speelt, hoeft de activiteit dat niet nog eens te vragen. Er zijn twee handshakes, allebei voor een activiteit binnen jouw pagina, en allebei door ons ingeschakeld in plaats van in de editor — ze bepalen aan wie een resultaat toebehoort, dus die stellen we samen met jou in plaats van via een vinkje.",
	"api_int_identity_pm_title": "Post ons de speler",
	"api_int_identity_pm_body": "De activiteit meldt zichzelf met 'app-loaded' en wacht. Jouw pagina post de gegevens van de speler terug, en het resultaat wordt daaronder vastgelegd zonder dat de speler iets hoeft te typen of een registratiescherm te zien.",
	"api_int_identity_sso_title": "Post ons een token",
	"api_int_identity_sso_body": "Dezelfde handshake, maar jouw pagina post het JWT dat je identity provider heeft uitgegeven in plaats van de velden zelf. Wij verifiëren dit tegen de issuers die voor jouw account zijn ingesteld voordat de speler wordt toegelaten, zodat de identiteit bewezen is in plaats van beweerd — dit is degene om te vragen wanneer het resultaat betrouwbaar moet zijn.",
	"api_int_identity_cta_title": "Vraag ons het aan te zetten",
	"api_int_identity_cta_body": "Laat ons weten welke van de twee je wilt en waar de activiteiten worden ingesloten, en wij richten je account in en lopen het samen met je door.",
	"api_int_identity_cta_button": "Mail ons over identiteit",
	"api_int_s_create_title": "Activiteiten maken vanuit jouw systeem",
	"api_int_s_create_body": "Alles hierboven gaat over een resultaat dat naar buiten komt. De andere kant op — de activiteiten zelf maken vanuit inhoud die je al hebt — is de Puzzle API: één POST per activiteitstype, en je krijgt een sleutel en een URL terug om in te sluiten.",
	"api_int_create_link": "Lees de API-referentie",
	"api_int_s_lms_title": "Wanneer een kant-en-klare koppeling de betere oplossing is",
	"api_int_s_lms_body": "Is het platform aan de andere kant een echt LMS, dan heb je dit allemaal waarschijnlijk niet nodig. Cijfers kunnen vanzelf terugkomen in de cijferlijst, zonder dat jij iets hoeft te hosten.",
	"api_int_lms_lti_title": "Moodle, Canvas, Brightspace, Schoology, itslearning",
	"api_int_lms_lti_body": "Gestart vanuit het LMS zelf, waarbij de score wordt teruggeschreven naar de cijferlijst.",
	"api_int_lms_gc_title": "Google Classroom",
	"api_int_lms_gc_body": "Plaats een activiteit als opdracht en laat de cijfers automatisch terugkomen.",
	"api_int_lms_not_title": "Geen van deze?",
	"api_int_lms_not_body": "Cursusplatforms, ledensites, intranetten en alles wat je zelf hebt gebouwd — daar zijn de kanalen op deze pagina precies voor bedoeld. Een insluiting plus het afrondingssignaal dekt het meeste al.",
	"api_int_s_limits_title": "Wat er niet is",
	"api_int_s_limits_body": "Zodat je er niet naar hoeft te zoeken:",
	"api_int_limit_no_read": "Geen endpoint om resultaten terug te lezen. De API maakt activiteiten aan; resultaten verlaten het systeem via de kanalen op deze pagina, of via de exports in je dashboard.",
	"api_int_limit_no_signature": "Geen handtekening op de webhook. Er is niets om het verzoek tegen te verifiëren, en dat is waarom een resultaat niet het enige mag zijn dat iets belangrijks onderbouwt.",
	"api_int_limit_per_activity": "Geen accountbrede webhook. De URL is een instelling op een activiteit, dus een activiteit die je kopieert neemt hem mee, en een nieuwe begint zonder.",
	"api_int_limit_no_multiplayer": "Niets bij een teamspel of een live room. Zowel de berichtkanalen als de webhook zijn voor solo spelen, en de instellingen schakelen zichzelf uit zodra teamspel aanstaat.",
	"api_int_limit_no_retry": "Geen verzendwachtrij. Er wordt niets opgeslagen en opnieuw verstuurd — de volgende keer opslaan is de nieuwe poging, en de laatste aanroep van de run is degene die telt.",
	"api_nav_integrations": "Resultaten eruit krijgen"
}
