{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://costaplanner.com/schemas/building-v0.1.json","title":"Costaplanner Building Schema","description":"Structured representation of a Costa Rican building. The canonical data format that Claude writes, the viewer renders, Revit reads, and compliance checks run on.","version":"0.1.0","type":"object","required":["project","units","levels","elements"],"properties":{"project":{"type":"object","required":["name","location","occupancy_type"],"properties":{"name":{"type":"string","example":"Residencia Santa Ana"},"owner":{"type":"string"},"architect":{"type":"object","properties":{"name":{"type":"string"},"cfia_registration":{"type":"string","description":"CFIA carnet number"}}},"engineer":{"type":"object","properties":{"name":{"type":"string"},"cfia_registration":{"type":"string"},"discipline":{"enum":["structural","electrical","mechanical","civil","sanitary"]}}},"location":{"type":"object","required":["province","canton","district"],"properties":{"province":{"enum":["San Jose","Alajuela","Cartago","Heredia","Guanacaste","Puntarenas","Limon"]},"canton":{"type":"string"},"district":{"type":"string"},"address":{"type":"string"},"coordinates":{"type":"object","properties":{"latitude":{"type":"number"},"longitude":{"type":"number"}}},"cadastral_plan":{"type":"string","description":"Plano catastrado number"},"land_use_zone":{"type":"string","description":"From the Plan Regulador, e.g. 'Residencial Alta Densidad'"},"seismic_zone":{"enum":["II","III","IV"],"description":"Per CSCR-10 seismic zoning of Costa Rica"},"soil_type":{"enum":["S1","S2","S3","S4"],"description":"Per CSCR-10 soil classification"},"in_maritime_zone":{"type":"boolean","description":"Within 200m of high tide line"},"distance_to_water_body_m":{"type":"number","description":"Distance to nearest river, stream, or water body. Relevant for SETENA and MINAE setbacks."}}},"occupancy_type":{"enum":["vivienda_unifamiliar","vivienda_multifamiliar","condominio","comercio","oficinas","industrial","salud","educacion","reunion_publica","hotel_hospedaje","mixto"],"description":"Costa Rican occupancy classification per Reglamento de Construcciones INVU 2018"},"risk_category":{"enum":["A","B","C","D","E"],"description":"CSCR-10 building importance category. D and E require higher seismic design factors."},"total_area_m2":{"type":"number"},"construction_cost_crc":{"type":"number","description":"Declared cost in colones for CFIA and municipal fees"}}},"units":{"type":"object","description":"Costa Rica uses metric. All linear dimensions in millimeters unless specified, areas in m2, angles in degrees.","properties":{"length":{"const":"mm"},"area":{"const":"m2"},"angle":{"const":"degrees"},"coordinate_system":{"const":"CRTM05"}}},"site":{"type":"object","description":"The lot and its constraints.","properties":{"lot_area_m2":{"type":"number"},"lot_frontage_m":{"type":"number"},"lot_boundary":{"type":"array","description":"Polygon of lot boundary as [x, y] points in mm from origin","items":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2}},"setbacks_required_m":{"type":"object","description":"Required setbacks per the Plan Regulador or Reglamento de Construcciones INVU","properties":{"front":{"type":"number"},"rear":{"type":"number"},"side_left":{"type":"number"},"side_right":{"type":"number"}}},"max_coverage_pct":{"type":"number","description":"Max buildable footprint as percentage of lot area"},"max_height_m":{"type":"number"},"max_floors":{"type":"integer"},"alignment_letter":{"type":"object","description":"MOPT alignment letter data (carta de alineamiento)","properties":{"file_url":{"type":"string"},"issue_date":{"type":"string","format":"date"},"front_setback_m":{"type":"number"}}}}},"levels":{"type":"array","description":"Floor levels. Ground floor is typically elevation 0.","items":{"type":"object","required":["id","name","elevation_mm"],"properties":{"id":{"type":"string","example":"L1"},"name":{"type":"string","example":"Planta Baja"},"elevation_mm":{"type":"number"},"floor_to_floor_mm":{"type":"number"},"clear_ceiling_height_mm":{"type":"number","description":"Minimum per Reglamento INVU: 2400mm for habitable rooms"}}}},"elements":{"type":"object","properties":{"walls":{"type":"array","items":{"type":"object","required":["id","level_id","start","end","height_mm","thickness_mm"],"properties":{"id":{"type":"string","example":"W1"},"level_id":{"type":"string"},"start":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},"end":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},"height_mm":{"type":"number"},"thickness_mm":{"type":"number"},"material":{"enum":["mamposteria_integral","mamposteria_confinada","concreto_armado","prefabricado","liviano_durock","liviano_gypsum","madera","acero"]},"load_bearing":{"type":"boolean"},"fire_rating_min":{"type":"integer","description":"Fire resistance in minutes per RNPCI / NFPA 101"},"is_exterior":{"type":"boolean"}}}},"columns":{"type":"array","items":{"type":"object","required":["id","level_id","location","section"],"properties":{"id":{"type":"string"},"level_id":{"type":"string"},"location":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},"section":{"type":"object","properties":{"shape":{"enum":["rectangular","circular","L","T"]},"width_mm":{"type":"number"},"depth_mm":{"type":"number"}}},"material":{"enum":["concreto_armado","acero","madera"]},"reinforcement":{"type":"string","description":"e.g. '8#5 + #3@20cm'"}}}},"beams":{"type":"array","items":{"type":"object","required":["id","level_id","start","end","section"],"properties":{"id":{"type":"string"},"level_id":{"type":"string"},"start":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},"end":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},"section":{"type":"object","properties":{"width_mm":{"type":"number"},"depth_mm":{"type":"number"}}},"material":{"enum":["concreto_armado","acero","madera"]}}}},"rooms":{"type":"array","items":{"type":"object","required":["id","level_id","name","type","area_m2","boundary"],"properties":{"id":{"type":"string","example":"R1"},"level_id":{"type":"string"},"name":{"type":"string","example":"Sala Comedor"},"type":{"enum":["sala","comedor","cocina","dormitorio_principal","dormitorio","bano","medio_bano","bano_accesible","cuarto_pilas","lavanderia","garaje","bodega","pasillo","escalera","balcon","terraza","patio","despacho","estudio","circulacion"]},"is_habitable":{"type":"boolean","description":"Habitable rooms per Reglamento INVU Art. VI.2: sala, comedor, dormitorio, estudio, despacho. Non-habitable: cocina, bano, lavanderia, garaje, pasillo."},"area_m2":{"type":"number"},"boundary":{"type":"array","description":"Polygon in [x, y] points","items":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2}},"natural_ventilation_area_m2":{"type":"number","description":"Operable window area for ventilation per INVU minimums"},"natural_light_area_m2":{"type":"number","description":"Glazing area for natural light"},"finishes":{"type":"object","properties":{"floor":{"type":"string"},"walls":{"type":"string"},"ceiling":{"type":"string"},"base":{"type":"string"}}}}}},"doors":{"type":"array","items":{"type":"object","required":["id","wall_id","width_mm","height_mm","type"],"properties":{"id":{"type":"string","example":"P-01"},"wall_id":{"type":"string"},"position_along_wall_mm":{"type":"number"},"width_mm":{"type":"number"},"height_mm":{"type":"number"},"type":{"enum":["principal","interior","bano","corredera","plegable","garaje","emergencia","accesible"]},"is_egress":{"type":"boolean","description":"Part of a means of egress per RNPCI"},"fire_rating_min":{"type":"integer"},"hardware":{"type":"object","properties":{"lever_handle":{"type":"boolean","description":"Required for Ley 7600 accessible doors"},"panic_hardware":{"type":"boolean"}}}}}},"windows":{"type":"array","items":{"type":"object","required":["id","wall_id","width_mm","height_mm"],"properties":{"id":{"type":"string"},"wall_id":{"type":"string"},"position_along_wall_mm":{"type":"number"},"sill_height_mm":{"type":"number"},"width_mm":{"type":"number"},"height_mm":{"type":"number"},"operable_area_m2":{"type":"number"},"type":{"enum":["corrediza","abatible","fija","proyectante","celosia","batiente"]}}}},"stairs":{"type":"array","items":{"type":"object","required":["id","from_level_id","to_level_id","tread_mm","riser_mm","width_mm"],"properties":{"id":{"type":"string"},"from_level_id":{"type":"string"},"to_level_id":{"type":"string"},"tread_mm":{"type":"number","description":"Huella. Min 280mm per RNPCI."},"riser_mm":{"type":"number","description":"Contrahuella. Max 175mm per RNPCI."},"width_mm":{"type":"number","description":"Min 900mm residencial, 1100mm comercial"},"has_handrail_both_sides":{"type":"boolean"},"is_egress":{"type":"boolean"}}}},"ramps":{"type":"array","description":"Accessibility ramps per Ley 7600","items":{"type":"object","required":["id","length_mm","height_change_mm","width_mm"],"properties":{"id":{"type":"string"},"length_mm":{"type":"number"},"height_change_mm":{"type":"number"},"width_mm":{"type":"number","description":"Min 1200mm per Ley 7600"},"slope_pct":{"type":"number","description":"Max 8% for exterior, 10% interior short runs"},"has_handrails":{"type":"boolean"},"has_landings":{"type":"boolean"}}}},"parking_spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"enum":["regular","accesible","motocicleta","bicicleta"]},"location":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},"width_mm":{"type":"number"},"length_mm":{"type":"number"}}}},"electrical":{"type":"object","description":"CECR / NFPA-70 NEC 2020 based","properties":{"service_amps":{"type":"number"},"service_voltage":{"type":"number"},"has_spd":{"type":"boolean","description":"Surge Protective Device required on all residential services per NEC 2020 Art. 230.67"},"panels":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"location":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2},"amps":{"type":"number"},"circuits":{"type":"integer"}}}}}},"plumbing_fixtures":{"type":"array","description":"For CIHSE 2017 fixture count and water demand checks","items":{"type":"object","properties":{"id":{"type":"string"},"room_id":{"type":"string"},"type":{"enum":["inodoro","lavatorio","ducha","tina","fregadero","pila","urinario","bidé"]}}}},"fire_safety":{"type":"object","description":"RNPCI 2023 based","properties":{"occupant_load":{"type":"integer"},"exits_provided":{"type":"integer"},"exits_required":{"type":"integer"},"max_travel_distance_mm":{"type":"number"},"has_sprinklers":{"type":"boolean"},"has_smoke_alarms":{"type":"boolean"},"emergency_lighting":{"type":"boolean"},"signage":{"type":"boolean"}}}}},"metadata":{"type":"object","properties":{"source":{"enum":["pdf_extraction","revit_export","sketch_trace","manual_entry"]},"source_file":{"type":"string"},"extraction_confidence":{"type":"number","minimum":0,"maximum":1,"description":"0.0 to 1.0 confidence from the parser"},"created_at":{"type":"string","format":"date-time"},"created_by":{"type":"string"},"schema_version":{"const":"0.1.0"}}}}}