Her etkinlik türü için tek bir POST. İçeriğini JSON olarak gönder; karşılığında Puzzel.org hesabında bir etkinlik ve oyunculara verebileceğin ya da bir iframe'e yerleştirebileceğin bir URL al.
Temel URL
https://puzzel.org/api/public/v1
Kimlik doğrulama
Gövdede anahtar + e-posta
Uç noktalar
20 etkinlik türü
Kota
Günde 10 etkinlik
İlk isteğin
Kurulacak bir şey yok, el sıkışma da yok: anahtarını, e-posta adresini ve içeriğini taşıyan bir JSON gövdesi gönder. Gelen cevapta yeni etkinliğin anahtarı ve oynandığı URL yer alır.
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": "tr",
"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"
}
]
}'
Bu sayfadaki her örnek eksiksiz ve çalıştırılabilir bir istektir. Kendi anahtarını ve içeriğini koy, olduğu gibi çalışır.
Kimlik doğrulama
Ne header var ne de bearer token. İki kimlik bilgisi de her isteğin JSON gövdesinde gider ve anahtar yalnızca o e-postanın ait olduğu hesap için geçerlidir.
Alan
Tür
Ne işe yarar
account_api_key
zorunlu
string
string
Hesabının API anahtarı. Header'a değil, gövdeye konur.
email
zorunlu
string
string
Puzzel.org hesabının giriş yaptığı adres. Anahtar yalnızca onunla birlikte geçerlidir.
Anahtarın, panelindeki hesap bölümünde, Göster düğmesinin arkasında duruyor.
Anahtara bir şifre gibi davran. Hesabında etkinlik oluşturur ve var olanların üzerine yazar; bu yüzden onu sunucu tarafında tut, tarayıcının okuyabileceği hiçbir yere koyma.
İstek gövdesi
Her uç nokta aynı beş alanı alır. Farklı olan, altlarındaki içerik alanı: çoğu bir items dizisi alır, birkaçı tek bir cümle ya da tek bir görsel alır, sudoku ise hiçbir şey almaz.
Alan
Tür
Ne işe yarar
account_api_key
zorunlu
string
string
Hesabının API anahtarı. Header'a değil, gövdeye konur.
email
zorunlu
string
string
Puzzel.org hesabının giriş yaptığı adres. Anahtar yalnızca onunla birlikte geçerlidir.
title
isteğe bağlı
string
string
Etkinliğin panelinde alacağı ad. Boş bırak, uç nokta kendi yedek adını kullanır.
language
isteğe bağlı
string
string
Yalnızca dönen URL'deki dili belirler — gönderdiğin hiçbir şeyi çevirmez. Kelime avı ayrıca bunu okur ve "ar" olduğunda dolgu harflerini Arapçaya geçirir.
Varsayılan: "en"
activity_key
isteğe bağlı
string
string
Yeni bir etkinlik oluşturmak için boş bırak. Zaten sahibi olduğun bir etkinliğin anahtarını gönderirsen, onun yerine o etkinlik yeniden oluşturulur.
settings, uç noktaya özel seçeneklerden oluşan bir nesnedir. Bir uç noktanın hangilerini okuduğu aşağıda onunla birlikte listelenir; oraya koyduğun başka her şey yok sayılır.
Ne geri döner
Başarılı bir çağrı, yeni etkinliğin anahtarı ve oynandığı URL ile 200 cevabı verir. Diğer her durumda success false olur ve tek bir error metni döner.
{
"success": false,
"error": "Invalid Email or API Key"
}
Dönen url, yerleştirme görünümüdür. Tam sayfa açmak için embed yerine play, düzenleyicide açmak için build yaz — p= sonrasındaki anahtar aynı kalır.
Oluşturma ve güncelleme
activity_key gönder, arkasındaki etkinlik yerinde yeniden oluşturulsun: içeriği değişir, adı ve sürüm damgası tazelenir, anahtarın kendisi ise aynı kalır — böylece daha önce paylaştığın bağlantılar ve yerleştirmeler çalışmaya devam eder. Sonuçlar, klasör yerleşimi ve uç noktanın kendisinin yazmadığı her ayar olduğu gibi kalır.
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 her güncellemede uygulanır, varsayılanı da dahil — boş bırakırsan etkinlik o uç noktanın yedek adıyla yeniden adlandırılır.
Bir uç noktanın kendi yazdığı ayar blokları sıfırdan yeniden yazılır; yani bir güncelleme bunları da gönderdiğin değerlere ya da uç noktanın varsayılanlarına döndürür.
Yalnızca kendi hesabının sahibi olduğu etkinlikleri güncelleyebilirsin. Başkasına ait bir anahtar 403 cevabı alır.
Bir güncelleme, oluşturmayla aynıya mal olur: bugünkü kotadan bir çağrı.
İstek sınırı
10
Hesap başına günde 10 etkinlik
Başarılı her çağrı sayılır; oluşturma da güncelleme de. Sınırı aşarsan sayaç sıfırlanana kadar sonraki istek 429 cevabı alır.
Sayaç, kayan 24 saatlik bir pencereye göre değil, zamanlanmış bir işle günde bir kez sıfırlanır.
Hatalar
Hatalar her zaman aynı iki alanla JSON olarak gelir, asla HTML sayfası olarak değil. error metni bir insanın okuması için yazılır — sorun çıkaran alanı ya da sınırı adıyla söyler.
Durum
Ne anlama gelir
400
Bad Request
Gövdedeki bir şey eksik, bozuk ya da aralık dışında. Mesaj, hangi alan olduğunu söyler.
401
Unauthorized
E-posta bilinmiyor ya da anahtar o hesaba ait değil.
403
Forbidden
Gönderdiğin activity_key başka bir hesaba ait.
429
Too Many Requests
Bugünkü kota doldu. Günde bir kez sıfırlanır.
500
Server Error
Oluşturucu, gönderdiklerinden bir bulmaca kuramadı — genellikle kelime sayısı çok az ya da kelimeler birbirine oturmuyor.
Uç noktalar
Her etkinlik türü için bir yol; hepsi POST, hepsi aynı temel URL altında. Her biri ihtiyaç duyduğu içeriği, okuduğu ayarları ve çalıştırabileceğin bir isteği listeler.
Kelimeler ve harfler
F
I
G
A
T
R
I
P
M
Kare bulmaca
Cevaplarını bir ızgarada birbirine geçirir ve tanımları senin için numaralandırır.
POST/api/public/v1/crossworditems içinde en az 2 öğe
İçerik
Bir kelime dizisi. Her kayıt, cevabı onu işaret eden tanımla eşleştirir.
Yedek ad olarak “Crossword API” kullanılır
Bilmekte fayda var
İki karakterden kısa cevaplar ızgara kurulmadan önce elenir ve bundan en az iki tanesinin sağ çıkması gerekir.
Cevaplar büyük harfe çevrilir ve oluşturucunun bunları yerleştirmek için yirmi denemesi olur. Tek bir kelimeyi bile yerleştiremezse çağrı 500 cevabı verir.
Örnek istek
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": "tr",
"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"
}
]
}'
POST/api/public/v1/typing-practiceitems içinde en az 1 öğe
İçerik
api_c_typing_practice
Yedek ad olarak “Typing Practice API” kullanılır
Örnek istek
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": "tr",
"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"
}
]
}'
Başarılı
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/typing-practice/embed?p=-Nq8sample_activity_key",
"message": "Typing Practice created successfully"
}
Bir çift dizisi. Her çift, birbirine ait iki kartı tutar.
Yedek ad olarak “Memory Game API” kullanılır
Bilmekte fayda var
Bir kart, type ve value içeren bir nesnedir. Kelimeler için "text", value içinde bir URL ile birlikte "image", "audio", "youtube" ya da "link" kullan; açıklama için alt ekle.
POST/api/public/v1/matching-pairsitems içinde en az 2 öğe
İçerik
api_c_matching_pairs
Yedek ad olarak “Matching Game API” kullanılır
Bilmekte fayda var
Bir kart, type ve value içeren bir nesnedir. Kelimeler için "text", value içinde bir URL ile birlikte "image", "audio", "youtube" ya da "link" kullan; açıklama için alt ekle.
POST/api/public/v1/flash-cardsitems içinde en az 1 öğe
İçerik
api_c_flash_cards
Yedek ad olarak “Flash Cards API” kullanılır
Bilmekte fayda var
Uç nokta gönderdiğin kadar kartı saklar; bu yüzden her kayıtta tam olarak iki tane gönder — önce ön yüz, sonra arka yüz.
Bir kart, type ve value içeren bir nesnedir. Kelimeler için "text", value içinde bir URL ile birlikte "image", "audio", "youtube" ya da "link" kullan; açıklama için alt ekle.
POST/api/public/v1/categorizeitems içinde en az 2 öğe
İçerik
Bir kategori dizisi; her birinde bir ad ve o kategoriye ait kartlar bulunur.
Yedek ad olarak “Categorize Game API” kullanılır
Bilmekte fayda var
Adsız gönderilen bir kategori “Untitled Category” olarak kaydedilir; bu yüzden her zaman bir ad gönder.
Bir kart, type ve value içeren bir nesnedir. Kelimeler için "text", value içinde bir URL ile birlikte "image", "audio", "youtube" ya da "link" kullan; açıklama için alt ekle.
POST/api/public/v1/reorderitems içinde en az 1 öğe
İçerik
Sıralamalardan oluşan bir dizi. Her biri kartlarını doğru sırada tutar.
Yedek ad olarak “Reorder Game API” kullanılır
Bilmekte fayda var
Gönderdiğin sıra doğru sıra olarak saklanır — önce bir numara.
Bir kart, type ve value içeren bir nesnedir. Kelimeler için "text", value içinde bir URL ile birlikte "image", "audio", "youtube" ya da "link" kullan; açıklama için alt ekle.
Bir soru dizisi. Çoktan seçmeli sorular cevaplarını taşır; açık uçlu sorular kabul ettiğin cevabı taşır.
Yedek ad olarak “Quiz API” kullanılır
Bilmekte fayda var
question_type ya "multiple_choice" olur — doğru seçenek isCorrect true taşır — ya da bunun yerine correct_answer kullanan "open_answer" olur. Boş bırakılırsa çoktan seçmeli sayılır.
Quiz uç noktası settings içeriğini doğrudan etkinlik ayar blokları olarak aktarır; yani orası dağınık seçenekler için uygun bir yer değil — quizi sonrasında düzenleyicide ayarla.
Örnek istek
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": "tr",
"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-gameitems içinde en az 1 öğe
İçerik
api_c_board_game
Yedek ad olarak “Board Game API” kullanılır
Bilmekte fayda var
question_type ya "multiple_choice" olur — doğru seçenek isCorrect true taşır — ya da bunun yerine correct_answer kullanan "open_answer" olur. Boş bırakılırsa çoktan seçmeli sayılır.
Okuduğu ayarlar
Alan
Tür
Ne işe yarar
number_of_tiles
isteğe bağlısettings içinde
number
number
Oyun tahtasında kaç kare olduğu. 10 ile 75 arasında.
Varsayılan: 30
game_mode
isteğe bağlısettings içinde
string
string
Oyuncuların bitişe mi yarıştığı, yoksa yol boyunca nesne mi topladığı.
Şunlardan birirace_to_finishcollect_items
Varsayılan: "race_to_finish"
Örnek istek
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": "tr",
"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"
}
}'
Başarılı
{
"success": true,
"id": "-Nq8sample_activity_key",
"url": "https://puzzel.org/en/board-game/embed?p=-Nq8sample_activity_key",
"message": "Board Game created successfully"
}
Hiçbir şey. Bulmacanın tamamı iki ayarından çıkar.
Yedek ad olarak “Sudoku API” kullanılır
Bilmekte fayda var
items ya da sentence gönderme — girdinin tamamı size ve difficulty.
Düzenleyici zorluğu yalnızca 2x3, 3x3 ve 3x4 için sunar. API bunu 2x2 ve 4x4 dahil her boyuta uygular.
Okuduğu ayarlar
Alan
Tür
Ne işe yarar
size
isteğe bağlısettings içinde
string
string
Bir bloğun boyutu, satır çarpı sütun olarak yazılır — 3x3 klasik 9x9 ızgarayı verir. Uç nokta yalnızca iki sayı olarak ayrıştırılıp ayrıştırılmadığına bakar; bu yüzden düzenleyicinin sunduğu boyutlarda kal.
image alanında tek bir görsel URL'si. Bu uç nokta items almaz.
Yedek ad olarak “Jigsaw Game API” kullanılır
Bilmekte fayda var
API her zaman 4'e 4 bir yapboz yapar. Parça sayısı, düzensiz parçalar ve düz kenarlar düzenleyici ayarlarıdır — burada rows ya da columns göndermek bir şey değiştirmez.
URL gönderdiğin hâliyle saklanır ve dosya hiçbir zaman kopyalanmaz; bu yüzden etkinlik oynandığı sürece herkese açık şekilde erişilebilir kalmalı.
Okuduğu ayarlar
Alan
Tür
Ne işe yarar
image
zorunlu
string
string
Parçalara ayrılacak görselin tam URL'si. settings içinde değil, en üst düzeyde gönderilir.