API JSON

Controle CreationDePerso desde un script o un asistente de IA: lectura del catálogo, creación de monstruos, objetos, campañas, misiones y personajes, con exactamente las mismas reglas que el sitio.

Autenticación

Genere una clave personal desde Mi espacio → Claves API y envíela en la cabecera Authorization de cada llamada:

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

La clave lleva los derechos de su cuenta: un jugador lee el catálogo y gestiona sus personajes, un DJ además forja monstruos y objetos y redacta campañas y misiones.

Derechos de una clave

Cada clave lleva una lista de derechos elegida al crearla (y modificable después): entradas <code>familia.acción</code>, o una familia entera <code>familia.*</code>. Un derecho nunca supera los roles de la cuenta: una clave con <code>monsters.create</code> en una cuenta sin rol de DJ sigue rechazada. <code>GET /me</code> devuelve los derechos de la clave.

FamiliaEntradas
Catálogocatalog.read
Personajescharacters.read · characters.create · characters.delete
Objetos forjadositems.read · items.create · items.update · items.delete · items.publish
Monstruosmonsters.read · monsters.create · monsters.update · monsters.delete · monsters.publish
Campañascampaigns.read · campaigns.create · campaigns.update · campaigns.delete · campaigns.publish
Misionesquests.read · quests.create · quests.update · quests.delete · quests.publish · quests.activate

Una llamada fuera de los derechos de la clave responde <code>403 insufficient_scope</code> con el derecho que falta en <code>requiredScope</code>.

Convenciones

  • Los elementos del catálogo se designan por su slug (<code>key</code>), nunca por un id numérico. Solo los personajes, campañas y misiones, y los recursos que usted crea, llevan un <code>id</code>.
  • Una lista se envuelve en <code>{ items, total }</code> (paginada: <code>{ items, page, perPage, total }</code>, <code>perPage</code> ≤ 100).
  • La cabecera <code>Accept-Language</code> (fr por defecto, en, de, es) elige el idioma de los nombres del catálogo y de los mensajes de error.
  • Cada cuenta dispone de 1 000 llamadas por hora (cabeceras <code>X-RateLimit-*</code>).

Todo error responde con una envoltura única:

{
  "error": {
    "code": "validation_failed",
    "message": "…",
    "violations": [ { "path": "hitPoints", "message": "…" } ]
  }
}
CódigoSignificado
401 unauthenticatedClave ausente, desconocida, revocada o expirada.
403 forbiddenLa cuenta no tiene el rol requerido (por ejemplo DJ para la forja).
403 insufficient_scopeLa clave es válida pero no tiene este derecho (véase «Derechos de una clave»).
404 not_foundRecurso desconocido, o que no le pertenece.
409 conflict / insufficient_creditsEl estado del recurso rechaza la acción (transición imposible, objeto en uso, créditos de forja insuficientes).
422 validation_failedCarga útil inválida: <code>violations</code> detalla cada campo erróneo.
429 rate_limitedCuota horaria superada: reintentar tras <code>Retry-After</code>.
500 internalError interno: cite el requestId de la respuesta para que el incidente pueda encontrarse en el registro.

Las longitudes máximas y los límites de cada campo (maxLength, minimum, maximum) están declarados en el esquema OpenAPI: son las reglas del sitio, superarlos responde 422. Un cuerpo leído con GET puede reenviarse tal cual con PUT, campos de solo lectura incluidos.

Lectura del catálogo

Empiece leyendo el catálogo para conocer los slugs que debe enviar. Las tablas «homebrew» (armas, armaduras, equipo, ataques, monstruos) se limitan a lo que su cuenta puede ver: contenido integrado, contenido público validado y sus propias creaciones (campo <code>origin</code>).

Punto de accesoEfecto
GET /api/v1/meLa cuenta tras la clave, sus roles y su saldo de créditos.
GET /api/v1/catalog/speciesEspecies y linajes (<code>requiresLineage</code> indica si un linaje es obligatorio).
GET /api/v1/catalog/classesClases, subclases y presupuestos de nivel 1 (habilidades, pericia, oro, conjuros, paquete).
GET /api/v1/catalog/backgroundsTrasfondos 2024: habilidades otorgadas, opciones de bonificación +2/+1, dote de origen.
GET /api/v1/catalog/skills, …/featsHabilidades y dotes.
GET /api/v1/catalog/spells?class=&level=Conjuros, filtrables por clase y nivel (0 = trucos).
GET /api/v1/catalog/weapons, …/armors, …/equipment, …/specific-attacksArmas, armaduras, equipo y ataques específicos visibles para su cuenta.
GET /api/v1/catalog/monstersBestiario utilizable como plantilla u oponente de misión.
GET /api/v1/catalog/worlds, …/places, …/badgesMundos, lugares (jerarquía vía <code>parent</code>) e insignias de recompensa.
GET /api/v1/catalog/rulesVocabularios cerrados (características, tamaños, tipos de daño, propiedades, VD legales, alineamientos) y tablas de reglas.

Forja: objetos y monstruos (DJ)

Las mismas reglas que la forja del sitio: cada creación descuenta su coste en créditos (no se escribe nada si el saldo es insuficiente), el contenido nace privado y pasa por moderación para hacerse público, el valor de desafío de un monstruo no puede quedar por debajo de la estimación de sus estadísticas. Las modificaciones y eliminaciones son gratuitas.

Punto de accesoEfecto
POST /api/v1/items/{type}Forjar un arma, una armadura, un equipo o un ataque específico (<code>type</code>: <code>weapons</code>, <code>armors</code>, <code>equipment</code>, <code>specific-attacks</code>).
GET / PUT / DELETE /api/v1/items/{type}/{id}Leer, reemplazar o eliminar uno de mis objetos (409 si un inventario o un monstruo lo usa).
POST /api/v1/monstersForjar un monstruo: bloque de estadísticas completo, habilidades (<code>{clave: 1|2}</code>), ataques por slug de arma o de ataque específico.
POST /api/v1/monsters/estimateCoste y VD estimado de un bloque, sin crear nada.
GET / PUT / DELETE /api/v1/monsters/{id}Leer (los míos, integrados o públicos), reemplazar o eliminar un monstruo.
POST …/{id}/request-publicationSolicitar la publicación (privado → pendiente de validación).
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

Campañas y misiones (DJ)

El DJ es siempre la cuenta que llama. Los personajes se designan por <code>id</code>: un miembro del grupo debe ser público y reclamado, un PNJ vinculado debe ser una de sus fichas, un invitado debe ser público, reclamado y fuera del grupo. Una campaña o misión pública retocada vuelve a quedar pendiente de validación.

Punto de accesoEfecto
GET / POST /api/v1/campaignsListar mis campañas, crear una (<code>world</code> slug opcional, <code>party</code> ids).
GET / PUT / DELETE /api/v1/campaigns/{id}Leer, reemplazar o eliminar una campaña (409 si otras mesas la han adoptado).
GET /api/v1/campaigns/{id}/questsLas misiones de una campaña en orden de juego.
POST /api/v1/questsCrear una misión: <code>campaignId</code>, lugar e insignia por slug, PNJ, monstruos (slug + cantidad), invitados.
GET / PUT / DELETE /api/v1/quests/{id}Leer, reemplazar o eliminar una misión (409 si otras mesas la han jugado).
POST /api/v1/quests/{id}/activateActivar la misión en una mesa: fija una versión y abre (o retoma) la partida.
POST …/{id}/request-publicationSolicitar la publicación (privado → pendiente de validación).

Personajes

La creación sigue exactamente las reglas del formulario del sitio: las seis puntuaciones deben ser una permutación de la tirada emitida por el servidor (obtenida en el endpoint de tirada y devuelta como el ticket <code>abilityRollToken</code>, válido cinco minutos y consumido una sola vez), el linaje es obligatorio cuando la especie tiene, el reparto del trasfondo debe ser legal, y las habilidades, dotes, conjuros y equipo se mantienen dentro de los presupuestos de nivel 1. Una regla incumplida responde 422 con la ruta del campo afectado.

Punto de accesoEfecto
POST /api/v1/characters/roll-abilitiesObtener una tirada de características emitida por el servidor: un ticket, la semilla y seis puntuaciones a repartir. Dos tiradas por creación, una más mientras la última sea sin esperanza; si no, vuelve la misma tirada con un ticket nuevo, válido cinco minutos.
POST /api/v1/charactersCrear un personaje de nivel 1 (especie, linaje, clase, trasfondo, puntuaciones, habilidades, dotes, equipo, conjuros…).
GET /api/v1/characters, …?scope=publicMis personajes, o la galería pública.
GET / DELETE /api/v1/characters/{id}Leer una ficha visible (con la hoja derivada: CA, PG, tiradas, ataques, grimorio); eliminar una de las mías.

El documento completo legible por máquina se sirve en OpenAPI.

Visualización y accesibilidad

Adapta la visualización a tu comodidad. Tus elecciones se recuerdan en este dispositivo.

Tema
Contraste
Tamaño del texto
Tipografía
Animaciones
Medición de audiencia