Server-API
Diese Referenz dokumentiert die Server-API von RESTCaptcha.
Allgemein
Die vollständige URL der API-Aufruffe ergibt sich aus der konfigurierten Domäne Deines Servers, auf dem RESTCaptcha installiert ist.
In dieser Dokumentation gehen wir beispielhaft von folgender Domäne aus:
captcha.beispiel.de
API-Fehler werden als RFC 9457 Problem Details zurückgegeben.
CAPTCHA-API
Challenge anfordern
Fordert eine neue Challenge an.
Request
GET https://captcha.beispiel.de/v1/challenge?siteKey={Mein-Site-Schlüssel}
Die Query-Parameter bedeuten:
siteKey(string, required)-
Öffentlicher Site-Schlüssel
Responses
200 OK(application/json)-
Liefert ein JSON-Objekt mit Informationen zur Challenge zurück.
Beispiel:
{ "challengeType": { "type": "proofOfWork", "algorithm": "hash-sha-256", "difficulty": 4 }, "token": "2c8f4b2d-7ab6-4f3a-9c2a-2e6b3a1c9e8f" }Die Eigenschaften bedeuten:
challengeType.type:-
Challenge-Typ, im Moment immer
proofOfWork challengeType.algorithm:-
Der zu nutzende Hash-Algorithmus:
Wert Beschreibung hash-sha-256SHA 256-basierter Hash-Algorithmus hash-sha-384SHA 384-basierter Hash-Algorithmus hash-sha-512SHA 512-basierter Hash-Algorithmus challengeType.difficulty:-
Schwierigkeitsgrad der Challenge
token-
Eine eindeutige, zufällige Zeichenfolge (Nonce).
Mögliche Fehler (application/problem+json)
400 Bad Request404 Not Found500 Internal Server Error
Beispiel
curl -sS "https://captcha.beispiel.de/v1/challenge?siteKey=<Mein-Site-Schlüssel>" \
-H "Accept: application/json"
Lösung validieren
Validiert die vom Client übermittelte Lösung zu einer Challenge.
Request
POST https://captcha.beispiel.de/v1/verify?siteKey={Mein-Site-Schlüssel}
Die Query-Parameter bedeuten:
siteKey(string, required)-
Öffentlicher Site-Schlüssel
Der Request-Body (application/json)
Beispiel:
{
"callerIp": "203.0.113.42",
"siteSecret": "<Mein-Site-Secret>",
"solution": "<Meine-Challenge-Lösung>",
"token": "<Mein-Challenge-Token>"
}
Die Eigenschaften bedeuten:
siteSecret(string, required)-
Geheimer Schlüssel der Website
solution(string, required)-
Gelöste Antwort des Clients
token(string, required)-
Token (Nonce) aus
/v1/challenge callerIp(string, optional)-
IP des Anfragenden (falls relevant)
Responses
200 OK(application/json)-
Liefert ein JSON-Objekt mit Statusinformationen zur Verifikation zurück.
Beispiel:
{ "hostName": "www.beispiel.de", "status": "success" }Die Eigenschaften bedeuten:
hostName:-
Hostname
status-
Das Ergebnis der Verifikation:
Wert Bedeutung successAlles OK invalid-tokenDer Token ist ungültig invalid-solutionDie Lösung ist ungültig
Mögliche Fehler (application/problem+json)
400 Bad Request401 Unauthorized404 Not Found500 Internal Server Error
Beispiel
curl -sS "https://captcha.beispiel.de/v1/verify?siteKey=<Mein-Site-Schlüssel>" \
-H "Content-Type: application/json" \
-d '{
"callerIp": "203.0.113.42",
"siteSecret": "<Mein-Site-Secret>",
"solution": "<Meine-Challenge-Lösung>",
"token": "<Mein-Challenge-Token>"
}'
Challenge zurücksetzen
Macht ein bestehendes Token ungültig, damit eine Challenge neu gestartet werden kann.
Request
POST https://captcha.beispiel.de/v1/reset?siteKey={Mein-Site-Schlüssel}
Die Query-Parameter bedeuten:
siteKey(string, required)-
Öffentlicher Site-Schlüssel
Der Request-Body (application/json)
Beispiel:
{
"token": "<ChallengeToken>"
}
Die Eigenschaften bedeuten:
token(string, required)-
Token (Nonce) aus
/v1/challenge
Responses
200 OK(application/json)-
Kein Reponse-Body.
Mögliche Fehler (application/problem+json)
400 Bad Request404 Not Found500 Internal Server Error
Beispiel
curl -sS "https://captcha.beispiel.de/v1/reset?siteKey=<Mein-Site-Schlüssel>" \
-H "Content-Type: application/json" \
-d '{ "token": "<Mein-Challenge-Token>" }'
Health-API
Die Health-API liefert Informationen über den Zustand des RESTCaptcha-Server.
Request
GET /health
Die Health-API kann optional über einen API-Schlüssel abgesichert werden. Der API-Schlüssel kann entweder als X-API-KEY-Header oder als Authorization-Header übergeben werden.
X-API-KEY-
Dein API-Schlüssel als
X-API-KEY-Header.Beispiel:
X-API-KEY: <Mein-API-Schlüssel> Authorization-
Dein API-Schlüssel als
Authorization-Header.Beispiel:
Authorization: ApiKey <Mein-API-Schlüssel>
Responses
200 OK(application/json)-
Liefert ein JSON-Objekt mit Statusinformationen zurück.
Beispiel:
{ "hostName": "example.com", "status": "success" }
Beispiel
curl -sS https://captcha.beispiel.de/health \
-H "X-API-KEY: <Mein-API-Schlüssel>" \
-H "Accept: application/json"