JSON-API

Steuern Sie CreationDePerso per Skript oder KI-Assistent: Katalog lesen, Monster, Gegenstände, Kampagnen, Quests und Charaktere anlegen — nach genau denselben Regeln wie die Website.

Authentifizierung

Erzeugen Sie einen persönlichen Schlüssel unter Mein Bereich → API-Schlüssel und senden Sie ihn im Authorization-Header jedes Aufrufs:

curl -H "Authorization: Bearer cpk_…" https://www.creationdeperso.com/api/v1/me

Der Schlüssel trägt die Rechte Ihres Kontos: Ein Spieler liest den Katalog und verwaltet seine Charaktere, ein Spielleiter schmiedet zusätzlich Monster und Gegenstände und schreibt Kampagnen und Quests.

Rechte eines Schlüssels

Jeder Schlüssel trägt eine bei der Erstellung gewählte (und später änderbare) Liste von Rechten: Einträge <code>family.action</code> oder eine ganze Familie <code>family.*</code>. Ein Recht übersteigt nie die Rollen des Kontos: Ein Schlüssel mit <code>monsters.create</code> auf einem Konto ohne SL-Rolle wird weiterhin abgelehnt. <code>GET /me</code> gibt die Rechte des Schlüssels zurück.

FamilieEinträge
Katalogcatalog.read
Charakterecharacters.read · characters.create · characters.delete
Geschmiedete Gegenständeitems.read · items.create · items.update · items.delete · items.publish
Monstermonsters.read · monsters.create · monsters.update · monsters.delete · monsters.publish
Kampagnencampaigns.read · campaigns.create · campaigns.update · campaigns.delete · campaigns.publish
Questsquests.read · quests.create · quests.update · quests.delete · quests.publish · quests.activate

Ein Aufruf außerhalb der Rechte des Schlüssels antwortet mit <code>403 insufficient_scope</code> und dem fehlenden Recht in <code>requiredScope</code>.

Konventionen

  • Katalogeinträge werden über ihren Slug (<code>key</code>) angesprochen, nie über eine numerische ID. Nur Charaktere, Kampagnen und Quests sowie die von Ihnen erstellten Ressourcen tragen eine <code>id</code>.
  • Eine Liste ist in <code>{ items, total }</code> eingebettet (paginiert: <code>{ items, page, perPage, total }</code>, <code>perPage</code> ≤ 100).
  • Der Header <code>Accept-Language</code> (Standard fr, en, de, es) bestimmt die Sprache der Katalognamen und Fehlermeldungen.
  • Jedes Konto hat 1.000 Aufrufe pro Stunde (Header <code>X-RateLimit-*</code>).

Jeder Fehler antwortet mit einer einheitlichen Hülle:

{
  "error": {
    "code": "validation_failed",
    "message": "…",
    "violations": [ { "path": "hitPoints", "message": "…" } ]
  }
}
CodeBedeutung
401 unauthenticatedSchlüssel fehlt, unbekannt, widerrufen oder abgelaufen.
403 forbiddenDem Konto fehlt die nötige Rolle (z. B. Spielleiter für die Schmiede).
403 insufficient_scopeDer Schlüssel ist gültig, hat aber dieses Recht nicht (siehe „Rechte eines Schlüssels“).
404 not_foundUnbekannte Ressource oder nicht Ihre.
409 conflict / insufficient_creditsDer Zustand der Ressource verweigert die Aktion (Übergang nicht möglich, Gegenstand in Gebrauch, zu wenig Schmiede-Guthaben).
422 validation_failedUngültige Nutzlast: <code>violations</code> nennt jedes fehlerhafte Feld.
429 rate_limitedStundenkontingent überschritten: nach <code>Retry-After</code> erneut versuchen.
500 internalInterner Fehler: geben Sie die requestId der Antwort an, damit der Vorfall im Protokoll gefunden werden kann.

Maximale Längen und Grenzen jedes Feldes (maxLength, minimum, maximum) stehen im OpenAPI-Schema: es sind die Regeln der Website, eine Überschreitung antwortet mit 422. Ein per GET gelesener Körper kann unverändert per PUT zurückgesendet werden, schreibgeschützte Felder eingeschlossen.

Katalog lesen

Lesen Sie zuerst den Katalog, um die zu sendenden Slugs zu kennen. Homebrew-Tabellen (Waffen, Rüstungen, Ausrüstung, Angriffe, Monster) sind auf das beschränkt, was Ihr Konto sehen darf: integrierte Inhalte, freigegebene öffentliche Inhalte und Ihre eigenen Kreationen (Feld <code>origin</code>).

EndpunktWirkung
GET /api/v1/meDas Konto hinter dem Schlüssel, seine Rollen und sein Guthaben.
GET /api/v1/catalog/speciesSpezies und Abstammungen (<code>requiresLineage</code> sagt, ob eine Abstammung Pflicht ist).
GET /api/v1/catalog/classesKlassen, Unterklassen und Stufe-1-Budgets (Fertigkeiten, Expertise, Gold, Zauber, Ausrüstungspaket).
GET /api/v1/catalog/backgroundsHintergründe 2024: gewährte Fertigkeiten, +2/+1-Bonusoptionen, Herkunftstalent.
GET /api/v1/catalog/skills, …/featsFertigkeiten und Talente.
GET /api/v1/catalog/spells?class=&level=Zauber, filterbar nach Klasse und Grad (0 = Zaubertricks).
GET /api/v1/catalog/weapons, …/armors, …/equipment, …/specific-attacksWaffen, Rüstungen, Ausrüstung und spezifische Angriffe, die Ihr Konto sehen darf.
GET /api/v1/catalog/monstersBestiarium als Vorlage oder Quest-Gegner nutzbar.
GET /api/v1/catalog/worlds, …/places, …/badgesWelten, Orte (Hierarchie über <code>parent</code>) und Belohnungsabzeichen.
GET /api/v1/catalog/rulesGeschlossene Vokabulare (Attribute, Größen, Schadensarten, Eigenschaften, zulässige HG, Gesinnungen) und Regeltabellen.

Schmiede: Gegenstände und Monster (SL)

Dieselben Regeln wie die Schmiede der Website: Jede Erstellung kostet Guthaben (bei zu geringem Guthaben wird nichts geschrieben), Inhalte entstehen privat und durchlaufen die Moderation, bevor sie öffentlich werden, der Herausforderungsgrad eines Monsters darf nicht unter der Schätzung seiner Werte liegen. Änderungen und Löschungen sind kostenlos.

EndpunktWirkung
POST /api/v1/items/{type}Waffe, Rüstung, Ausrüstung oder spezifischen Angriff schmieden (<code>type</code>: <code>weapons</code>, <code>armors</code>, <code>equipment</code>, <code>specific-attacks</code>).
GET / PUT / DELETE /api/v1/items/{type}/{id}Einen meiner Gegenstände lesen, ersetzen oder löschen (409, wenn ein Inventar oder ein Monster ihn benutzt).
POST /api/v1/monstersEin Monster schmieden: vollständiger Wertblock, Fertigkeiten (<code>{key: 1|2}</code>), Angriffe per Waffen- oder Angriffs-Slug.
POST /api/v1/monsters/estimateKosten und geschätzter HG eines Wertblocks, ohne etwas anzulegen.
GET / PUT / DELETE /api/v1/monsters/{id}Ein Monster lesen (meine, integrierte oder öffentliche), ersetzen oder löschen.
POST …/{id}/request-publicationVeröffentlichung beantragen (privat → wartet auf Freigabe).
curl -X POST -H "Authorization: Bearer cpk_…" -H "Content-Type: application/json" \
     -d '{"name":"Gobelin des cendres","challengeRating":"1/4","armorClass":15,"hitPoints":7,
          "abilities":{"str":8,"dex":14,"con":10,"int":10,"wis":8,"cha":8},
          "skills":{"stealth":2},"attacks":[{"weapon":"scimitar"}]}' \
     https://www.creationdeperso.com/api/v1/monsters

Kampagnen und Quests (SL)

Der Spielleiter ist immer das aufrufende Konto. Charaktere werden per <code>id</code> angesprochen: Ein Gruppenmitglied muss öffentlich und beansprucht sein, ein gebundener NSC einer Ihrer Bögen, ein Gast öffentlich, beansprucht und außerhalb der Gruppe. Eine bearbeitete öffentliche Kampagne oder Quest wartet wieder auf Freigabe.

EndpunktWirkung
GET / POST /api/v1/campaignsMeine Kampagnen auflisten, eine anlegen (optionaler <code>world</code>-Slug, <code>party</code>-IDs).
GET / PUT / DELETE /api/v1/campaigns/{id}Eine Kampagne lesen, ersetzen oder löschen (409, wenn andere Tische sie übernommen haben).
GET /api/v1/campaigns/{id}/questsDie Quests einer Kampagne in Spielreihenfolge.
POST /api/v1/questsEine Quest anlegen: <code>campaignId</code>, Ort und Abzeichen per Slug, NSC, Monster (Slug + Anzahl), Gäste.
GET / PUT / DELETE /api/v1/quests/{id}Eine Quest lesen, ersetzen oder löschen (409, wenn andere Tische sie gespielt haben).
POST /api/v1/quests/{id}/activateDie Quest an einem Tisch aktivieren: friert eine Version ein und eröffnet (oder setzt fort) den Durchlauf.
POST …/{id}/request-publicationVeröffentlichung beantragen (privat → wartet auf Freigabe).

Charaktere

Die Erstellung folgt genau den Regeln des Formulars der Website: die sechs Werte müssen eine Permutation des vom Server erzeugten Wurfs sein (über den Wurf-Endpunkt bezogen und als Ticket <code>abilityRollToken</code> zurückgegeben, fünf Minuten gültig und nur einmal verwendbar), eine Abstammung ist Pflicht, wenn die Spezies welche hat, die Hintergrund-Verteilung muss zulässig sein, und Fertigkeiten, Talente, Zauber und Ausrüstung bleiben in den Budgets der Stufe 1. Ein Regelverstoß antwortet mit 422 und dem Pfad des betroffenen Feldes.

EndpunktWirkung
POST /api/v1/characters/roll-abilitiesEinen vom Server erzeugten Attributswurf abrufen: ein Ticket, den Seed und sechs Werte zum Verteilen. Zwei Würfe pro Erstellung, ein weiterer solange der letzte hoffnungslos ist; sonst kommt derselbe Wurf mit neuem Ticket zurück, fünf Minuten gültig.
POST /api/v1/charactersEinen Stufe-1-Charakter anlegen (Spezies, Abstammung, Klasse, Hintergrund, Werte, Fertigkeiten, Talente, Ausrüstung, Zauber…).
GET /api/v1/characters, …?scope=publicMeine Charaktere oder die öffentliche Galerie.
GET / DELETE /api/v1/characters/{id}Einen sichtbaren Bogen lesen (mit abgeleitetem Blatt: RK, TP, Würfe, Angriffe, Zauberbuch); einen meiner löschen.

Das vollständige maschinenlesbare Dokument wird als OpenAPI bereitgestellt.

Darstellung & Barrierefreiheit

Passen Sie die Darstellung Ihrem Komfort an. Ihre Auswahl wird auf diesem Gerät gespeichert.

Design
Kontrast
Textgröße
Schriftart
Animationen
Besuchermessung