Datos abiertos

Este sitio publica algunos datos de la normativa en ficheros abiertos, para que otras aplicaciones puedan leerlos en vez de copiarlos a mano cada año.

Cómo funciona

  • Son ficheros, no un servicio No hay servidor, ni claves, ni límites de uso: son ficheros JSON servidos por GitHub Pages. Se piden con una petición normal y no hay nada que solicitar ni registrar para usarlos.
  • Se pueden leer desde cualquier sitio Se sirven con la cabecera que permite el acceso desde otros dominios, así que funcionan también desde una página abierta directamente desde el disco, sin necesidad de montar un servidor local.
  • Empieza siempre por el manifest Cada conjunto tiene un fichero manifest.json con la lista de cursos publicados. Lee esa lista y pide después el fichero del curso que te interese. Así no tienes que adivinar cómo se llamará el fichero del año que viene.
  • El esquema va versionado Cada fichero lleva un campo schema, que lo identifica, y un campo version. El número solo sube cuando hay un cambio que puede romper a quien ya lo estaba leyendo; añadir campos nuevos no lo toca. Comprueba schema y version antes de fiarte del contenido.
  • Todo sale de una norma publicada Los datos no se teclean: se extraen del texto de las normas que ya están en este sitio, y cada conjunto enlaza las suyas. Si detectamos una incoherencia entre normas al generarlos, se detiene la publicación en lugar de publicar un dato dudoso.

Ejemplo de uso

const BASE = 'https://jlmirallesb.github.io/legis_cpmdem/data/sorteo/';

// 1. El manifest dice qué cursos hay publicados.
const manifest = await fetch(BASE + 'manifest.json').then(r => r.json());

// 2. Elige el curso y pide su fichero.
// No construyas a mano la URL del curso que viene: léela del manifest.
const curso = manifest.courses.at(-1);
const datos = await fetch(BASE + curso + '.json').then(r => r.json());

console.log(datos.letters1, datos.letters2);  // "Q-O" "N-W"

Calendario escolar

cev-calendario-escolar · v1 Fechas de inicio y fin de curso por enseñanza, periodos de vacaciones, festivos autonómicos y festivos locales de los 547 municipios de la Comunitat Valenciana. Transcrito de la resolución anual de calendario escolar, del decreto de calendario laboral y de la resolución de fiestas locales.

Ficheros

Campos del manifest

Campo Tipo Descripción
courses string[] Cursos publicados, en formato «2026-2027». Cada uno tiene su fichero.
ensenyances object[] Catálogo de enseñanzas: code (identificador estable) y name. El código de conservatorio es musica_dansa.
municipios object[] Catálogo de municipios: code (slug estable) y name (forma oficial DOGV, en valenciano).

Además, todos los ficheros llevan schema, version, updated (fecha de la última regeneración) y source.

Campos del fichero de curso

Campo Tipo Descripción
courseStart / courseEnd string (YYYY-MM-DD) Primer y último día lectivo con carácter general.
ensenyanceOverrides object Enseñanzas con fechas propias, indexadas por el code del manifest. Los conservatorios están en musica_dansa.
vacations object[] Periodos de vacaciones con title, start y end. Los dos extremos son INCLUSIVOS: end es el último día no lectivo, y la reincorporación es el día siguiente.
autonomicHolidays object[] Festivos autonómicos y nacionales que caen en día lectivo. Los que caen dentro de un periodo de vacaciones no se repiten aquí.
localHolidays object Festivos locales indexados por el code del municipio. Solo incluye los que caen dentro del curso.
nonLectiveDays object[] Siempre vacío desde aquí: los días de libre disposición los fija cada consejo escolar municipal y no se publican en el DOGV.

Muestra

{
  "schema": "cev-calendario-escolar",
  "version": 1,
  "course": "2026-2027",
  "courseStart": "2026-09-09",
  "courseEnd": "2027-06-18",
  "ensenyanceOverrides": {
    "musica_dansa": { "courseStart": "2026-09-14", "courseEnd": "2027-06-11" }
  },
  "vacations": [
    { "title": "Nadal", "start": "2026-12-22", "end": "2027-01-06" }
  ],
  "autonomicHolidays": [
    { "title": "9 d'Octubre — Dia de la Comunitat Valenciana", "date": "2026-10-09" }
  ],
  "nonLectiveDays": [],
  "localHolidays": {
    "vila-real": [ { "title": "Sant Pasqual", "date": "2027-05-17" } ]
  }
}

Cuándo se actualiza

Se regenera cuando se ingesta un calendario escolar nuevo, un decreto de calendario laboral o una resolución de fiestas locales. Las fiestas locales de un curso llegan en dos tandas, porque se publican por año natural: las de otoño con la resolución de un año y las de primavera con la del siguiente.

Normas de origen

Los datos se transcriben de estas normas, que puedes consultar aquí mismo:

A tener en cuenta

  • El code de municipio es un identificador estable: no se renombra nunca. Si guardas la selección de un usuario, guarda el code, no el name.
  • Los nombres de municipio y de festivo van en valenciano, en la forma oficial del DOGV.

Sorteo de admisión

cev-sorteo-admision · v1 Las dos parejas de letras del sorteo público que celebra cada año la Conselleria, con las que se deshacen los empates en los procesos de admisión de alumnado. Se extraen del texto de la resolución que las publica, no se teclean.

Ficheros

Campos del manifest

Campo Tipo Descripción
courses string[] Cursos publicados, en formato «2026-2027». Cada uno tiene su fichero.

Además, todos los ficheros llevan schema, version, updated (fecha de la última regeneración) y source.

Campos del fichero de curso

Campo Tipo Descripción
letters1 string Letras con las que se ordena el primer apellido, en el formato literal de la norma: «Q-O». El orden importa.
letters2 string Letras con las que se ordena el segundo apellido. Solo se aplican cuando coincide el primero.
norm object Resolución de la que salen las letras: título corto, fecha, número de DOGV y enlaces a la ficha oficial, al PDF y a la norma en este sitio.
appliedBy object[] Normas de Música y Danza que aplican ese sorteo a los conservatorios, con el artículo o apartado concreto. Mismos campos que norm.
procedure object Cómo se aplican las letras. Lleva la cita literal del artículo que fija el procedimiento (text, textVa), un aviso en lenguaje llano (note, noteVa) y de dónde sale la cita. Léelo antes de programar la ordenación.
scopeNote string Explicación, en castellano, de por qué el sorteo general se aplica a las enseñanzas artísticas. Hay también scopeNoteVa en valenciano.

Muestra

{
  "schema": "cev-sorteo-admision",
  "version": 1,
  "course": "2026-2027",
  "letters1": "Q-O",
  "letters2": "N-W",
  "norm": {
    "lawId": "resolucion-sorteo-admision-2026-2027",
    "shortTitle": "Res 21/04/2026 - Sorteo admisión 2026-2027",
    "date": "2026-04-21",
    "dogv": "10348",
    "url": "https://jlmirallesb.github.io/legis_cpmdem/es/ley/resolucion-sorteo-admision-2026-2027/"
  },
  "appliedBy": [ { "lawId": "orden-8-2026", "articles": ["art-19"] } ],
  "procedure": {
    "text": "...se elegirán dos letras por las cuales se ordenará el primer apellido...",
    "note": "El sorteo asigna DOS letras a cada apellido, y las dos ordenan ese apellido...",
    "sourceLawId": "orden-8-2024",
    "sourceArticle": "art-40",
    "sourceIngested": false
  },
  "scopeNote": "..."
}

Cuándo se actualiza

Se regenera cada primavera, cuando la Conselleria publica el resultado del sorteo del curso siguiente. El curso nuevo aparece en courses del manifest; los cursos ya publicados no se tocan.

Normas de origen

Los datos se transcriben de estas normas, que puedes consultar aquí mismo:

A tener en cuenta

  • La resolución del sorteo solo nombra Infantil, Primaria, ESO, Bachillerato y Educación Especial. No existe un sorteo propio de las enseñanzas artísticas: los conservatorios aplican ese mismo sorteo por el artículo 19.2.4.º de la Orden 8/2026 y por el apartado noveno de la convocatoria anual de admisión, que reproduce las mismas letras.
  • Al generar el dataset se comprueba que las letras de la resolución del sorteo y las que reproduce la convocatoria de Música y Danza coinciden. Si no coincidieran, no se publica nada.
  • El orden dentro del par importa y no es alfabético: en «Q-O» se ordena empezando por la Q y, a igualdad, por la O. Y son las dos letras las que ordenan el apellido, no solo la primera. Consulta procedure antes de programar la ordenación: ahí está la cita literal de la norma que lo fija.
  • La Orden 8/2024, que fija el procedimiento, no está ingestada en este sitio: la cita de procedure procede del preámbulo de la resolución del sorteo, que la reproduce. Por eso procedure.sourceIngested es false y no hay enlace a la norma.

Estabilidad y uso

  • Qué se puede dar por estable Las direcciones de los ficheros, los nombres de los campos y los identificadores (códigos de municipio, de enseñanza y de norma) no cambian. Si alguna vez hubiera que cambiarlos, subiría el número de version.
  • Si encuentras un error Estos datos se transcriben de la normativa, pero la fuente con valor oficial es siempre el DOGV. Si ves una fecha o un dato que no cuadra con el diario oficial, avisa: se corrige aquí y se vuelve a publicar.
  • Cachés Los ficheros se sirven con caché, así que un cambio puede tardar unos minutos en verse. No hace falta pedirlos continuamente: con consultarlos al arrancar la aplicación, o una vez al día, es suficiente.
  • Se pueden reutilizar Puedes usarlos en tus aplicaciones libremente. Se agradece que indiques de dónde salen y que enlaces la norma correspondiente, para que quien los consulte pueda comprobarlos.