En POST za vsako vrsto dejavnosti. Pošlji svojo vsebino kot JSON in dobiš dejavnost v svojem računu Puzzel.org ter URL, ki ga lahko daš igralcem ali vstaviš v iframe.
Osnovni URL
https://puzzel.org/api/public/v1
Avtentikacija
Ključ in e-pošta v telesu
Končne točke
20 vrst dejavnosti
Kvota
10 dejavnosti na dan
Tvoja prva zahteva
Nič ni treba namestiti in ni rokovanja: pošlji telo JSON s svojim ključem, e-pošto in vsebino. Odgovor vsebuje ključ nove dejavnosti in URL, na katerem se igra.
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": "sl",
"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"
}
]
}'
Ključ obravnavaj kot geslo. Ustvarja in prepisuje dejavnosti v tvojem računu, zato ga hrani na strani strežnika in stran od vsega, kar lahko prebere brskalnik.
Telo zahteve
Vsaka končna točka sprejme enakih pet polj. Razlikuje se polje z vsebino pod njimi: večina sprejme niz elementov, nekatere eno poved ali eno sliko, sudoku pa nič.
Polje
Tip
Kaj počne
account_api_key
obvezno
string
string
Ključ API tvojega računa. Gre v telo, ne v glavo.
email
obvezno
string
string
Naslov, s katerim se prijavljaš v svoj račun Puzzel.org. Ključ je veljaven samo skupaj z njim.
title
neobvezno
string
string
Ime, ki ga dejavnost dobi na tvoji nadzorni plošči. Če ga izpustiš, končna točka uporabi svoje privzeto ime.
language
neobvezno
string
string
Določa samo jezikovno različico v URL-ju, ki ga dobiš nazaj — ne prevede ničesar, kar pošlješ. Besedna iskalnica ga uporabi tudi za preklop polnilnih črk v arabščino, ko je vrednost "ar".
Privzeto: "en"
activity_key
neobvezno
string
string
Izpusti ga, če želiš ustvariti novo dejavnost. Če pošlješ ključ dejavnosti, ki jo že imaš, se namesto tega ta dejavnost ponovno zgradi.
settings je objekt z možnostmi za posamezno končno točko. Katere možnosti končna točka prebere, je navedeno spodaj pri njej; vse drugo, kar vneseš tja, se prezre.
Kaj dobiš nazaj
Uspešen klic odgovori s 200 ter ključem nove dejavnosti in URL-jem, na katerem se igra. Vse drugo odgovori s success, nastavljenim na false, in enim samim nizom napake.
{
"success": false,
"error": "Invalid Email or API Key"
}
URL, ki ga dobiš nazaj, je pogled za vdelavo. Zamenjaj embed s play, da ga odpreš čez celo stran, ali z build, da ga odpreš v urejevalniku — ključ za p= ostane enak.
Ustvarjanje in posodabljanje
Pošlji activity_key in dejavnost za njim se zgradi na mestu: njena vsebina se zamenja, ime in oznaka različice se osvežita, sam ključ pa ostane enak — zato povezave in vdelave, ki si jih že delil, še naprej delujejo. Rezultati, umestitev v mapo in vsaka nastavitev, ki je končna točka sama ne zapiše, ostanejo nespremenjeni.
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 se uporabi ob vsaki posodobitvi, vključno s privzeto vrednostjo — če ga izpustiš, se dejavnost preimenuje v privzeto ime te končne točke.
Bloki nastavitev, ki jih končna točka zapiše sama, se prepišejo od začetka, zato posodobitev tudi te ponastavi na vrednosti, ki jih pošlješ, ali na privzete vrednosti končne točke.
Posodobiš lahko samo dejavnosti, ki jih ima v lasti tvoj lastni račun. Ključ nekoga drugega dobi odgovor 403.
Posodobitev stane enako kot ustvarjanje: en klic od današnje kvote.
Omejitev hitrosti
10
10 dejavnosti na račun na dan
Šteje se vsak uspešen klic, ustvarjanje in posodabljanje enako. Če presežeš mejo, naslednja zahteva dobi odgovor 429, dokler se števec ne počisti.
Števec enkrat na dan počisti načrtovano opravilo, ne pa drseče 24-urno okno.
Napake
Napake vedno prispejo kot JSON z enakima dvema poljema, nikoli kot stran HTML. Niz napake je napisan tako, da ga lahko prebere človek — poimenuje polje ali omejitev, ki ni uspela.
Status
Kaj pomeni
400
Bad Request
Nekaj v telesu manjka, je napačno oblikovano ali izven dovoljenega obsega. Sporočilo poimenuje polje.
401
Unauthorized
E-pošta ni znana ali ključ ne pripada temu računu.
403
Forbidden
activity_key, ki si ga poslal, pripada drugemu računu.
429
Too Many Requests
Današnja kvota je porabljena. Počisti se enkrat na dan.
500
Server Error
Generator ni mogel zgraditi uganke iz tega, kar si poslal — običajno je premalo besed ali pa besed ni mogoče sestaviti skupaj.
Končne točke
Ena pot za vsako vrsto dejavnosti, vse POST, vse pod istim osnovnim URL-jem. Vsaka navaja vsebino, ki jo potrebuje, nastavitve, ki jih prebere, in zahtevo, ki jo lahko poženeš.
Besede in črke
F
I
G
A
T
R
I
P
M
Križanka
Tvoje odgovore prepleta v mrežo in oštevilči definicije namesto tebe.
Dejavnosti, ustvarjene prek API, imajo vedno vklopljeno nastavitev za mešanje vrstnega reda, zato vrstni red, ki ga pošlješ, ni vrstni red, ki ga dobijo igralci.
Nastavitve, ki jih prebere
Polje
Tip
Kaj počne
hidden_solution
neobveznoznotraj settings
string
string
Neobvezna dodatna beseda, ki jo igralci vnesejo, ko rešijo preostalo.
Primer zahteve
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": "sl",
"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"
}
}'
Ustvarjeno z vklopljeno nastavitvijo za preverjanje, da so ugibane besede resnične. Če so tvoje besede imena ali izmišljene, jo izklopi v urejevalniku.
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": "sl",
"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"
}
]
}'
Uspeh
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
"message": "Typing Practice created successfully"
}
Niz vprašanj. Vprašanja izbirnega tipa nosijo svoje odgovore, odprta vprašanja pa odgovor, ki ga sprejmeš.
Privzeto uporabi ime “Quiz API”
Vredno vedeti
question_type je bodisi "multiple_choice", kjer pravilna možnost nosi isCorrect true, bodisi "open_answer", ki namesto tega uporabi correct_answer. Če ga izpustiš, se obravnava kot izbirni tip.
Končna točka za kviz posreduje settings neposredno kot bloke nastavitev dejavnosti, zato to ni mesto za posamezne možnosti — kviz pozneje prilagodi v urejevalniku.
Primer zahteve
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": "sl",
"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 bodisi "multiple_choice", kjer pravilna možnost nosi isCorrect true, bodisi "open_answer", ki namesto tega uporabi correct_answer. Če ga izpustiš, se obravnava kot izbirni tip.
Nastavitve, ki jih prebere
Polje
Tip
Kaj počne
number_of_tiles
neobveznoznotraj settings
number
number
Koliko polj ima plošča. Med 10 in 75.
Privzeto: 30
game_mode
neobveznoznotraj settings
string
string
Ali igralci tekmujejo do cilja ali po poti zbirajo predmete.
Ena odrace_to_finishcollect_items
Privzeto: "race_to_finish"
Primer zahteve
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": "sl",
"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"
}
}'
Uspeh
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
"message": "Board Game created successfully"
}
Nič. Cela uganka nastane iz svojih dveh nastavitev.
Privzeto uporabi ime “Sudoku API”
Vredno vedeti
Ne pošlji items ne sentence — size in difficulty sta edini vhod.
Urejevalnik ponudi težavnost samo za 2x3, 3x3 in 3x4. API jo uporabi za vsako velikost, vključno z 2x2 in 4x4.
Nastavitve, ki jih prebere
Polje
Tip
Kaj počne
size
neobveznoznotraj settings
string
string
Velikost enega bloka, zapisana kot vrstice krat stolpci — 3x3 da klasično mrežo 9x9. Končna točka le preveri, da se to razčleni kot dve številki, zato ostani pri velikostih, ki jih ponuja urejevalnik.
Ena od2x22x33x33x44x4
Privzeto: "3x3"
difficulty_level
neobveznoznotraj settings
string
string
Koliko številk ostane na plošči za začetno stanje.
En URL slike, v polju image. Ta končna točka ne sprejme items.
Privzeto uporabi ime “Jigsaw Game API”
Vredno vedeti
API vedno ustvari sestavljanko 4 krat 4. Število kosov, nepravilni kosi in ravni robovi so nastavitve urejevalnika — pošiljanje vrstic ali stolpcev tukaj ne naredi ničesar.
URL se shrani tak, kot si ga poslal, datoteka pa se nikoli ne kopira, zato mora ostati javno dosegljiv, dokler se dejavnost igra.
Nastavitve, ki jih prebere
Polje
Tip
Kaj počne
image
obvezno
string
string
Absolutni URL slike, ki jo je treba razrezati. Pošlje se na najvišji ravni, ne znotraj settings.