{
	"api_kicker": "API para desenvolvedores",
	"api_title": "Crie atividades a partir do seu próprio sistema",
	"api_intro": "Um POST para cada tipo de atividade. Envie seu conteúdo em JSON e receba de volta uma atividade na sua conta do Puzzel.org e uma URL que você pode entregar aos jogadores ou colocar em um iframe.",
	"api_search_placeholder": "Pesquisar endpoints, campos e configurações",
	"api_search_results": "correspondem a esta página",
	"api_search_empty": "Nada nesta página corresponde a isso. Tente o nome de um endpoint, um campo como activity_key ou um código de status.",
	"api_search_clear": "Limpar busca",
	"api_nav_guide": "Primeiros passos",
	"api_nav_endpoints": "Endpoints",
	"api_toc_label": "Nesta página",
	"api_hero_base_label": "URL base",
	"api_hero_method_label": "Método",
	"api_hero_method_value": "POST, corpo em JSON",
	"api_hero_auth_label": "Autenticação",
	"api_hero_auth_value": "Chave + e-mail no corpo",
	"api_hero_limit_label": "Cota",
	"api_hero_limit_value": "[limit] atividades por dia",
	"api_hero_count_label": "Endpoints",
	"api_hero_count_value": "[count] tipos de atividade",
	"api_s_quickstart_title": "Sua primeira requisição",
	"api_s_quickstart_body": "Nada para instalar e nenhum handshake: envie um corpo JSON com sua chave, seu e-mail e seu conteúdo. A resposta traz a chave da nova atividade e a URL onde ela é jogada.",
	"api_s_quickstart_note": "Todo exemplo nesta página é uma requisição completa e executável. Basta trocar pela sua própria chave e conteúdo, e funciona sem alterações.",
	"api_s_auth_title": "Autenticação",
	"api_s_auth_body": "Não há headers nem bearer token. As duas credenciais viajam no corpo JSON de cada requisição, e a chave só é aceita para a conta à qual aquele e-mail pertence.",
	"api_s_auth_where": "Sua chave fica na seção de conta do seu painel, atrás de Mostrar.",
	"api_s_auth_where_link": "Abrir minha chave de API",
	"api_s_auth_premium": "As chaves de API são liberadas quando uma assinatura começa, então uma conta gratuita ainda não tem uma.",
	"api_s_auth_plans": "Ver os planos",
	"api_s_auth_secret": "Trate a chave como uma senha. Ela cria e sobrescreve atividades na sua conta, então mantenha-a no servidor e fora de qualquer coisa que um navegador possa ler.",
	"api_prefill_kicker": "Exemplos",
	"api_prefill_label": "Preencher os exemplos com minha própria chave de API",
	"api_prefill_signed_out": "Entre na sua conta e sua chave será inserida em todos os exemplos desta página.",
	"api_prefill_sign_in": "Entrar",
	"api_prefill_none": "Ainda não há chave de API nesta conta.",
	"api_prefill_warning": "Todo exemplo agora contém sua chave real. Não a cole em um chat, uma issue ou um repositório público.",
	"api_s_request_title": "O corpo da requisição",
	"api_s_request_body": "Todo endpoint recebe os mesmos cinco campos. O que muda é o campo de conteúdo abaixo deles: a maioria recebe um array de items, alguns recebem uma sentence ou uma image, e o sudoku não recebe nada.",
	"api_s_request_settings": "settings é um objeto com opções específicas de cada endpoint. Quais delas um endpoint lê está listado logo abaixo; qualquer outra coisa que você colocar ali é ignorada.",
	"api_col_field": "Campo",
	"api_col_type": "Tipo",
	"api_col_notes": "O que faz",
	"api_col_status": "Status",
	"api_col_meaning": "O que significa",
	"api_required": "obrigatório",
	"api_optional": "opcional",
	"api_default_label": "Padrão",
	"api_allowed_label": "Um de",
	"api_in_settings": "em settings",
	"api_f_account_api_key": "A chave de API da sua conta. Ela vai no corpo, não em um header.",
	"api_f_email": "O endereço com o qual sua conta do Puzzel.org entra. A chave só é válida junto com ele.",
	"api_f_title": "O nome que a atividade recebe no seu painel. Deixe de fora e o endpoint usa seu próprio nome padrão.",
	"api_f_language": "Decide apenas o locale na URL que você recebe de volta — não traduz nada do que você envia. O caça-palavras também usa esse campo para trocar as letras de preenchimento para árabe quando o valor é \"ar\".",
	"api_f_activity_key": "Deixe de fora para criar uma nova atividade. Informe a chave de uma que você já possui e essa atividade é reconstruída em vez disso.",
	"api_f_sentence_cryptogram": "A frase a ser criptografada. Os jogadores a decodificam caractere por caractere.",
	"api_f_sentence_calculation": "A frase que os jogadores revelam ao resolver as contas.",
	"api_f_image": "URL absoluta da imagem a ser recortada. Enviada no nível superior, não dentro de settings.",
	"api_f_image_setting": "URL absoluta da imagem a ser embaralhada. Diferente da do quebra-cabeça, esta fica dentro de settings.",
	"api_s_response_title": "O que volta",
	"api_s_response_body": "Uma chamada bem-sucedida responde 200 com a chave da nova atividade e a URL onde ela é jogada. Qualquer outra coisa responde com success definido como false e uma única string de erro.",
	"api_response_success": "Sucesso",
	"api_response_error": "Falha",
	"api_s_response_urls": "A url que você recebe é a visualização de incorporação. Troque embed por play para abri-la em página inteira, ou por build para abri-la no editor — a chave depois de p= permanece a mesma.",
	"api_s_updating_title": "Criar x atualizar",
	"api_s_updating_body": "Envie activity_key e a atividade por trás dela é reconstruída no lugar: o conteúdo é substituído, o nome e o carimbo de versão são atualizados, e a própria chave permanece a mesma — então links e incorporações que você já compartilhou continuam funcionando. Resultados, posição na pasta e toda configuração que o endpoint não escreve por conta própria permanecem como estavam.",
	"api_s_updating_own": "Você só pode atualizar atividades que a sua própria conta possui. A chave de outra pessoa responde 403.",
	"api_s_updating_name": "title é aplicado em toda atualização, inclusive seu padrão — deixe de fora e a atividade é renomeada para o nome padrão daquele endpoint.",
	"api_s_updating_settings": "Os blocos de configuração que um endpoint escreve por conta própria são reescritos do zero, então uma atualização também os redefine para os valores que você envia, ou para os padrões do endpoint.",
	"api_s_updating_quota": "Uma atualização custa o mesmo que uma criação: uma chamada a menos na cota de hoje.",
	"api_s_limits_title": "Limite de taxa",
	"api_s_limits_body": "Toda chamada bem-sucedida conta, tanto criações quanto atualizações. Ultrapasse o limite e a próxima requisição responde 429 até o contador ser zerado.",
	"api_s_limits_counter": "[limit] atividades por conta por dia",
	"api_s_limits_reset": "O contador é zerado uma vez por dia por uma tarefa agendada, não em uma janela contínua de 24 horas.",
	"api_s_errors_title": "Erros",
	"api_s_errors_body": "Erros sempre chegam como JSON com os mesmos dois campos, nunca como uma página HTML. A string de erro é escrita para ser lida por uma pessoa — ela nomeia o campo ou o limite que falhou.",
	"api_err_400": "Algo no corpo está faltando, malformado ou fora do intervalo. A mensagem nomeia o campo.",
	"api_err_401": "O e-mail é desconhecido, ou a chave não pertence àquela conta.",
	"api_err_403": "A activity_key que você enviou pertence a uma conta diferente.",
	"api_err_429": "A cota de hoje foi esgotada. Ela é zerada uma vez por dia.",
	"api_err_500": "O gerador não conseguiu montar um passatempo a partir do que você enviou — geralmente poucas palavras, ou palavras que não se encaixam.",
	"api_endpoints_title": "Endpoints",
	"api_endpoints_intro": "Um caminho para cada tipo de atividade, todos POST, todos sob a mesma URL base. Cada um lista o conteúdo que precisa, as configurações que lê e uma requisição que você pode executar.",
	"api_group_words": "Palavras e letras",
	"api_group_cards": "Cartões e pares",
	"api_group_questions": "Perguntas e respostas",
	"api_group_text": "Frases e números",
	"api_group_images": "Imagens",
	"api_ep_content_label": "Conteúdo",
	"api_ep_settings_label": "Configurações que lê",
	"api_ep_settings_none": "Este endpoint não lê nenhuma configuração.",
	"api_ep_example_label": "Exemplo de requisição",
	"api_ep_notes_label": "Vale saber",
	"api_ep_min_items": "Pelo menos [count] em items",
	"api_ep_no_items": "Não recebe items",
	"api_ep_default_title": "Usa como padrão o nome “[title]”",
	"api_copy": "Copiar",
	"api_copied": "Copiado",
	"api_toast_copied": "Copiado para a área de transferência",
	"api_ep_open_builder": "Abrir o editor",
	"api_ep_back_to_top": "Voltar ao topo",
	"api_e_crossword": "Encaixa suas respostas em uma grade e numera as definições para você.",
	"api_c_crossword": "Um array de palavras. Cada item combina a resposta com a definição que aponta para ela.",
	"api_note_crossword_length": "Respostas com menos de dois caracteres são descartadas antes da grade ser montada, e pelo menos duas precisam sobrar depois disso.",
	"api_note_crossword_layout": "As respostas são colocadas em maiúsculas e o gerador tem vinte tentativas para encaixá-las. Se não conseguir posicionar uma única palavra, a chamada responde 500.",
	"api_e_wordseeker": "Esconde suas palavras em uma grade de letras, nas direções e na forma que você escolher.",
	"api_c_wordseeker": "Um array de palavras. O texto da definição se torna a lista de palavras que os jogadores usam.",
	"api_note_wordseeker_length": "Respostas com menos de dois caracteres são descartadas, e toda resposta é colocada em maiúsculas antes de entrar na grade.",
	"api_note_wordseeker_arabic": "A grade é preenchida com letras latinas, a menos que language seja \"ar\", o que troca o preenchimento para árabe.",
	"api_set_wordseeker_hidden_solution": "As letras restantes formam isso. Defini-lo também diz ao gerador para encaixar a solução primeiro, em vez de tentar caber o máximo de palavras possível.",
	"api_set_wordseeker_directions": "Em quais direções uma palavra pode correr. Deixe de fora e as palavras correm apenas para leste, sudeste e sul.",
	"api_set_wordseeker_template": "Recorta a grade em um formato, em vez de deixá-la quadrada.",
	"api_e_acrostic": "Empilha suas respostas para que uma coluna forme uma palavra escondida.",
	"api_c_acrostic": "Um array de palavras. Juntas, elas precisam fornecer todas as letras da palavra escondida.",
	"api_set_acrostic_hidden_solution": "A palavra que a coluna destacada forma. Este endpoint não funciona sem ela.",
	"api_note_acrostic_letters": "Se as respostas não conseguirem fornecer as letras que a solução precisa, a chamada responde 500 em vez de salvar uma grade pela metade.",
	"api_note_acrostic_order": "O gerador reordena suas respostas para fazer a coluna funcionar, então a ordem que você envia não é a ordem que os jogadores veem.",
	"api_e_word-scramble": "Embaralha as letras de cada resposta para os jogadores desembaralharem.",
	"api_c_word-scramble": "Um array de palavras. A pista é exibida ao lado das letras embaralhadas.",
	"api_set_scramble_hidden_solution": "Uma palavra bônus opcional que os jogadores digitam depois de resolver o restante.",
	"api_note_scramble_random": "Atividades criadas pela API sempre têm a configuração de embaralhar a ordem ativada, então a ordem que você envia não é a ordem que os jogadores recebem.",
	"api_e_hangman": "Transforma suas palavras ou frases em rodadas de adivinhar a letra.",
	"api_c_hangman": "Um array de palavras ou frases curtas. A pista é a dica que os jogadores veem.",
	"api_e_wordle": "Transforma cada palavra que você envia em um jogo de adivinhar a palavra.",
	"api_c_wordle": "Um array de palavras. Os jogadores têm uma rodada para cada palavra.",
	"api_note_wordle_dictionary": "Criado com a configuração de verificar se os palpites são palavras reais ativada. Desative-a no editor se suas palavras forem nomes ou inventadas.",
	"api_e_typing-practice": "Transforma frases em exercícios de digitação.",
	"api_c_typing-practice": "Um array de palavras ou frases para digitar. O campo clue também funciona como instrução.",
	"api_e_wheel-of-fortune": "Preenche uma roda giratória com seus próprios segmentos.",
	"api_c_wheel-of-fortune": "Um array de segmentos. Cada resposta se torna uma fatia.",
	"api_note_wheel_outcome": "Criado com “mostrar o resultado somente na roda”, então o resultado é lido na roda em vez de anunciado ao lado dela.",
	"api_e_memory": "Cartões virados para baixo, para virar e combinar em pares.",
	"api_c_memory": "Um array de pares. Cada par contém os dois cartões que combinam entre si.",
	"api_note_cards_media": "Um cartão é um objeto com um type e um value. Use \"text\" para palavras, ou \"image\", \"audio\", \"youtube\" ou \"link\" com uma URL em value, e adicione alt para uma descrição.",
	"api_e_matching-pairs": "Duas colunas de cartões para arrastar e combinar.",
	"api_c_matching-pairs": "Um array de pares. O primeiro cartão de cada par fica de um lado, seu par do outro.",
	"api_e_flash-cards": "Cartões de dois lados para folhear.",
	"api_c_flash-cards": "Um array de cartões. O primeiro cartão é a frente, o segundo é o verso.",
	"api_note_flashcards_sides": "O endpoint armazena quantos cartões você enviar, então envie exatamente dois por item — frente, depois verso.",
	"api_e_categorize": "Cartões para classificar na categoria a que pertencem.",
	"api_c_categorize": "Um array de categorias, cada uma com um nome e os cartões que pertencem a ela.",
	"api_note_categorize_name": "Uma categoria enviada sem nome é salva como “Untitled Category”, então sempre envie um.",
	"api_e_reorder": "Uma sequência que os jogadores precisam reorganizar.",
	"api_c_reorder": "Um array de sequências. Cada uma contém seus cartões na ordem correta.",
	"api_note_reorder_order": "A ordem que você envia é armazenada como a ordem correta — o número um primeiro.",
	"api_e_quiz": "Perguntas de múltipla escolha e abertas, pontuadas conforme os jogadores avançam.",
	"api_c_quiz": "Um array de perguntas. Perguntas de múltipla escolha trazem suas respostas; perguntas abertas trazem a resposta que você aceita.",
	"api_note_question_types": "question_type é \"multiple_choice\", em que a opção certa traz isCorrect true, ou \"open_answer\", que usa correct_answer no lugar. Se for omitido, é tratado como múltipla escolha.",
	"api_note_quiz_settings": "O endpoint do quiz repassa settings diretamente como blocos de configuração da atividade, então não é um lugar para opções soltas — ajuste o quiz no editor depois.",
	"api_e_board-game": "Um tabuleiro para percorrer, com suas perguntas nas casas.",
	"api_c_board-game": "Um array de perguntas, exatamente no mesmo formato que o endpoint do quiz recebe.",
	"api_set_board_tiles": "Quantas casas o tabuleiro tem. Entre 10 e 75.",
	"api_set_board_mode": "Se os jogadores correm até a chegada ou coletam itens pelo caminho.",
	"api_e_cryptogram": "Transforma uma frase em um código para decifrar, um caractere de cada vez.",
	"api_c_cryptogram": "Uma frase, no campo sentence. Este endpoint não recebe items.",
	"api_note_cryptogram_no_items": "Qualquer coisa que você enviar em items é ignorada — o passatempo é montado apenas a partir de sentence.",
	"api_set_cryptogram_helpers": "Quais caracteres são revelados de graça como ponto de partida: nenhum, os mais comuns, as vogais, ou os que você mesmo listar.",
	"api_set_cryptogram_character_list": "O alfabeto a partir do qual a cifra é construída. Se deixado vazio, a criptografia escolhe o seu próprio.",
	"api_set_cryptogram_extra_letters": "Os caracteres revelados quando helpers é \"custom\". Ignorado para os outros modos de ajuda.",
	"api_set_cryptogram_hide_unused": "Deixa de fora da chave os caracteres que a frase nunca usa.",
	"api_e_calculation": "Esconde uma frase atrás de contas — resolva a conta, revele a letra.",
	"api_c_calculation": "Uma frase, no campo sentence. Este endpoint não recebe items.",
	"api_set_calc_difficulty": "O maior resultado que uma conta pode ter.",
	"api_set_calc_operators": "Quais operações podem aparecer. x é multiplicação, : é divisão.",
	"api_set_calc_max_operations": "Quantas operações uma conta pode encadear.",
	"api_set_calc_number_difficulty": "Limita os números individuais dentro de uma conta. De 5 a 1000.",
	"api_note_calculation_fit": "Se as restrições forem apertadas demais para codificar a frase, a chamada responde 400 pedindo para afrouxá-las, em vez de salvar um passatempo parcial.",
	"api_e_sudoku": "Gera uma grade resolvida e depois retira números dela.",
	"api_c_sudoku": "Nada. Todo o passatempo vem de suas duas configurações.",
	"api_note_sudoku_no_items": "Não envie items nem sentence — size e difficulty são toda a entrada.",
	"api_note_sudoku_difficulty_sizes": "O editor só oferece a dificuldade para 2x3, 3x3 e 3x4. A API a aplica a todos os tamanhos, incluindo 2x2 e 4x4.",
	"api_set_sudoku_size": "O tamanho de um bloco, escrito como linhas por colunas — 3x3 dá a clássica grade 9x9. O endpoint só verifica se ele pode ser interpretado como dois números, então fique com os tamanhos que o editor oferece.",
	"api_set_sudoku_difficulty": "Quantos números ficam na grade para começar.",
	"api_e_jigsaw": "Corta uma imagem em peças para arrastar e remontar.",
	"api_c_jigsaw": "Uma URL de imagem, no campo image. Este endpoint não recebe items.",
	"api_note_jigsaw_grid": "A API sempre cria um quebra-cabeça 4 por 4. Quantidade de peças, peças irregulares e bordas retas são configurações do editor — enviar rows ou columns aqui não tem efeito.",
	"api_note_image_reachable": "A URL é armazenada exatamente como você a enviou e o arquivo nunca é copiado, então ela precisa continuar publicamente acessível durante todo o tempo em que a atividade for jogada.",
	"api_e_slidingpuzzle": "Embaralha uma imagem em peças que deslizam até o lugar certo.",
	"api_c_slidingpuzzle": "Uma URL de imagem, dentro de settings. Este endpoint não recebe items.",
	"api_note_sliding_image_slot": "Diferente do quebra-cabeça, este endpoint lê sua imagem de settings.image. Um campo image no nível superior é ignorado e a chamada responde 400.",
	"api_help_title": "Algo não está se comportando como deveria?",
	"api_help_body": "Envie a requisição que você tentou e o erro que recebeu de volta, e você terá uma resposta de verdade, da pessoa que escreveu o endpoint.",
	"api_help_cta": "E-mail para suporte",
	"api_int_kicker": "Integrações para desenvolvedores",
	"api_int_title": "Conecte o Puzzel à sua própria plataforma",
	"api_int_intro": "O Puzzel pode enviar o resultado de um jogador diretamente para outro sistema — a pontuação, até onde ele chegou, o que respondeu — sem que esse sistema precise ser um LMS completo. Esta página reúne todos os canais que existem: o que sai, quando sai e o mínimo que você precisa construir para recebê-lo.",
	"api_int_hero_out_label": "Os resultados saem via",
	"api_int_hero_out_value": "Um webhook ou uma mensagem para a página que envolve a atividade",
	"api_int_hero_in_label": "Sua página pode",
	"api_int_hero_in_value": "Fazer login do jogador e reiniciar a atividade",
	"api_int_hero_where_label": "Ativado",
	"api_int_hero_where_value": "Por atividade, em Desenvolvedor, no editor",
	"api_int_hero_plan_label": "Incluído em",
	"api_int_hero_plan_value": "Um plano pago — essas configurações ficam desativadas em uma conta gratuita",
	"api_int_search_placeholder": "Pesquisar canais, campos e exemplos",
	"api_int_search_empty": "Nada nesta página corresponde a isso. Tente um canal como webhook ou postMessage, ou um campo como progress.",
	"api_int_nav_channels": "Canais",
	"api_int_s_choose_title": "De qual canal você precisa?",
	"api_int_s_choose_body": "Três coisas podem sair de uma atividade e uma pode entrar. Qual delas serve depende de uma única pergunta: o jogador está dentro da sua página ou em outro lugar completamente diferente?",
	"api_int_choose_out": "Saindo do Puzzel",
	"api_int_choose_in": "Entrando no Puzzel",
	"api_int_choose_when": "Use quando",
	"api_int_choose_needs": "Você precisa de",
	"api_int_choose_setting": "Configuração",
	"api_int_ch_webhook_name": "Webhook de resultados",
	"api_int_ch_webhook_summary": "Cada resultado salvo é enviado por POST, como JSON, para uma URL que é sua.",
	"api_int_ch_webhook_when": "O jogador pode estar em qualquer lugar — um link compartilhado, um código QR, o site de outra pessoa — e você quer o resultado no seu próprio banco de dados.",
	"api_int_ch_webhook_needs": "Um endpoint HTTPS que aceite um POST de origem cruzada.",
	"api_int_ch_parent_name": "Resultados para a página ao redor",
	"api_int_ch_parent_summary": "O mesmo JSON, enviado para a página que incorpora a atividade em vez de para um servidor.",
	"api_int_ch_parent_when": "Você incorpora a atividade na sua própria página de curso e a página em si pode fazer algo com o resultado.",
	"api_int_ch_parent_needs": "Um iframe na sua página e um listener de mensagens. Sem servidor, sem CORS.",
	"api_int_ch_completion_name": "Sinal de conclusão",
	"api_int_ch_completion_summary": "Uma mensagem quando o jogador termina, sem carregar nada além desse fato.",
	"api_int_ch_completion_when": "Tudo que você quer saber é se ele terminou — para marcar a lição como concluída, liberar a próxima ou mostrar sua própria tela.",
	"api_int_ch_completion_needs": "Um iframe na sua página e um listener de mensagens.",
	"api_int_ch_trigger_name": "Reiniciar a partir da sua página",
	"api_int_ch_trigger_summary": "Sua página avisa a atividade incorporada para limpar as respostas do jogador e recomeçar.",
	"api_int_ch_trigger_when": "Você tem seu próprio botão \"tentar de novo\" fora da atividade.",
	"api_int_ch_trigger_needs": "Um iframe na sua página. A mensagem só é aceita vindo da página que faz a incorporação.",
	"api_int_s_webhook_title": "Webhook de resultados",
	"api_int_s_webhook_body": "Ative \"Enviar resultados para um webhook\" no editor e informe uma URL. A partir daí, toda vez que o progresso do jogador for salvo, o navegador dele envia por POST o resultado inteiro para essa URL, como JSON.",
	"api_int_webhook_steps_title": "Como configurar",
	"api_int_webhook_step_1": "Abra a atividade no editor e vá até o menu Desenvolvedor.",
	"api_int_webhook_step_2": "Ative \"Enviar resultados para um webhook\" e cole seu endpoint no campo logo abaixo. Precisa ser uma URL completa — um domínio isolado é recusado — e precisa ser https, porque o navegador bloqueia uma chamada http simples feita a partir de uma página servida via https.",
	"api_int_webhook_step_3": "Jogue a atividade uma vez você mesmo. O primeiro POST chega assim que você responder alguma coisa.",
	"api_int_webhook_receiver": "Um receptor, do início ao fim",
	"api_int_webhook_timing_title": "Ele dispara enquanto você joga, não só no final",
	"api_int_webhook_timing_body": "Um resultado sai toda vez que a entrada é salva: depois de uma pausa na digitação, quando uma carta é posicionada, quando o cronômetro para, e mais uma vez quando a atividade termina. Uma grade de palavras cruzadas longa gera algumas dezenas de chamadas, não uma só — por isso escreva seu handler como um upsert com chave em playerUid e activityKey, em vez de um insert. Cada chamada carrega o estado completo, então a mais recente sempre substitui a anterior e uma chamada perdida é compensada pela próxima.",
	"api_int_webhook_finished_title": "Diferenciar um término de um salvamento",
	"api_int_webhook_finished_body": "progress é uma porcentagem: 100 significa que a atividade está completa. Alguns tipos podem terminar sem chegar lá — um quiz respondido até o fim, um campo de solução resolvido — e esses trazem hasAlternateCompletion em vez disso. Trate qualquer um dos dois como finalizado.",
	"api_int_webhook_cors_title": "É enviado pelo navegador do jogador",
	"api_int_webhook_cors_body": "O POST vem da aba em que a atividade está sendo jogada, não de um servidor do Puzzel. A maioria dos endpoints criados para receber webhooks já aceita isso. Se o seu nunca recebe uma requisição, é por isso: o navegador pede permissão primeiro, então responda ao preflight OPTIONS com um cabeçalho Access-Control-Allow-Origin e o POST de verdade vem em seguida.",
	"api_int_webhook_trust_title": "Trate o payload como uma alegação, não uma prova",
	"api_int_webhook_trust_body": "Não há assinatura na requisição, e ela vem de um navegador que você não controla, então qualquer pessoa que olhar a página também pode te enviar uma. Isso é tranquilo para preencher uma barra de progresso ou um painel. Para qualquer coisa que você não deixaria um aluno definir sozinho — uma nota que conta, um certificado, um pagamento — confira com os resultados no seu próprio painel do Puzzel, ou deixe que os conectores de nota do LMS carreguem a pontuação em vez disso.",
	"api_int_s_parent_title": "Resultados para a página ao redor",
	"api_int_s_parent_body": "Se você incorporar a atividade, pode fazer com que esse mesmo JSON seja enviado para a sua própria página em vez de para um servidor. Ative \"Enviar resultados para a página pai\" e escute a mensagem. Nada sai do navegador, então não há endpoint para construir nem CORS para se preocupar.",
	"api_int_parent_origin_title": "Verifique de onde a mensagem veio",
	"api_int_parent_origin_body": "Seu listener escuta toda mensagem enviada para a página, incluindo de outros frames e extensões do navegador. Compare event.origin com https://puzzel.org antes de confiar no que está nela.",
	"api_int_parent_same_title": "O mesmo payload, o mesmo momento",
	"api_int_parent_same_body": "Este é o gêmeo do webhook: os mesmos campos, enviados nos mesmos momentos. Tudo o que está em \"O que um resultado contém\" também vale aqui.",
	"api_int_s_completion_title": "Sinal de conclusão",
	"api_int_s_completion_body": "O menor canal, para quando o resultado em si não é da sua conta: ative \"Enviar um sinal de conclusão\" e sua página recebe uma mensagem no exato momento em que o jogador termina.",
	"api_int_completion_shape": "O que chega",
	"api_int_completion_order_title": "O resultado já está salvo quando ela chega",
	"api_int_completion_order_body": "O sinal é enviado propositalmente depois que o salvamento de conclusão já foi concretizado, então uma página que reage lendo o resultado de volta vai encontrá-lo lá.",
	"api_int_completion_embed_title": "Somente dentro de um iframe",
	"api_int_completion_embed_body": "Os dois canais de mensagem enviam para a página que enquadra a atividade. Aberta em sua própria aba, não há ninguém para avisar, então nada é enviado.",
	"api_int_s_payload_title": "O que um resultado contém",
	"api_int_s_payload_body": "Um único formato, seja qual for o canal que o carrega. As respostas do jogador são indexadas pelos próprios ids dos itens da atividade, então as mesmas chaves aparecem em correctUids.",
	"api_int_col_when": "Quando está presente",
	"api_int_always": "sempre",
	"api_int_sometimes": "às vezes",
	"api_int_payload_absent_title": "Ausente, não vazio",
	"api_int_payload_absent_body": "Um campo que não se aplica é deixado de fora do JSON em vez de ser enviado como null ou zero. É assim que um tipo que não pontua uma tentativa se diferencia de uma tentativa que pontuou zero — então leia com um valor padrão e nunca presuma que uma chave está presente.",
	"api_int_payload_example": "Um quiz finalizado, como ele chega",
	"api_int_f_activity_key": "A atividade à qual o resultado pertence. A mesma chave que você vê na própria URL da atividade, depois de ?p=.",
	"api_int_f_player_uid": "Quem jogou, como um id anônimo. Estável para esse jogador nesse dispositivo, então é nele que você deve basear a chave dos resultados — não é um endereço de e-mail nem uma conta do Puzzel.",
	"api_int_f_player": "Os campos de cadastro que a atividade pede, conforme você os configurou: name, email, class, student_id e assim por diante. Ausente até o jogador se cadastrar, e totalmente ausente em uma atividade que não pede nada.",
	"api_int_f_progress": "Até onde chegou, em porcentagem. 100 significa finalizado.",
	"api_int_f_time_passed": "Tempo na atividade, em milissegundos.",
	"api_int_f_last_played_at": "Quando esse resultado foi salvo, como um timestamp Unix em milissegundos.",
	"api_int_f_created": "Quando a tentativa foi iniciada, como um timestamp Unix em milissegundos.",
	"api_int_f_player_input": "O que o jogador realmente digitou, indexado pelo id do item ao qual pertence. O formato interno depende do tipo de atividade — uma palavra, uma lista de cartas posicionadas, uma opção escolhida.",
	"api_int_f_correct_uids": "Quais desses itens estão certos, indexados da mesma forma. Ausente enquanto nada foi respondido ainda.",
	"api_int_f_score": "Pontos obtidos, nos tipos que pontuam uma tentativa. Ausente em todos os outros — inclusive em uma tentativa que realmente pontuou zero, então verifique se a chave existe antes de lê-la.",
	"api_int_f_performance": "A própria medida de desempenho de um tipo, quando ele mantém uma — palavras por minuto no exercício de digitação, por exemplo.",
	"api_int_f_attempts": "Qual tentativa é essa: 1 na primeira vez, mais uma a cada novo começo. Só nos tipos que encerram uma tentativa antes da hora e contam as repetições.",
	"api_int_f_knocked_out": "A tentativa terminou em uma resposta errada e acabou sem estar completa.",
	"api_int_f_alternate": "A atividade foi finalizada de um jeito que não chega a 100% — um quiz respondido até o fim, um campo de solução resolvido. Trate isso como uma conclusão.",
	"api_int_f_missed_keys": "Caracteres que o jogador continuou errando, do mais errado para o menos errado. Somente no exercício de digitação.",
	"api_int_f_content_version": "Contra qual versão do conteúdo da atividade isso foi jogado. Ela muda quando o proprietário edita as perguntas, então um resultado antigo pode ser diferenciado de um atual.",
	"api_int_s_control_title": "Reiniciando a atividade a partir da sua página",
	"api_int_s_control_body": "Uma instrução viaja no sentido contrário. Com \"Aceitar gatilhos da página pai\" ativado, a página que faz a incorporação pode limpar as respostas do jogador e colocar a atividade de volta no início — para um botão \"tentar de novo\" seu, fora do frame.",
	"api_int_control_only_title": "Reiniciar é o único gatilho",
	"api_int_control_only_body": "Não existe mensagem para enviar um resultado, abrir a mensagem final ou pular para uma pergunta. Uma mensagem pedindo qualquer coisa além de um reinício é ignorada.",
	"api_int_control_guard_title": "Só a página que incorpora é ouvida",
	"api_int_control_guard_body": "O gatilho só é aceito vindo da página que enquadra a atividade e de nenhum outro lugar — nem um frame irmão, nem um script na página. A configuração vem desativada por padrão, então ative-a para as atividades que você controla.",
	"api_int_s_identity_title": "Trazendo sua própria identidade de jogador",
	"api_int_s_identity_body": "Se sua plataforma já sabe quem está jogando, a atividade não precisa perguntar de novo. Existem dois handshakes, ambos para uma atividade dentro da sua página, e ambos ativados por nós em vez de no editor — eles mudam a quem um resultado pertence, então são configurados junto com você, e não por uma caixa de seleção.",
	"api_int_identity_pm_title": "Envie o jogador para nós",
	"api_int_identity_pm_body": "A atividade se anuncia com 'app-loaded' e espera. Sua página envia de volta os dados do jogador, e o resultado é registrado sob eles sem que o jogador digite nada ou veja uma tela de cadastro.",
	"api_int_identity_sso_title": "Envie um token para nós",
	"api_int_identity_sso_body": "O mesmo handshake, mas sua página envia o JWT emitido pelo seu provedor de identidade em vez dos próprios campos. Nós o verificamos contra os emissores configurados para sua conta antes de deixar o jogador entrar, então a identidade é comprovada em vez de apenas declarada — esse é o handshake certo para pedir quando o resultado precisa ser confiável.",
	"api_int_identity_cta_title": "Peça para ativarmos",
	"api_int_identity_cta_body": "Diga qual dos dois você quer e onde as atividades serão incorporadas, e nós configuramos sua conta e explicamos tudo com você.",
	"api_int_identity_cta_button": "Enviar e-mail sobre identidade",
	"api_int_s_create_title": "Criando atividades a partir do seu sistema",
	"api_int_s_create_body": "Tudo acima é sobre um resultado saindo. Na direção oposta — criar as próprias atividades a partir de um conteúdo que você já tem — está a Puzzle API: um POST por tipo de atividade, e você recebe de volta uma chave e uma URL para incorporar.",
	"api_int_create_link": "Ler a referência da API",
	"api_int_s_lms_title": "Quando um conector pronto é a resposta melhor",
	"api_int_s_lms_body": "Se a plataforma do outro lado é um LMS de verdade, provavelmente você não precisa de nada disso. As notas podem voltar sozinhas para o diário de classe dele, sem nada para você hospedar.",
	"api_int_lms_lti_title": "Moodle, Canvas, Brightspace, Schoology, itslearning",
	"api_int_lms_lti_body": "Iniciada de dentro do LMS, com a pontuação registrada de volta no diário de classe dele.",
	"api_int_lms_gc_title": "Google Classroom",
	"api_int_lms_gc_body": "Publique uma atividade como uma tarefa e receba as notas de volta automaticamente.",
	"api_int_lms_not_title": "Não é nenhum desses?",
	"api_int_lms_not_body": "Plataformas de curso, sites de associados, intranets e qualquer coisa que você mesmo construiu são exatamente para o que servem os canais desta página. Uma incorporação mais o sinal de conclusão cobre a maior parte disso.",
	"api_int_s_limits_title": "O que não existe",
	"api_int_s_limits_body": "Para você não sair procurando por isso:",
	"api_int_limit_no_read": "Nenhum endpoint para ler resultados de volta. A API cria atividades; os resultados saem pelos canais desta página, ou pelas exportações no seu painel.",
	"api_int_limit_no_signature": "Nenhuma assinatura no webhook. Não há nada contra o que verificar a requisição, por isso um resultado não deveria ser a única coisa sustentando algo importante.",
	"api_int_limit_per_activity": "Nenhum webhook para a conta inteira. A URL é uma configuração da atividade, então uma atividade que você copia leva a configuração junto, e uma nova começa sem ela.",
	"api_int_limit_no_multiplayer": "Nada em um jogo em equipe ou em uma sala ao vivo. Tanto os canais de mensagem quanto o webhook são para o jogo individual, e as configurações se desativam sozinhas quando o modo em equipe está ativado.",
	"api_int_limit_no_retry": "Nenhuma fila de entrega. Nada é armazenado e reenviado — o próximo salvamento é a nova tentativa, e a última chamada da tentativa é a que importa.",
	"api_nav_integrations": "Fazendo os resultados saírem"
}
