Tevékenységtípusonként egy POST. Küldd el a tartalmadat JSON-ként, és kapsz egy tevékenységet a Puzzel.org-fiókodban, meg egy URL-t, amelyet odaadhatsz a játékosoknak vagy beilleszthetsz egy iframe-be.
Alap-URL
https://puzzel.org/api/public/v1
Hitelesítés
Kulcs + e-mail a törzsben
Végpontok
20 tevékenységtípus
Kvóta
10 tevékenység naponta
Az első kérésed
Nincs mit telepíteni, és nincs kézfogás: küldj egy JSON törzset a kulcsoddal, az e-mail-címeddel és a tartalmaddal. A válasz tartalmazza az új tevékenység kulcsát és az URL-t, amelyen játszani lehet vele.
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": "hu",
"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"
}
]
}'
Az oldal minden példája teljes, futtatható kérés. Cseréld be a saját kulcsodat és tartalmadat, és máris működik.
Hitelesítés
Nincsenek fejlécek, és nincs bearer token. Mindkét azonosító minden kérés JSON törzsében utazik, és a kulcs csak ahhoz a fiókhoz jó, amelyhez az e-mail-cím tartozik.
Mező
Típus
Mit csinál
account_api_key
kötelező
string
string
A fiókod API-kulcsa. A törzsbe kerül, nem a fejlécbe.
email
kötelező
string
string
Az a cím, amellyel a Puzzel.org-fiókod bejelentkezik. A kulcs csak ezzel együtt érvényes.
A kulcsod az irányítópultod fiók szakaszában van, a Megjelenítés mögött.
Úgy kezeld a kulcsot, mint egy jelszót. Tevékenységeket hoz létre és ír felül a fiókodban, ezért tartsd a szerveren, és ne tedd olyan helyre, amit egy böngésző elolvashat.
A kérés törzse
Minden végpont ugyanazt az öt mezőt várja. A különbség az alattuk lévő tartalommezőben van: a legtöbb egy items tömböt kér, néhány egyetlen mondatot vagy képet, a Sudoku pedig semmit.
Mező
Típus
Mit csinál
account_api_key
kötelező
string
string
A fiókod API-kulcsa. A törzsbe kerül, nem a fejlécbe.
email
kötelező
string
string
Az a cím, amellyel a Puzzel.org-fiókod bejelentkezik. A kulcs csak ezzel együtt érvényes.
title
opcionális
string
string
A név, amelyet a tevékenység az irányítópultodon kap. Ha kihagyod, a végpont a saját tartaléknevét használja.
language
opcionális
string
string
Csak azt dönti el, milyen nyelvi kód kerül a visszakapott URL-be — semmit nem fordít le abból, amit küldesz. A szókereső emellett arra is használja, hogy "ar" esetén arabra váltsa a kitöltő betűket.
Alapérték: "en"
activity_key
opcionális
string
string
Hagyd ki, ha új tevékenységet szeretnél létrehozni. Ha egy már meglévő tevékenységed kulcsát adod meg, akkor helyette az a tevékenység épül újra.
A settings egy objektum, benne a végpontonként eltérő opciókkal. Hogy egy végpont melyeket olvassa, alább, az adott végpontnál látod; bármi mást teszel bele, azt figyelmen kívül hagyja.
Mit kapsz vissza
A sikeres hívás 200-zal válaszol, és megadja az új tevékenység kulcsát meg az URL-t, amelyen játszani lehet vele. Minden más esetben a success értéke false, és egyetlen error szöveg érkezik.
{
"success": false,
"error": "Invalid Email or API Key"
}
A visszakapott url a beágyazott nézet. Cseréld az embed részt play-re, hogy teljes oldalon nyíljon meg, vagy build-re, hogy a szerkesztőben — a p= utáni kulcs ugyanaz marad.
Létrehozás vs. frissítés
Ha elküldöd az activity_key mezőt, a mögötte lévő tevékenység a helyén épül újra: a tartalma kicserélődik, a neve és a verziójelzése frissül, a kulcs viszont ugyanaz marad — így a már megosztott linkek és beágyazások tovább működnek. Az eredmények, a mappa, ahová került, és minden olyan beállítás, amelyet a végpont maga nem ír, változatlan marad.
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"
}
]
}
A title minden frissítéskor érvényesül, az alapértéke is — ha kihagyod, a tevékenység az adott végpont tartaléknevét kapja.
Azokat a beállításblokkokat, amelyeket a végpont maga ír, nulláról írja újra, így a frissítés ezeket is visszaállítja az általad küldött értékekre vagy a végpont alapértékeire.
Csak a saját fiókod tevékenységeit frissítheted. Ha valaki máséhoz tartozó kulcsot küldesz, 403 a válasz.
A frissítés ugyanannyiba kerül, mint a létrehozás: egy hívás a mai kvótából.
Hívási korlát
10
10 tevékenység fiókonként naponta
Minden sikeres hívás beleszámít, a létrehozás és a frissítés egyaránt. Ha túlléped, a következő kérésre 429 a válasz, amíg a számláló nem nullázódik.
A számlálót naponta egyszer egy ütemezett feladat nullázza, nem gördülő 24 órás ablakban.
Hibák
A hibák mindig JSON-ként érkeznek, ugyanazzal a két mezővel, sosem HTML-oldalként. Az error szöveget embernek írtuk — megnevezi, melyik mező vagy melyik korlát okozta a bajt.
Státusz
Mit jelent
400
Bad Request
A törzsben valami hiányzik, hibás formátumú vagy tartományon kívül esik. Az üzenet megnevezi a mezőt.
401
Unauthorized
Az e-mail-cím ismeretlen, vagy a kulcs nem ahhoz a fiókhoz tartozik.
403
Forbidden
Az elküldött activity_key egy másik fiókhoz tartozik.
429
Too Many Requests
A mai kvóta elfogyott. Naponta egyszer nullázódik.
500
Server Error
A generátor nem tudott rejtvényt készíteni abból, amit küldtél — általában túl kevés a szó, vagy nem illeszthetők össze.
Végpontok
Tevékenységtípusonként egy útvonal, mind POST, mind ugyanazon az alap-URL-en. Mindegyiknél megtalálod a szükséges tartalmat, az általa olvasott beállításokat és egy futtatható kérést.
Szavak és betűk
F
I
G
A
T
R
I
P
M
Keresztrejtvény
Rácsba fűzi össze a válaszaidat, és megszámozza helyetted a meghatározásokat.
POST/api/public/v1/word-scrambleLegalább 1 elem az items tömbben
Tartalom
api_c_word_scramble
Tartaléknév: “Word Scramble API”
Jó tudni
Az API-n keresztül készült tevékenységeknél a sorrend keverése mindig be van kapcsolva, így nem abban a sorrendben kapják a játékosok, ahogy elküldted.
Beolvasott beállítások
Mező
Típus
Mit csinál
hidden_solution
opcionálisa settings objektumban
string
string
Opcionális bónuszszó, amelyet a játékosok a többi megoldása után írnak be.
Példakérés
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": "hu",
"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"
}
}'
POST/api/public/v1/typing-practiceLegalább 1 elem az items tömbben
Tartalom
api_c_typing_practice
Tartaléknév: “Typing Practice API”
Példakérés
POST typing-practice
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": "hu",
"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"
}
]
}'
Siker
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
"message": "Typing Practice created successfully"
}
POST/api/public/v1/memoryLegalább 2 elem az items tömbben
Tartalom
Párok tömbje. Minden pár azt a két kártyát tartalmazza, amelyek összetartoznak.
Tartaléknév: “Memory Game API”
Jó tudni
Egy kártya olyan objektum, amelynek van type és value mezője. Szavakhoz használd a "text" értéket, vagy az "image", "audio", "youtube" és "link" valamelyikét egy URL-lel a value mezőben, és add meg az alt mezőt a leíráshoz.
POST/api/public/v1/matching-pairsLegalább 2 elem az items tömbben
Tartalom
api_c_matching_pairs
Tartaléknév: “Matching Game API”
Jó tudni
Egy kártya olyan objektum, amelynek van type és value mezője. Szavakhoz használd a "text" értéket, vagy az "image", "audio", "youtube" és "link" valamelyikét egy URL-lel a value mezőben, és add meg az alt mezőt a leíráshoz.
POST/api/public/v1/flash-cardsLegalább 1 elem az items tömbben
Tartalom
api_c_flash_cards
Tartaléknév: “Flash Cards API”
Jó tudni
A végpont annyi kártyát tárol, amennyit küldesz, ezért elemenként pontosan kettőt küldj — előbb az előlapot, aztán a hátlapot.
Egy kártya olyan objektum, amelynek van type és value mezője. Szavakhoz használd a "text" értéket, vagy az "image", "audio", "youtube" és "link" valamelyikét egy URL-lel a value mezőben, és add meg az alt mezőt a leíráshoz.
POST/api/public/v1/categorizeLegalább 2 elem az items tömbben
Tartalom
Kategóriák tömbje, mindegyiknél egy név és a hozzá tartozó kártyák.
Tartaléknév: “Categorize Game API”
Jó tudni
A név nélkül küldött kategória az “Untitled Category” nevet kapja, ezért mindig adj meg nevet.
Egy kártya olyan objektum, amelynek van type és value mezője. Szavakhoz használd a "text" értéket, vagy az "image", "audio", "youtube" és "link" valamelyikét egy URL-lel a value mezőben, és add meg az alt mezőt a leíráshoz.
POST/api/public/v1/reorderLegalább 1 elem az items tömbben
Tartalom
Sorozatok tömbje. Mindegyik a helyes sorrendben tartalmazza a kártyáit.
Tartaléknév: “Reorder Game API”
Jó tudni
Az általad küldött sorrend lesz a helyes sorrend — az első elem elöl.
Egy kártya olyan objektum, amelynek van type és value mezője. Szavakhoz használd a "text" értéket, vagy az "image", "audio", "youtube" és "link" valamelyikét egy URL-lel a value mezőben, és add meg az alt mezőt a leíráshoz.
POST/api/public/v1/quizLegalább 1 elem az items tömbben
Tartalom
Kérdések tömbje. A feleletválasztós kérdések a válaszlehetőségeiket hozzák; a nyílt kérdések azt a választ, amelyet elfogadsz.
Tartaléknév: “Quiz API”
Jó tudni
A question_type értéke vagy "multiple_choice", ahol a helyes lehetőségnél isCorrect true, vagy "open_answer", amely helyette a correct_answer mezőt használja. Ha kihagyod, feleletválasztósnak számít.
A Quiz végpont a settings tartalmát közvetlenül tevékenységbeállítás-blokkokként adja tovább, tehát ide nem valók szabadon szórt opciók — a Quiz-t utólag a szerkesztőben állítsd be.
Példakérés
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": "hu",
"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."
}
]
}'
POST/api/public/v1/board-gameLegalább 1 elem az items tömbben
Tartalom
api_c_board_game
Tartaléknév: “Board Game API”
Jó tudni
A question_type értéke vagy "multiple_choice", ahol a helyes lehetőségnél isCorrect true, vagy "open_answer", amely helyette a correct_answer mezőt használja. Ha kihagyod, feleletválasztósnak számít.
Beolvasott beállítások
Mező
Típus
Mit csinál
number_of_tiles
opcionálisa settings objektumban
number
number
Hány mezője van a táblának. 10 és 75 között.
Alapérték: 30
game_mode
opcionálisa settings objektumban
string
string
A játékosok a célba érésért versenyeznek, vagy útközben tárgyakat gyűjtenek.
Lehetséges értékekrace_to_finishcollect_items
Alapérték: "race_to_finish"
Példakérés
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": "hu",
"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"
}
}'
Siker
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
"message": "Board Game created successfully"
}
Egyetlen mondat, a sentence mezőben. Ez a végpont nem fogad items elemeket.
Tartaléknév: “Cryptogram API”
Jó tudni
Amit az items mezőben küldesz, azt figyelmen kívül hagyjuk — a rejtvény kizárólag a mondatból épül.
Beolvasott beállítások
Mező
Típus
Mit csinál
sentence
kötelező
string
string
A titkosítandó mondat. A játékosok karakterről karakterre fejtik meg.
helpers
opcionálisa settings objektumban
string
string
Mely karaktereket kapják meg a játékosok ingyen, kiindulásként: egyet sem, a leggyakoribbakat, a magánhangzókat, vagy azokat, amelyeket te sorolsz fel.
Lehetséges értékeknonemost_commonvowelscustom
Alapérték: "none"
character_list
opcionálisa settings objektumban
string
string
Az ábécé, amelyből a rejtjel épül. Ha üresen hagyod, a titkosítás maga választ.
extra_letters
opcionálisa settings objektumban
string
string
Azok a karakterek, amelyeket a játékosok megkapnak, ha a helpers értéke "custom". A többi segítségmódnál nincs hatása.
hide_unused_characters
opcionálisa settings objektumban
boolean
boolean
Kihagyja a kulcsból azokat a karaktereket, amelyeket a mondat nem használ.
Alapérték: false
Példakérés
POST cryptogram
curl -X POST https://puzzel.org/api/public/v1/cryptogram \
-H "Content-Type: application/json" \
-d '{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"title": "Cryptogram",
"language": "hu",
"sentence": "An apple a day keeps the doctor away",
"settings": {
"helpers": "vowels",
"hide_unused_characters": false
}
}'
Semmi. Az egész rejtvény a két beállításából jön ki.
Tartaléknév: “Sudoku API”
Jó tudni
Ne küldj sem items, sem sentence mezőt — a méret és a nehézség a teljes bemenet.
A szerkesztő csak 2x3, 3x3 és 3x4 méretnél kínálja a nehézséget. Az API minden méretnél alkalmazza, a 2x2-t és a 4x4-et is beleértve.
Beolvasott beállítások
Mező
Típus
Mit csinál
size
opcionálisa settings objektumban
string
string
Egy blokk mérete, sorok és oszlopok formájában — a 3x3 adja a klasszikus 9x9-es rácsot. A végpont csak azt ellenőrzi, hogy két számként értelmezhető-e, ezért maradj azoknál a méreteknél, amelyeket a szerkesztő kínál.
Egyetlen kép-URL, az image mezőben. Ez a végpont nem fogad items elemeket.
Tartaléknév: “Jigsaw Game API”
Jó tudni
Az API mindig 4x4-es kirakót készít. A darabszám, a szabálytalan darabok és az egyenes élek szerkesztőbeli beállítások — a rows vagy a columns küldésének itt nincs hatása.
Az URL-t úgy tároljuk, ahogy elküldted, és a fájlt sosem másoljuk le, ezért nyilvánosan elérhetőnek kell maradnia mindaddig, amíg a tevékenységgel játszanak.
Beolvasott beállítások
Mező
Típus
Mit csinál
image
kötelező
string
string
A feldarabolandó kép abszolút URL-je. A legfelső szinten küldd, ne a settings objektumban.
Egyetlen kép-URL, a settings objektumban. Ez a végpont nem fogad items elemeket.
Tartaléknév: “Sliding Puzzle API”
Jó tudni
A kirakóval ellentétben ez a végpont a settings.image mezőből olvassa a képet. A legfelső szintű image mezőt figyelmen kívül hagyja, és a hívás 400-zal válaszol.
Az URL-t úgy tároljuk, ahogy elküldted, és a fájlt sosem másoljuk le, ezért nyilvánosan elérhetőnek kell maradnia mindaddig, amíg a tevékenységgel játszanak.
Beolvasott beállítások
Mező
Típus
Mit csinál
image
kötelezőa settings objektumban
string
string
Az összekeverendő kép abszolút URL-je. A kirakóval ellentétben ez a settings objektumban van.