Yksi POST-pyyntö per aktiviteettityyppi. Lähetä sisältösi JSON-muodossa ja saat vastauksena aktiviteetin Puzzel.org-tilillesi sekä URL-osoitteen, jonka voit antaa pelaajille tai upottaa iframeen.
Perus-URL
https://puzzel.org/api/public/v1
Todennus
Avain + sähköposti rungossa
Päätepisteet
20 aktiviteettityyppiä
Kiintiö
10 aktiviteettia päivässä
Ensimmäinen pyyntösi
Ei asennettavaa eikä kättelyä: lähetä JSON-runko, jossa on avaimesi, sähköpostisi ja sisältösi. Vastaus sisältää uuden aktiviteetin avaimen ja URL-osoitteen, jossa sitä pelataan.
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": "fi",
"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"
}
]
}'
Jokainen tämän sivun esimerkki on täydellinen, suoraan ajettava pyyntö. Vaihda tilalle oma avaimesi ja sisältösi, niin se toimii sellaisenaan.
Todennus
Otsikkokenttiä tai bearer-tokenia ei tarvita. Molemmat tunnistetiedot kulkevat jokaisen pyynnön JSON-rungossa, ja avain hyväksytään vain sille tilille, johon kyseinen sähköposti kuuluu.
Kenttä
Tyyppi
Mitä se tekee
account_api_key
pakollinen
string
string
Tilisi API-avain. Se annetaan rungossa, ei otsikkokentässä.
email
pakollinen
string
string
Osoite, jolla Puzzel.org-tilisi kirjautuu sisään. Avain on voimassa vain yhdessä sen kanssa.
Avaimesi löytyy hallintapaneelisi tili-osiosta Näytä-painikkeen takaa.
Käsittele avainta kuin salasanaa. Se luo ja korvaa aktiviteetteja tililläsi, joten pidä se palvelinpuolella ja poissa kaikesta, mitä selain voi lukea.
Pyynnön runko
Jokainen päätepiste ottaa vastaan samat viisi kenttää. Niiden alla oleva sisältökenttä vaihtelee: useimmat ottavat vastaan taulukollisen items-kohteita, muutamat yhden lauseen tai yhden kuvan, ja sudoku ei ota vastaan mitään.
Kenttä
Tyyppi
Mitä se tekee
account_api_key
pakollinen
string
string
Tilisi API-avain. Se annetaan rungossa, ei otsikkokentässä.
email
pakollinen
string
string
Osoite, jolla Puzzel.org-tilisi kirjautuu sisään. Avain on voimassa vain yhdessä sen kanssa.
title
valinnainen
string
string
Nimi, jonka aktiviteetti saa hallintapaneelissasi. Jätä se pois, niin päätepiste käyttää omaa oletusnimeään.
language
valinnainen
string
string
Määrittää vain kielialueen palautettavassa URL-osoitteessa — se ei käännä mitään lähettämästäsi. Sanasokkelo lukee sen myös vaihtaakseen täytekirjaimensa arabiaksi, kun arvo on "ar".
Oletus: "en"
activity_key
valinnainen
string
string
Jätä pois, jos haluat luoda uuden aktiviteetin. Anna jo omistamasi aktiviteetin avain, niin kyseinen aktiviteetti rakennetaan sen sijaan uudelleen.
settings on objekti, joka sisältää päätepistekohtaiset asetukset. Mitkä niistä kukin päätepiste lukee, on lueteltu sen kohdalla alla; kaikki muu, mitä sinne laitat, jätetään huomiotta.
Mitä vastauksena tulee
Onnistunut kutsu vastaa koodilla 200 ja palauttaa uuden aktiviteetin avaimen sekä URL-osoitteen, jossa sitä pelataan. Kaikki muu vastaa siten, että success on false, ja mukana on yksi virhemerkkijono.
{
"success": false,
"error": "Invalid Email or API Key"
}
Saamasi url on upotusnäkymä. Vaihda embed sanaan play, niin se avautuu koko sivun näkymässä, tai sanaan build, niin se avautuu editorissa — p=-parametrin jälkeinen avain pysyy samana.
Luominen vs. päivittäminen
Lähetä activity_key, niin sen takana oleva aktiviteetti rakennetaan uudelleen paikallaan: sen sisältö korvataan, sen nimi ja versioleima päivitetään, ja itse avain pysyy samana — joten jo jakamasi linkit ja upotukset toimivat edelleen. Tulokset, kansiosijoitus ja jokainen asetus, jota päätepiste ei itse kirjoita, jätetään ennalleen.
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 otetaan käyttöön joka päivityksessä, myös sen oletusarvo — jätä se pois, niin aktiviteetti nimetään uudelleen kyseisen päätepisteen oletusnimeksi.
Asetuslohkot, joita päätepiste itse kirjoittaa, kirjoitetaan kokonaan uudelleen, joten päivitys palauttaa myös ne lähettämiisi arvoihin tai päätepisteen oletusarvoihin.
Voit päivittää vain aktiviteetteja, jotka oma tilisi omistaa. Toisen tilin avain vastaa koodilla 403.
Päivitys maksaa saman verran kuin luominen: yhden kutsun tämän päivän kiintiöstä.
Kutsurajoitus
10
10 aktiviteettia tiliä kohden päivässä
Jokainen onnistunut kutsu lasketaan mukaan, sekä luonnit että päivitykset. Jos raja ylittyy, seuraava pyyntö vastaa koodilla 429, kunnes laskuri nollataan.
Laskuri nollataan kerran päivässä ajastetulla tehtävällä, ei liukuvalla 24 tunnin ikkunalla.
Virheet
Virheet saapuvat aina JSON-muodossa samoilla kahdella kentällä, ei koskaan HTML-sivuna. Virhemerkkijono on kirjoitettu ihmisen luettavaksi — se nimeää kentän tai rajan, joka ei täyttynyt.
Tila
Mitä se tarkoittaa
400
Bad Request
Jokin rungossa puuttuu, on virheellinen tai ylittää sallitun alueen. Viesti nimeää kentän.
401
Unauthorized
Sähköposti on tuntematon, tai avain ei kuulu kyseiselle tilille.
403
Forbidden
Lähettämäsi activity_key kuuluu toiselle tilille.
429
Too Many Requests
Tämän päivän kiintiö on käytetty loppuun. Se nollautuu kerran päivässä.
500
Server Error
Generaattori ei pystynyt rakentamaan pulmapeliä lähettämästäsi sisällöstä — yleensä liian vähän sanoja tai sanoja, joita ei saada sovitettua yhteen.
Päätepisteet
Yksi polku per aktiviteettityyppi, kaikki POST-pyyntöjä, kaikki saman perus-URL:n alla. Jokaisen kohdalla on lueteltu tarvittava sisältö, luettavat asetukset ja pyyntö, jonka voit ajaa.
Sanat ja kirjaimet
F
I
G
A
T
R
I
P
M
Sanaristikko
Lomittaa vastauksesi ruudukkoon ja numeroi vihjeet puolestasi.
Taulukko sanoja. Jokainen kohta yhdistää vastauksen siihen viittaavaan vihjeeseen.
Käyttää oletuksena nimeä “Crossword API”
Hyvä tietää
Alle kaksi merkkiä pitkät vastaukset poistetaan ennen ruudukon rakentamista, ja vähintään kahden on säilyttävä sen jälkeen.
Vastaukset muutetaan isoiksi kirjaimiksi, ja generaattori saa kaksikymmentä yritystä niiden sovittamiseen. Jos se ei saa sijoitettua yhtäkään sanaa, kutsu vastaa koodilla 500.
Esimerkkipyyntö
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": "fi",
"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"
}
]
}'
Taulukko sanoja. Vihjeteksti muodostaa sanapankin, jonka pohjalta pelaajat työskentelevät.
Käyttää oletuksena nimeä “Wordseeker API”
Hyvä tietää
Alle kaksi merkkiä pitkät vastaukset poistetaan, ja jokainen vastaus muutetaan isoiksi kirjaimiksi ennen ruudukkoon lisäämistä.
Ruudukko täytetään latinalaisilla kirjaimilla, ellei language ole "ar", jolloin täyte vaihtuu arabiaksi.
Luettavat asetukset
Kenttä
Tyyppi
Mitä se tekee
hidden_solution
valinnainenasetuksissa
string
string
Jäljelle jäävät kirjaimet muodostavat tämän. Sen asettaminen kertoo generaattorille myös, että se sovittaa ratkaisun ensin sen sijaan, että se mahduttaisi mahdollisimman monta sanaa.
directions
valinnainenasetuksissa
string[]
string[]
Mihin suuntiin sana saa kulkea. Jätä pois, niin sanat kulkevat vain itään, kaakkoon ja etelään.
Yksi seuraavistawesteastnorthsouthnorthwestnortheastsouthwestsoutheast
Oletus: ["east", "southeast", "south"]
template
valinnainenasetuksissa
string
string
Leikkaa ruudukon muotoon sen sijaan, että se jätettäisiin neliöksi.
Yksi seuraavistasquarecirclecrossdiamondpyramidsmileystarcross_plus
Esimerkkipyyntö
POST wordseeker
curl -X POST https://puzzel.org/api/public/v1/wordseeker \
-H "Content-Type: application/json" \
-d '{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"title": "Wordseeker",
"language": "fi",
"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",
"directions": [
"east",
"south",
"southeast"
],
"template": "square"
}
}'
Taulukko sanoja. Yhdessä niiden on sisällettävä piilotetun sanan jokainen kirjain.
Käyttää oletuksena nimeä “Acrostic API”
Hyvä tietää
Jos vastaukset eivät riitä tuottamaan ratkaisun tarvitsemia kirjaimia, kutsu vastaa koodilla 500 sen sijaan, että se tallentaisi puolivalmiin ruudukon.
Generaattori järjestää vastauksesi uudelleen, jotta sarake toimii, joten lähettämäsi järjestys ei ole se, jonka pelaajat näkevät.
Luettavat asetukset
Kenttä
Tyyppi
Mitä se tekee
hidden_solution
pakollinenasetuksissa
string
string
Sana, jonka korostettu sarake muodostaa. Tämä päätepiste ei toimi ilman sitä.
Esimerkkipyyntö
POST acrostic
curl -X POST https://puzzel.org/api/public/v1/acrostic \
-H "Content-Type: application/json" \
-d '{
"account_api_key": "YOUR_API_KEY",
"email": "you@example.com",
"title": "Acrostic",
"language": "fi",
"items": [
{
"answer": "PEACH",
"description": "Fuzzy skin, sweet flesh",
"type": "text"
},
{
"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": "PLUM"
}
}'
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": "fi",
"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"
}
]
}'
Onnistui
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
"message": "Typing Practice created successfully"
}
Taulukko pareja. Jokainen pari sisältää kaksi yhteenkuuluvaa korttia.
Käyttää oletuksena nimeä “Memory Game API”
Hyvä tietää
Kortti on objekti, jolla on type ja value. Käytä arvoa "text" sanoille, tai "image", "audio", "youtube" tai "link" siten, että value sisältää URL-osoitteen, ja lisää alt kuvausta varten.
Kortti on objekti, jolla on type ja value. Käytä arvoa "text" sanoille, tai "image", "audio", "youtube" tai "link" siten, että value sisältää URL-osoitteen, ja lisää alt kuvausta varten.
Päätepiste tallentaa täsmälleen niin monta korttia kuin lähetät, joten lähetä täsmälleen kaksi per kohta — ensin etupuoli, sitten takapuoli.
Kortti on objekti, jolla on type ja value. Käytä arvoa "text" sanoille, tai "image", "audio", "youtube" tai "link" siten, että value sisältää URL-osoitteen, ja lisää alt kuvausta varten.
Taulukko kategorioita, joista jokaisella on nimi ja siihen kuuluvat kortit.
Käyttää oletuksena nimeä “Categorize Game API”
Hyvä tietää
Ilman nimeä lähetetty kategoria tallennetaan nimellä “Untitled Category”, joten lähetä nimi aina.
Kortti on objekti, jolla on type ja value. Käytä arvoa "text" sanoille, tai "image", "audio", "youtube" tai "link" siten, että value sisältää URL-osoitteen, ja lisää alt kuvausta varten.
Taulukko järjestyksiä. Jokainen sisältää korttinsa oikeassa järjestyksessä.
Käyttää oletuksena nimeä “Reorder Game API”
Hyvä tietää
Lähettämäsi järjestys tallennetaan oikeana järjestyksenä — numero yksi ensin.
Kortti on objekti, jolla on type ja value. Käytä arvoa "text" sanoille, tai "image", "audio", "youtube" tai "link" siten, että value sisältää URL-osoitteen, ja lisää alt kuvausta varten.
Taulukko kysymyksiä. Monivalintakysymyksillä on omat vastausvaihtoehtonsa; avoimilla kysymyksillä on hyväksymäsi vastaus.
Käyttää oletuksena nimeä “Quiz API”
Hyvä tietää
question_type on joko "multiple_choice", jolloin oikealla vaihtoehdolla on isCorrect true, tai "open_answer", joka käyttää sen sijaan kenttää correct_answer. Jos se jätetään pois, sitä käsitellään monivalintana.
Quiz-päätepiste välittää settings-kentän suoraan aktiviteetin asetuslohkoiksi, joten se ei ole paikka irrallisille valinnoille — säädä quiz jälkikäteen editorissa.
Esimerkkipyyntö
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": "fi",
"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 on joko "multiple_choice", jolloin oikealla vaihtoehdolla on isCorrect true, tai "open_answer", joka käyttää sen sijaan kenttää correct_answer. Jos se jätetään pois, sitä käsitellään monivalintana.
Luettavat asetukset
Kenttä
Tyyppi
Mitä se tekee
number_of_tiles
valinnainenasetuksissa
number
number
Kuinka monta ruutua laudalla on. Väliltä 10–75.
Oletus: 30
game_mode
valinnainenasetuksissa
string
string
Kilpailevatko pelaajat maaliin vai keräävätkö he esineitä matkan varrella.
Yksi seuraavistarace_to_finishcollect_items
Oletus: "race_to_finish"
Esimerkkipyyntö
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": "fi",
"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"
}
}'
Onnistui
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
"message": "Board Game created successfully"
}
POST/api/public/v1/calculationEi ota vastaan items-kohteita
Sisältö
Yksi lause sentence-kentässä. Tämä päätepiste ei ota vastaan items-kohteita.
Käyttää oletuksena nimeä “Calculation Game API”
Hyvä tietää
Jos rajoitukset ovat liian tiukat lauseen koodaamiseen, kutsu vastaa koodilla 400 ja pyytää löysäämään niitä sen sijaan, että se tallentaisi keskeneräisen pulmapelin.
Luettavat asetukset
Kenttä
Tyyppi
Mitä se tekee
sentence
pakollinen
string
string
Lause, jonka pelaajat paljastavat ratkaisemalla laskut.
difficulty_level
valinnainenasetuksissa
number
number
Suurin sallittu vastaus, joka laskulla saa olla.
Yksi seuraavista20501001000
Oletus: "100"
operators
valinnainenasetuksissa
string[]
string[]
Mitkä laskutoimitukset voivat esiintyä. x on kertolasku, : on jakolasku.
Yksi seuraavista+-x:
Oletus: ["+", "-", "x", ":"]
max_operations
valinnainenasetuksissa
number
number
Kuinka monta laskutoimitusta yksi lasku voi ketjuttaa yhteen.
Yksi seuraavista123
Oletus: 1
number_difficulty
valinnainenasetuksissa
number
number
Rajoittaa laskun yksittäisiä lukuja. Väliltä 5–1000.
POST/api/public/v1/sudokuEi ota vastaan items-kohteita
Sisältö
Ei mitään. Koko pulmapeli syntyy sen kahdesta asetuksesta.
Käyttää oletuksena nimeä “Sudoku API”
Hyvä tietää
Älä lähetä items-kohteita äläkä lausetta — size ja difficulty ovat koko syöte.
Editori tarjoaa vaikeustason vain kooille 2x3, 3x3 ja 3x4. API soveltaa sitä jokaiseen kokoon, mukaan lukien 2x2 ja 4x4.
Luettavat asetukset
Kenttä
Tyyppi
Mitä se tekee
size
valinnainenasetuksissa
string
string
Yhden lohkon koko, kirjoitettuna rivit kertaa sarakkeet — 3x3 antaa klassisen 9x9-ruudukon. Päätepiste vain tarkistaa, että se jäsentyy kahdeksi luvuksi, joten pysy editorin tarjoamissa koissa.
Yksi seuraavista2x22x33x33x44x4
Oletus: "3x3"
difficulty_level
valinnainenasetuksissa
string
string
Kuinka monta numeroa jätetään laudalle lähtökohdaksi.
POST/api/public/v1/jigsawEi ota vastaan items-kohteita
Sisältö
Yksi kuvan URL-osoite image-kentässä. Tämä päätepiste ei ota vastaan items-kohteita.
Käyttää oletuksena nimeä “Jigsaw Game API”
Hyvä tietää
API tekee aina 4x4-palapelin. Palojen määrä, epäsäännölliset palat ja suorat reunat ovat editorin asetuksia — rivien tai sarakkeiden lähettäminen tässä ei tee mitään.
URL-osoite tallennetaan sellaisenaan kuin lähetit sen, eikä tiedostoa koskaan kopioida, joten sen on pysyttävä julkisesti saatavilla niin kauan kuin aktiviteettia pelataan.
Luettavat asetukset
Kenttä
Tyyppi
Mitä se tekee
image
pakollinen
string
string
Pilkottavan kuvan absoluuttinen URL-osoite. Lähetetään ylätasolla, ei settings-kentän sisällä.
POST/api/public/v1/slidingpuzzleEi ota vastaan items-kohteita
Sisältö
Yksi kuvan URL-osoite settings-kentän sisällä. Tämä päätepiste ei ota vastaan items-kohteita.
Käyttää oletuksena nimeä “Sliding Puzzle API”
Hyvä tietää
Toisin kuin palapeli, tämä päätepiste lukee kuvansa kohdasta settings.image. Ylätason image-kenttä jätetään huomiotta, ja kutsu vastaa koodilla 400.
URL-osoite tallennetaan sellaisenaan kuin lähetit sen, eikä tiedostoa koskaan kopioida, joten sen on pysyttävä julkisesti saatavilla niin kauan kuin aktiviteettia pelataan.
Luettavat asetukset
Kenttä
Tyyppi
Mitä se tekee
image
pakollinenasetuksissa
string
string
Sekoitettavan kuvan absoluuttinen URL-osoite. Toisin kuin palapelissä, tämä sijaitsee settings-kentän sisällä.