Jeden POST na každý typ aktivity. Pošli svoj obsah ako JSON a späť dostaneš aktivitu vo svojom účte Puzzel.org a URL, ktorú odovzdáš hráčom alebo vložíš do iframe.
Základná URL
https://puzzel.org/api/public/v1
Overenie
Kľúč + e-mail v tele
Koncové body
20 typov aktivít
Kvóta
10 aktivít denne
Tvoja prvá požiadavka
Nič sa neinštaluje a žiadny handshake: pošli telo v JSON so svojím kľúčom, e-mailom a obsahom. Odpoveď obsahuje kľúč novej aktivity a URL, na ktorej sa hrá.
POST crossword
curl -X POST https://puzzel.org/api/public/v1/crossword \
-H "Content-Type: application/json" \
-d '{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"title": "Crossword",
"language": "sk",
"items": [
{
"answer": "BANANA",
"description": "A long yellow fruit",
"type": "text"
},
{
"answer": "CHERRY",
"description": "A small red stone fruit",
"type": "text"
},
{
"answer": "MELON",
"description": "Big, green outside, sweet inside",
"type": "text"
}
]
}'
Ku kľúču sa správaj ako k heslu. Vytvára a prepisuje aktivity v tvojom účte, tak ho drž na serveri a mimo všetkého, čo si prehliadač vie prečítať.
Telo požiadavky
Každý koncový bod berie rovnakých päť polí. Líši sa až pole s obsahom pod nimi: väčšina berie pole položiek, zopár jednu vetu alebo jeden obrázok a sudoku neberie nič.
Pole
Typ
Čo robí
account_api_key
povinné
string
string
Kľúč API tvojho účtu. Patrí do tela, nie do hlavičky.
email
povinné
string
string
Adresa, ktorou sa prihlasuje tvoj účet Puzzel.org. Kľúč platí len spolu s ňou.
title
voliteľné
string
string
Názov, ktorý aktivita dostane v tvojom prehľade. Ak ho vynecháš, koncový bod použije svoj náhradný názov.
language
voliteľné
string
string
Určuje len jazyk v URL, ktorú dostaneš späť — nič z toho, čo pošleš, nepreloží. Osemsmerovka ho navyše číta, aby pri hodnote "ar" prepla výplňové písmená na arabské.
Predvolené: "en"
activity_key
voliteľné
string
string
Ak ho vynecháš, vytvorí sa nová aktivita. Ak pošleš kľúč aktivity, ktorú už vlastníš, prestaví sa namiesto toho tá.
settings je objekt s možnosťami pre daný koncový bod. Ktoré z nich koncový bod číta, je uvedené pri ňom nižšie; čokoľvek iné, čo tam dáš, sa ignoruje.
Čo príde späť
Úspešné volanie odpovie kódom 200 s kľúčom novej aktivity a URL, na ktorej sa hrá. Čokoľvek iné odpovie s success nastaveným na false a jediným reťazcom error.
{
"success": false,
"error": "Invalid Email or API Key"
}
url, ktorú dostaneš späť, je zobrazenie embed. Vymeň embed za play a otvorí sa na celú stránku, alebo za build a otvorí sa v editore — kľúč za p= zostáva rovnaký.
Vytváranie vs. aktualizácia
Pošli activity_key a aktivita za ním sa prestaví na mieste: jej obsah sa nahradí, názov a značka verzie sa obnovia a samotný kľúč zostane rovnaký — takže už zdieľané odkazy a vloženia fungujú ďalej. Výsledky, umiestnenie v priečinku a každé nastavenie, ktoré koncový bod sám nezapisuje, zostanú tak, ako boli.
activity_key
{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"activity_key": "-Nq8sample_activity_key",
"title": "Fruit crossword, week 2",
"items": [
{
"answer": "BANANA",
"description": "A long yellow fruit",
"type": "text"
},
{
"answer": "CHERRY",
"description": "A small red stone fruit",
"type": "text"
},
{
"answer": "MELON",
"description": "Big, green outside, sweet inside",
"type": "text"
}
]
}
title sa uplatní pri každej aktualizácii, vrátane svojej predvolenej hodnoty — ak ho vynecháš, aktivita sa premenuje na náhradný názov daného koncového bodu.
Bloky nastavení, ktoré koncový bod zapisuje sám, sa prepíšu odznova, takže aktualizácia ich zároveň vráti na hodnoty, ktoré pošleš, alebo na predvolené hodnoty koncového bodu.
Aktualizovať sa dajú len aktivity, ktoré vlastní tvoj účet. Cudzí kľúč odpovie kódom 403.
Aktualizácia stojí rovnako ako vytvorenie: jedno volanie z dnešnej kvóty.
Limit počtu volaní
10
10 aktivít na účet a deň
Počíta sa každé úspešné volanie, vytvorenie aj aktualizácia. Po prekročení odpovie ďalšia požiadavka kódom 429, kým sa počítadlo nevynuluje.
Počítadlo raz denne vynuluje naplánovaná úloha, nie kĺzavé 24-hodinové okno.
Chyby
Chyby prichádzajú vždy ako JSON s tými istými dvoma poľami, nikdy ako HTML stránka. Reťazec error je napísaný tak, aby ho čítal človek — pomenúva pole alebo limit, ktorý zlyhal.
Stav
Čo znamená
400
Bad Request
V tele niečo chýba, má zlý tvar alebo je mimo rozsahu. Správa pomenúva dané pole.
401
Unauthorized
E-mail je neznámy alebo kľúč nepatrí k tomu účtu.
403
Forbidden
Odoslaný activity_key patrí inému účtu.
429
Too Many Requests
Dnešná kvóta je vyčerpaná. Vynuluje sa raz denne.
500
Server Error
Generátor nedokázal z odoslaného obsahu zostaviť hlavolam — zvyčajne je slov príliš málo alebo sa nedajú pospájať.
Koncové body
Jedna cesta na každý typ aktivity, všetky POST, všetky pod rovnakou základnou URL. Pri každej je uvedený obsah, ktorý potrebuje, nastavenia, ktoré číta, a požiadavka, ktorú si vieš spustiť.
Slová a písmená
F
I
G
A
T
R
I
P
M
Krížovka
Poprepája tvoje odpovede do mriežky a definície ti očísluje.
Pole slov. Každá položka spája odpoveď s definíciou, ktorá na ňu ukazuje.
Náhradný názov je “Crossword API”
Dobré vedieť
Odpovede kratšie ako dva znaky sa pred zostavením mriežky vyradia a aspoň dve to musia prežiť.
Odpovede sa prevedú na veľké písmená a generátor má dvadsať pokusov, aby ich umiestnil. Ak nedokáže umiestniť ani jedno slovo, volanie odpovie kódom 500.
Ukážková požiadavka
POST crossword
curl -X POST https://puzzel.org/api/public/v1/crossword \
-H "Content-Type: application/json" \
-d '{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"title": "Crossword",
"language": "sk",
"items": [
{
"answer": "BANANA",
"description": "A long yellow fruit",
"type": "text"
},
{
"answer": "CHERRY",
"description": "A small red stone fruit",
"type": "text"
},
{
"answer": "MELON",
"description": "Big, green outside, sweet inside",
"type": "text"
}
]
}'
Aktivity vytvorené cez API majú vždy zapnuté nastavenie na premiešanie poradia, takže poradie, v ktorom ich pošleš, nie je poradie, ktoré dostanú hráči.
Nastavenia, ktoré číta
Pole
Typ
Čo robí
hidden_solution
voliteľnév settings
string
string
Voliteľné bonusové slovo, ktoré hráči zadajú, keď vyriešia zvyšok.
Ukážková požiadavka
POST word-scramble
curl -X POST https://puzzel.org/api/public/v1/word-scramble \
-H "Content-Type: application/json" \
-d '{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"title": "Word Scramble",
"language": "sk",
"items": [
{
"answer": "BANANA",
"description": "A long yellow fruit",
"type": "text"
},
{
"answer": "CHERRY",
"description": "A small red stone fruit",
"type": "text"
},
{
"answer": "MELON",
"description": "Big, green outside, sweet inside",
"type": "text"
}
],
"settings": {
"hidden_solution": "FRUIT"
}
}'
curl -X POST https://puzzel.org/api/public/v1/typing-practice \
-H "Content-Type: application/json" \
-d '{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"title": "Typing Practice",
"language": "sk",
"items": [
{
"answer": "The quick brown fox jumps over the lazy dog",
"description": "Every letter of the alphabet",
"type": "text"
},
{
"answer": "Pack my box with five dozen liquor jugs",
"description": "Another pangram",
"type": "text"
}
]
}'
Úspech
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
"message": "Typing Practice created successfully"
}
Pole otázok. Otázky s výberom nesú svoje odpovede; otvorené otázky nesú odpoveď, ktorú uznáš.
Náhradný názov je “Quiz API”
Dobré vedieť
question_type je buď "multiple_choice", kde má správna možnosť isCorrect true, alebo "open_answer", ktorý namiesto toho používa correct_answer. Ak chýba, berie sa ako otázka s výberom.
Koncový bod kvízu posiela settings priamo ďalej ako bloky nastavení aktivity, takže to nie je miesto pre voľné možnosti — kvíz potom uprav v editore.
Ukážková požiadavka
POST quiz
curl -X POST https://puzzel.org/api/public/v1/quiz \
-H "Content-Type: application/json" \
-d '{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"title": "Quiz",
"language": "sk",
"items": [
{
"question_type": "multiple_choice",
"description": "Which fruit is yellow?",
"answers": [
{
"type": "text",
"description": "Banana",
"isCorrect": true
},
{
"type": "text",
"description": "Cherry",
"isCorrect": false
}
]
},
{
"question_type": "open_answer",
"description": "What colour is a lemon?",
"correct_answer": "Yellow",
"explanation": "Lemons ripen from green to yellow."
}
]
}'
question_type je buď "multiple_choice", kde má správna možnosť isCorrect true, alebo "open_answer", ktorý namiesto toho používa correct_answer. Ak chýba, berie sa ako otázka s výberom.
Nastavenia, ktoré číta
Pole
Typ
Čo robí
number_of_tiles
voliteľnév settings
number
number
Koľko políčok má doska. Od 10 do 75.
Predvolené: 30
game_mode
voliteľnév settings
string
string
Či hráči pretekajú do cieľa, alebo cestou zbierajú predmety.
Jedno zrace_to_finishcollect_items
Predvolené: "race_to_finish"
Ukážková požiadavka
POST board-game
curl -X POST https://puzzel.org/api/public/v1/board-game \
-H "Content-Type: application/json" \
-d '{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"title": "Board Game",
"language": "sk",
"items": [
{
"question_type": "multiple_choice",
"description": "Which fruit is yellow?",
"answers": [
{
"type": "text",
"description": "Banana",
"isCorrect": true
},
{
"type": "text",
"description": "Cherry",
"isCorrect": false
}
]
},
{
"question_type": "open_answer",
"description": "What colour is a lemon?",
"correct_answer": "Yellow",
"explanation": "Lemons ripen from green to yellow."
}
],
"settings": {
"number_of_tiles": 30,
"game_mode": "race_to_finish"
}
}'
Úspech
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
"message": "Board Game created successfully"
}
Nič. Celý hlavolam vznikne z jeho dvoch nastavení.
Náhradný názov je “Sudoku API”
Dobré vedieť
Neposielaj items ani sentence — veľkosť a obťažnosť sú celý vstup.
Editor ponúka obťažnosť len pre 2x3, 3x3 a 3x4. API ju uplatní na každú veľkosť, vrátane 2x2 a 4x4.
Nastavenia, ktoré číta
Pole
Typ
Čo robí
size
voliteľnév settings
string
string
Veľkosť jedného bloku zapísaná ako riadky krát stĺpce — 3x3 dáva klasickú mriežku 9x9. Koncový bod overuje len to, že sa to dá načítať ako dve čísla, tak zostaň pri veľkostiach, ktoré ponúka editor.
Jedna URL obrázka v poli image. Tento koncový bod neberie žiadne items.
Náhradný názov je “Jigsaw Game API”
Dobré vedieť
API vždy vytvorí puzzle 4 krát 4. Počet dielov, nepravidelné diely a rovné okraje sú nastavenia editora — poslať sem rows alebo columns nemá žiadny účinok.
URL sa uloží presne tak, ako ju pošleš, a súbor sa nikdy nekopíruje, takže musí zostať verejne dostupná tak dlho, kým sa aktivita hrá.
Nastavenia, ktoré číta
Pole
Typ
Čo robí
image
povinné
string
string
Absolútna URL obrázka, ktorý sa rozstrihá. Posiela sa na najvyššej úrovni, nie vnútri settings.