Skip to content

Projects — Contexto de proyecto

En Normatia el alcance normativo se define por proyecto: cada uno lleva su municipio, sus normativas aplicables, sus documentos, la memoria de datos de obra y los cálculos guardados. Estos dos endpoints son los que dan acceso a ese contexto.

EndpointMétodoDescripción
/api/v1/projectsGETProyectos a los que el usuario tiene acceso
/api/v1/project/infoGETContexto completo de un proyecto

Ninguno consume cuota: pertenecen al grupo data de rate limiting (60 req/min).

Authorization: Bearer sk-normatia-...

GET /api/v1/projects

Devuelve los proyectos del usuario, resueltos a través de su organización. Es la forma de obtener el project_id que se pasa a POST /api/v2/ask y a /api/v1/project/info.

CampoTipoDescripción
projectsarrayProyectos accesibles
totalintegerNúmero de proyectos
CampoTipoDescripción
project_idstringIdentificador del proyecto
namestringNombre del proyecto
descriptionstringDescripción, si la tiene
geo_idstringIdentificador geográfico
locationstringMunicipio o territorio
collection_countintegerNormativas seleccionadas
file_countintegerDocumentos subidos
is_activebooleanProyecto activo del usuario: el que se usa cuando no se pasa project_id
{
"projects": [
{
"project_id": "3f8c1a90-5b2e-4d77-9d21-0e5f4a6c8b13",
"name": "Rehabilitación Calle Mayor",
"description": "Rehabilitación integral de edificio residencial",
"geo_id": "ES-28079",
"location": "Madrid",
"collection_count": 12,
"file_count": 3,
"is_active": true
},
{
"project_id": "c41d7b02-9a3f-4e18-b6cd-2f70e1a95d44",
"name": "Nave industrial Zona Franca",
"geo_id": "ES-08019",
"location": "Barcelona",
"collection_count": 9,
"file_count": 0,
"is_active": false
}
],
"total": 2
}

GET /api/v1/project/info

Devuelve todo el contexto que el motor agéntico tiene inyectado cuando responde: ubicación y datos técnicos del territorio, normativa aplicable con su versión vigente, normativa aplicable que el proyecto no ha seleccionado, documentos subidos y generados, memoria de obra y cálculos guardados.

ParámetroTipoRequeridoDescripción
project_iduuidProyecto sobre el que informar. Si se omite, el proyecto activo del usuario
CampoTipoDescripción
project_idstringProyecto realmente resuelto
namestringNombre del proyecto
is_activebooleanSi es el proyecto activo del usuario en la web
project_descriptionstringDescripción del proyecto
geo_contextobjectUbicación y datos técnicos del territorio
collection_countintegerNormativas seleccionadas
file_countintegerDocumentos subidos
filesstring[]Nombres de los documentos subidos
collectionsarrayNormativa aplicable seleccionada
unselected_collectionsarrayNormativa aplicable al territorio no seleccionada en el proyecto
generated_documentsarrayDocumentos generados por el asistente (última versión de cada uno)
memoryarrayDatos de obra que el usuario ha aportado
calculationsarrayCálculos guardados con las calculadoras de Normatia
available_calculatorsarrayCalculadoras que el usuario puede rellenar
CampoDescripción
geo_idIdentificador geográfico
nameMunicipio
levelNivel territorial
ancestorsJerarquía territorial (provincia, comunidad, país)
climate_zoneZona climática
tech_data_summaryResumen legible de los datos técnicos: zona climática, viento, nieve, sísmica, altitud…
CampoDescripción
slugIdentificador de la normativa
titleTítulo
scopeÁmbito normativo (estatal, autonomica, municipal…)
scope_labelÁmbito en formato legible
versionVersión vigente. Es la única respuesta válida a qué edición se aplica

unselected_collections[] usa slug, title y scope. Son normativas que Normatia tiene para ese territorio pero que el proyecto no ha activado: las consultas no las encontrarán hasta que el usuario las seleccione.

CampoDescripción
keyIdentificador del dato
labelNombre legible
valueValor
unitUnidad, si aplica
sourceDe dónde salió el dato
CampoDescripción
calculation_idIdentificador del cálculo
calculator_idCalculadora que lo produjo
nameNombre del cálculo
summaryResumen del resultado
compliantSi el resultado cumple la normativa

generated_documents[] devuelve titulo, tipo y version. available_calculators[] devuelve calculator_id y title.

GET /api/v1/project/info?project_id=3f8c1a90-5b2e-4d77-9d21-0e5f4a6c8b13
{
"project_id": "3f8c1a90-5b2e-4d77-9d21-0e5f4a6c8b13",
"name": "Rehabilitación Calle Mayor",
"is_active": true,
"project_description": "Rehabilitación integral de edificio residencial",
"geo_context": {
"geo_id": "ES-28079",
"name": "Madrid",
"level": "municipality",
"ancestors": "Madrid > Comunidad de Madrid > España",
"climate_zone": "D3",
"tech_data_summary": "Zona climática: D3\nAltitud: 667 m\nZona eólica: A"
},
"collection_count": 12,
"file_count": 1,
"files": ["Memoria de carpintería.pdf"],
"collections": [
{
"slug": "cte-db-he",
"title": "CTE DB-HE Ahorro de Energía",
"scope": "estatal",
"scope_label": "Estatal",
"version": "2022"
}
],
"unselected_collections": [
{
"slug": "pgoum-madrid",
"title": "Plan General de Ordenación Urbana de Madrid",
"scope": "municipal"
}
],
"generated_documents": [
{ "titulo": "Memoria justificativa DB-HE", "tipo": "memoria", "version": 3 }
],
"memory": [
{
"key": "tipo_intervencion",
"label": "Tipo de intervención",
"value": "Rehabilitación",
"unit": null,
"source": "usuario"
}
],
"calculations": [
{
"calculation_id": "9a2e...",
"calculator_id": "transmitancia-cerramientos",
"name": "Fachada tipo F1",
"summary": "U = 0,28 W/m²K",
"compliant": true
}
],
"available_calculators": [
{ "calculator_id": "transmitancia-cerramientos", "title": "Transmitancia de cerramientos" }
]
}
StatusCódigoCondición
400no_active_projectNo se pasó project_id y el usuario no tiene proyecto activo
404project_not_foundEl proyecto no existe o el usuario no tiene acceso

Un proyecto de otra organización y uno inexistente devuelven exactamente el mismo 404: una respuesta idéntica evita confirmar que un identificador ajeno es real.