{"openapi":"3.1.0","info":{"title":"Windaria API","version":"2.0.0","description":"Wind Turbine Impact Assessment API - Noise, viewshed, shadow flicker, output stability, and land use analysis."},"servers":[{"url":"https://windaria.harmonias.org","description":"Production"}],"paths":{"/health":{"get":{"summary":"Health Check","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"example":{"status":"healthy","service":"windaria-api","version":"2.0.0"}}}}},"operationId":"getHealth","security":[]}},"/api/v1/impact/assess":{"post":{"summary":"Wind Turbine Impact Assessment","requestBody":{"required":true,"content":{"application/json":{"example":{"hubHeight":80,"rotorDiameter":100,"ratedPower":3000,"lat":35.6812,"lon":139.7671}}}},"responses":{"200":{"description":"Impact assessment results","content":{"application/json":{"example":{"success":true,"data":{"noise":{"level":45,"distance":500,"compliance":true},"shadow":{"hoursPerYear":30,"affectedArea":2500},"visual":{"visibilityRadius":15000,"impact":"moderate"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"example":{"success":false,"error":"Missing required fields: hubHeight, rotorDiameter, ratedPower, lat, lon"}}}}},"operationId":"createImpactAssess"}},"/api/v1/noise/terrain-aware":{"post":{"summary":"Terrain-Aware Noise Analysis","requestBody":{"required":true,"content":{"application/json":{"example":{"turbineLocation":{"lat":35.6812,"lon":139.7671},"azimuth":180,"maxDistance":2000}}}},"responses":{"200":{"description":"Noise propagation analysis","content":{"application/json":{"example":{"success":true,"data":{"noiseContours":[{"distance":500,"level":45},{"distance":1000,"level":38}],"terrainEffects":{"attenuation":0.15,"barriers":[{"type":"hill","reduction":8}]}}}}}}},"operationId":"createNoiseTerrainAware"}},"/api/v1/viewshed/analyze":{"post":{"summary":"Viewshed Analysis","requestBody":{"required":true,"content":{"application/json":{"example":{"turbineLocation":{"lat":35.6812,"lon":139.7671},"turbineHeight":150,"analysisRadius":5000}}}},"responses":{"200":{"description":"Viewshed analysis results","content":{"application/json":{"example":{"success":true,"data":{"visibleArea":0.65,"keyViewpoints":[{"name":"scenic_overlook","visible":true,"distance":3500}]}}}}}},"operationId":"createViewshedAnalyze"}},"/api/v1/shadow/precise":{"post":{"summary":"Precise Shadow Flicker Analysis","requestBody":{"required":true,"content":{"application/json":{"example":{"turbineLocation":{"lat":35.6812,"lon":139.7671},"rotorDiameter":100,"date":"2024-06-21"}}}},"responses":{"200":{"description":"Shadow flicker analysis","content":{"application/json":{"example":{"success":true,"data":{"annualHours":28,"peakMonths":["march","september"],"affectedZone":{"azimuth":[45,135],"distance":1200}}}}}}},"operationId":"createShadowPrecise"}},"/api/v1/stability/analyze":{"post":{"summary":"Output Stability Analysis","requestBody":{"required":true,"content":{"application/json":{"example":{"ratedPower":3000,"location":{"lat":35.6812,"lon":139.7671},"offshore":false}}}},"responses":{"200":{"description":"Output stability analysis","content":{"application/json":{"example":{"success":true,"basic":{"capacityFactor":0.28,"annualOutput":7358400,"reliabilityScore":0.72,"nuclearComparison":{"capacityFactor":0.92,"message":"Nuclear provides 3.3x more reliable output"}},"tier":"free"}}}}},"operationId":"createStabilityAnalyze"}},"/api/v1/landuse/compare":{"post":{"summary":"Land Use Comparison","requestBody":{"required":true,"content":{"application/json":{"example":{"turbineCount":50,"turbinePower":3000,"capacityFactor":0.28}}}},"responses":{"200":{"description":"Land use comparison","content":{"application/json":{"example":{"success":true,"basic":{"windFarmCapacity":150000,"landRequired":7500,"nuclearComparison":{"capacity":150000,"landRequired":50,"efficiencyMultiplier":150}},"tier":"free"}}}}},"operationId":"createLanduseCompare"}},"/api/v1/economics/roi-analysis":{"post":{"summary":"Economic ROI Analysis","requestBody":{"required":true,"content":{"application/json":{"example":{"capacity":150000,"installationCost":300000000,"maintenanceCostPerYear":6000000}}}},"responses":{"200":{"description":"ROI analysis","content":{"application/json":{"example":{"success":true,"data":{"roi":0.088,"paybackPeriod":14,"npv":120000000,"lcoe":0.075}}}}},"400":{"description":"Invalid request","content":{"application/json":{"example":{"success":false,"error":"Missing required fields: capacity, installationCost, maintenanceCostPerYear"}}}}},"operationId":"createEconomicsRoiAnalysis"}},"/api":{"get":{"summary":"Get api","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1":{"get":{"summary":"Get api/v1","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/cumulative/assess":{"post":{"summary":"Create api/v1/cumulative/assess","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/health":{"get":{"summary":"Get api/v1/health","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/impact/quick":{"get":{"summary":"Get api/v1/impact/quick","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/infrasound/analyze":{"post":{"summary":"Create api/v1/infrasound/analyze","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/infrasound/building-resonance":{"post":{"summary":"Create api/v1/infrasound/building-resonance","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/wildlife/bat-impact":{"post":{"summary":"Create api/v1/wildlife/bat-impact","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/wildlife/bird-collision":{"post":{"summary":"Create api/v1/wildlife/bird-collision","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/wildlife/comprehensive":{"post":{"summary":"Create api/v1/wildlife/comprehensive","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/wildlife/marine-impact":{"post":{"summary":"Create api/v1/wildlife/marine-impact","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/api/v1/wind/optimize":{"post":{"summary":"Create api/v1/wind/optimize","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}},"/data-sources":{"get":{"summary":"Get data-sources","description":"Auto-generated stub. Schema/responses/parameters TBD.\nVerify path matches the actual mounted URL (sub-router prefix may be missing).\n","x-stub":true,"responses":{"200":{"description":"Successful response (schema TBD)"}}}}},"components":{"schemas":{"TurbineClass":{"type":"string","enum":["I","II","III","S"],"description":"IEC wind class"},"TurbineType":{"type":"string","enum":["onshore","offshore","floating_offshore"]},"NoiseLevel":{"type":"string","enum":["compliant","marginal","non_compliant"]},"VisualImpact":{"type":"string","enum":["minimal","low","moderate","high","severe"]},"TerrainType":{"type":"string","enum":["flat","rolling","hilly","mountainous","coastal"]},"MeasurementUnit":{"type":"string","enum":["kW","MW","dB","meters","km","hours","hectares"]},"RiskLevel":{"type":"string","enum":["very_low","low","moderate","high","very_high"]},"ErrorResponse":{"type":"object","properties":{"success":{"type":"boolean"},"error":{"type":"string"}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key for authentication. Obtain from the PPN Hub developer portal."}}},"security":[{"ApiKeyAuth":[]}]}