{"openapi":"3.1.0","info":{"title":"FastAPI","version":"0.1.0"},"paths":{"/api/v1/locations/names":{"get":{"tags":["locations"],"summary":"Get All Location Names","description":"Get all location names.\n\nArgs:\n location_service: Service dependency used to fetch location details.\n\nReturns:\n A list of location names with organization IDs.","operationId":"get_all_location_names_api_v1_locations_names_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationNamesResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/locations/id/{organization_id}":{"get":{"tags":["locations"],"summary":"Get Location By Org Id","description":"Get location details by organization ID.","operationId":"get_location_by_org_id_api_v1_locations_id__organization_id__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"integer","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationResponse"}}}},"404":{"description":"Location not found.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locations/pins":{"get":{"tags":["locations"],"summary":"Get All Location Pins","description":"Get all location pins with their coordinates.\n\nArgs:\n location_service: Service dependency used to fetch location details.\n\nReturns:\n A list of all eligible location pins.","operationId":"get_all_location_pins_api_v1_locations_pins_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationPinsResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/locations/{location_name}":{"get":{"tags":["locations"],"summary":"Get Location","description":"Get location details by name.\n\nArgs:\n location_name: The unique name of the location to retrieve.\n location_service: Service dependency used to fetch location details.\n\nReturns:\n The requested :class:`app.schemas.location_v2.LocationProfile` instance.\n\nRaises:\n HTTPException: 404 if the location does not exist.","operationId":"get_location_api_v1_locations__location_name__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"location_name","in":"path","required":true,"schema":{"type":"string","title":"Location Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationResponse"}}}},"300":{"description":"Multiple matching locations found.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"},"candidates":{"type":"array","items":{"type":"string"}}},"required":["detail","candidates"]}}}},"404":{"description":"Location not found.","content":{"application/json":{"schema":{"type":"object","properties":{"detail":{"type":"string"}},"required":["detail"]}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hazards/layer-config":{"get":{"tags":["hazards"],"summary":"Get Hazard Layer Config","description":"Retrieve the configuration for all hazard layers.\n\nReturns:\n A HazardLayerConfigResponse containing the configuration for each hazard layer.","operationId":"get_hazard_layer_config_api_v1_hazards_layer_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HazardLayerConfigResponse"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/hazards/{hazard_type}":{"get":{"tags":["hazards"],"summary":"Get Ee Hazard Layer","description":"Retrieve Earth Engine hazard layer to render on a map.\n\nArgs:\n hazard_type: The type of hazard to retrieve.\n scenario: The scenario for the hazard layer.\n start_year: An optional start year for the hazard layer.\n end_year: An optional end year for the hazard layer.\n ee_hazard_data_provider: Dependency-injected hazard data provider.\n\nReturns:\n The requested HazardLayer instance.","operationId":"get_ee_hazard_layer_api_v1_hazards__hazard_type__get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"hazard_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/HazardEnum"}},{"name":"scenario","in":"query","required":true,"schema":{"$ref":"#/components/schemas/ScenarioEnum"}},{"name":"start_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Start Year"}},{"name":"end_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"End Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HazardLayerResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/translate":{"post":{"tags":["translate"],"summary":"Translate Texts","description":"Translate an array of texts to the target language.","operationId":"translate_texts_api_v1_translate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TranslateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/disclosure-trends":{"get":{"tags":["disclosure-trends"],"summary":"Get Disclosure Trends","description":"Aggregate dataset-wide disclosure trends for a given year.\n\nAll counts and percentages are computed across every public jurisdiction\nin the disclosure year — they are not scoped to a selected location.","operationId":"get_disclosure_trends_api_v1_disclosure_trends_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","description":"Disclosure year, e.g. 2025.","title":"Year"},"description":"Disclosure year, e.g. 2025."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisclosureTrendsSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/onboarding/role":{"post":{"tags":["onboarding"],"summary":"Record Role Selection","description":"Persist a welcome-modal role selection with the requester's IP and UA.","operationId":"record_role_selection_api_v1_onboarding_role_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleSelectionRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/api/v1/health":{"get":{"summary":"Health Check","description":"Health check endpoint.\n\nReturns:\n dict: Health status information.","operationId":"health_check_api_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]}]}}},"components":{"schemas":{"ActionStatus":{"properties":{"statusType":{"$ref":"#/components/schemas/ActionStatusEnum"},"otherStatusDetails":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Otherstatusdetails","description":"Free-text details for a status of type OTHERS."}},"type":"object","required":["statusType"],"title":"ActionStatus","description":"Represents the status of an adaptation action (Q9.1)."},"ActionStatusEnum":{"type":"string","enum":["SCOPING","PRE_FEASIBILITY_STUDY","FEASIBILITY_FINALIZED_NO_FINANCE","FEASIBILITY_FINALIZED_PARTIAL_FINANCE","FEASIBILITY_FINALIZED_FULL_FINANCE","IMPLEMENTATION_COMPLETE_REPORTING_YEAR","IMPLEMENTATION_UNDERWAY_COMPLETION_LT_ONE_YEAR","IMPLEMENTATION_UNDERWAY_COMPLETION_GT_ONE_YEAR","ACTION_IN_OPERATION_JURISDICTION_WIDE","ACTION_IN_OPERATION_MOST_OF_JURISDICTION","ACTION_IN_OPERATION_TARGETED","OTHERS"],"title":"ActionStatusEnum","description":"Current status of an adaptation action."},"ActionsTab":{"properties":{"goals":{"items":{"$ref":"#/components/schemas/AdaptationGoal"},"type":"array","title":"Goals"},"actions":{"items":{"$ref":"#/components/schemas/AdaptationAction"},"type":"array","title":"Actions"},"projects":{"items":{"$ref":"#/components/schemas/ProjectSeekingFunding"},"type":"array","title":"Projects"}},"type":"object","title":"ActionsTab"},"AdaptationAction":{"properties":{"title":{"type":"string","title":"Title"},"status":{"anyOf":[{"$ref":"#/components/schemas/ActionStatus"},{"type":"null"}]},"coBenefits":{"items":{"type":"string"},"type":"array","title":"Cobenefits"},"hazardsAddressed":{"items":{"$ref":"#/components/schemas/Hazard"},"type":"array","title":"Hazardsaddressed"},"totalCostUsd":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Totalcostusd"},"timeframe":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeframe"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"resilienceEnhanced":{"items":{"type":"string"},"type":"array","title":"Resilienceenhanced"},"impactedSectors":{"items":{"$ref":"#/components/schemas/Sector"},"type":"array","title":"Impactedsectors"},"imageUrl":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Imageurl"}},"type":"object","required":["title"],"title":"AdaptationAction"},"AdaptationGoal":{"properties":{"title":{"type":"string","title":"Title"},"hazardsAddressed":{"items":{"$ref":"#/components/schemas/Hazard"},"type":"array","title":"Hazardsaddressed"},"metricIndicator":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Metricindicator"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"baseYear":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Baseyear"},"targetYear":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Targetyear"}},"type":"object","required":["title"],"title":"AdaptationGoal"},"DisclosureTrendsSummary":{"properties":{"adaptationPlanCount":{"type":"integer","title":"Adaptationplancount"},"waterSecurityRisksCount":{"type":"integer","title":"Watersecurityriskscount"},"topHazards":{"items":{"$ref":"#/components/schemas/TopHazard"},"type":"array","title":"Tophazards"},"projectsSeekingFinanceCount":{"type":"integer","title":"Projectsseekingfinancecount"},"jurisdictionsExposedPct":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Jurisdictionsexposedpct"}},"type":"object","required":["adaptationPlanCount","waterSecurityRisksCount","topHazards","projectsSeekingFinanceCount"],"title":"DisclosureTrendsSummary","description":"Dataset-wide disclosure trends for a given disclosure year.\n\nAll counts and percentages are aggregated across every public jurisdiction\nin the disclosure year — they are not scoped to a selected location."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Hazard":{"properties":{"hazardType":{"$ref":"#/components/schemas/HazardEnum"},"otherHazardDetails":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Otherhazarddetails","description":"Free-text details for a hazard of type OTHERS."}},"type":"object","required":["hazardType"],"title":"Hazard","description":"Represents a hazard with optional custom details for OTHERS type."},"HazardEnum":{"type":"string","enum":["HEAT_STRESS","EXTREME_HEAT","EXTREME_COLD","SNOW_AND_ICE","FIRE_WEATHER","DROUGHT","WATER_STRESS","INCREASED_WATER_DEMAND","URBAN_FLOODING","RIVER_FLOODING","COASTAL_FLOODING","OTHER_COASTAL_EVENTS","OCEANIC_EVENTS","TROPICAL_CYCLONE","EXTREME_WIND","STORM","HEAVY_PRECIPITATION","MASS_MOVEMENT","LOSS_OF_GREEN_SPACE","SOIL_DEGRADATION_EROSION","LANDSCAPE_SHIFT_DEGRADATION","INFECTIOUS_DISEASE","BIODIVERSITY_LOSS","OTHERS"],"title":"HazardEnum","description":"Types of hazards.\n\nValues exactly match DB strings."},"HazardLayer":{"properties":{"name":{"$ref":"#/components/schemas/HazardEnum","description":"Type of the hazard layer."},"hazard_data":{"oneOf":[{"$ref":"#/components/schemas/TileHazardLayerData"}],"title":"Hazard Data","discriminator":{"propertyName":"type","mapping":{"tile":"#/components/schemas/TileHazardLayerData"}}}},"type":"object","required":["name","hazard_data"],"title":"HazardLayer"},"HazardLayerConfigResponse":{"properties":{"config":{"additionalProperties":{"$ref":"#/components/schemas/HazardLayerOptions"},"propertyNames":{"$ref":"#/components/schemas/HazardEnum"},"type":"object","title":"Config"}},"type":"object","required":["config"],"title":"HazardLayerConfigResponse","description":"Response wrapper for hazard layer configurations."},"HazardLayerOptions":{"properties":{"scenarios":{"items":{"$ref":"#/components/schemas/ScenarioEnum"},"type":"array","title":"Scenarios"},"year_ranges":{"anyOf":[{"items":{"$ref":"#/components/schemas/YearRange"},"type":"array"},{"type":"null"}],"title":"Year Ranges"},"historical_year_range":{"anyOf":[{"$ref":"#/components/schemas/YearRange"},{"type":"null"}]},"palette":{"items":{"type":"string"},"type":"array","title":"Palette"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"partial_image_id_templates":{"additionalProperties":{"type":"string"},"type":"object","title":"Partial Image Id Templates"}},"type":"object","required":["scenarios","palette","partial_image_id_templates"],"title":"HazardLayerOptions"},"HazardLayerResponse":{"properties":{"layer":{"$ref":"#/components/schemas/HazardLayer"}},"type":"object","required":["layer"],"title":"HazardLayerResponse","description":"Response wrapper for a single hazard layer."},"HazardProfile":{"properties":{"hazard":{"$ref":"#/components/schemas/Hazard"},"hazardRank":{"type":"integer","title":"Hazardrank"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Data source for this hazard profile"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"vulnerableGroups":{"items":{"type":"string"},"type":"array","title":"Vulnerablegroups"},"proportionExposedRange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Proportionexposedrange","description":"Range of proportion exposed (e.g., '10-20%')"},"impact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Impact"},"mostExposedSectors":{"items":{"$ref":"#/components/schemas/Sector"},"type":"array","title":"Mostexposedsectors"}},"type":"object","required":["hazard","hazardRank"],"title":"HazardProfile"},"HazardsTab":{"properties":{"statistics":{"$ref":"#/components/schemas/RegionalStatistics"},"hazards":{"items":{"$ref":"#/components/schemas/HazardProfile"},"type":"array","title":"Hazards","description":"List of hazard profiles, ordered by hazard_rank."}},"type":"object","required":["statistics"],"title":"HazardsTab"},"LocationNamesResponse":{"properties":{"locations":{"items":{"$ref":"#/components/schemas/OrganizationSummary"},"type":"array","title":"Locations"}},"type":"object","required":["locations"],"title":"LocationNamesResponse","description":"Response wrapper for a list of location names."},"LocationPin":{"properties":{"name":{"type":"string","title":"Name"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"orgType":{"anyOf":[{"$ref":"#/components/schemas/OrgTypeEnum"},{"type":"null"}]}},"type":"object","required":["name","lat","lng"],"title":"LocationPin","description":"Defines the coordinates for a location pin on the map."},"LocationPinsResponse":{"properties":{"pins":{"items":{"$ref":"#/components/schemas/LocationPin"},"type":"array","title":"Pins"}},"type":"object","required":["pins"],"title":"LocationPinsResponse","description":"Response wrapper for a list of location pins."},"LocationProfile":{"properties":{"organizationId":{"type":"integer","title":"Organizationid"},"name":{"type":"string","title":"Name"},"countryName":{"type":"string","title":"Countryname"},"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lng":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lng"},"geometry":{"additionalProperties":true,"type":"object","title":"Geometry"},"isReportingLeader":{"type":"boolean","title":"Isreportingleader","default":false},"publicStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publicstatus","description":"Disclosure visibility for the org — \"Public\", \"Non-Public\", or null when the org has not disclosed (non-discloser)."},"disclosureYear":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Disclosureyear"},"reportingLanguage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reportinglanguage"},"requesters":{"items":{"type":"string"},"type":"array","title":"Requesters"},"population":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Population"},"hazards":{"$ref":"#/components/schemas/HazardsTab"},"governmentActions":{"$ref":"#/components/schemas/ActionsTab"},"solutions":{"$ref":"#/components/schemas/SolutionsTab"}},"type":"object","required":["organizationId","name","countryName","lat","lng","geometry","hazards","governmentActions","solutions"],"title":"LocationProfile","description":"Defines the complete location details response schema."},"LocationResponse":{"properties":{"location":{"$ref":"#/components/schemas/LocationProfile"}},"type":"object","required":["location"],"title":"LocationResponse","description":"Response wrapper for a single location profile."},"OrgTypeEnum":{"type":"string","enum":["City","StateAndRegion"],"title":"OrgTypeEnum","description":"Types of disclosing organizations."},"OrganizationSummary":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"population":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Population"}},"type":"object","required":["id"],"title":"OrganizationSummary","description":"Simplified organization details for location ID lookup."},"PeerAction":{"properties":{"peerName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Peername"},"action":{"anyOf":[{"$ref":"#/components/schemas/AdaptationAction"},{"type":"null"}]}},"type":"object","title":"PeerAction"},"PlannedProjectStatusEnum":{"type":"string","enum":["SCOPING","PRE_FEASIBILITY","PROJECT_FEASIBILITY","PROJECT_STRUCTURING","TRANSACTION_PREPARATION","IMPLEMENTATION","POST_IMPLEMENTATION"],"title":"PlannedProjectStatusEnum","description":"Status of a planned project seeking funding."},"ProjectSeekingFunding":{"properties":{"title":{"type":"string","title":"Title"},"status":{"anyOf":[{"$ref":"#/components/schemas/PlannedProjectStatusEnum"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"projectArea":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Projectarea"},"financeStatus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Financestatus"},"financeModel":{"items":{"type":"string"},"type":"array","title":"Financemodel"},"fundedPercent":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Fundedpercent"},"totalAmount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Totalamount"},"totalNeeded":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Totalneeded"},"hazardsAddressed":{"items":{"$ref":"#/components/schemas/Hazard"},"type":"array","title":"Hazardsaddressed"},"imageUrl":{"anyOf":[{"type":"string","maxLength":2083,"minLength":1,"format":"uri"},{"type":"null"}],"title":"Imageurl"}},"type":"object","required":["title"],"title":"ProjectSeekingFunding"},"RegionalStatistics":{"properties":{"populationExposedValue":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Populationexposedvalue"},"populationExposedPercentage":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Populationexposedpercentage"},"gdpAtRiskValue":{"anyOf":[{"type":"number","minimum":0.0},{"type":"null"}],"title":"Gdpatriskvalue"},"gdpAtRiskPercentage":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Gdpatriskpercentage"},"gdpAtRiskCurrencyCode":{"anyOf":[{"type":"string","pattern":"^[A-Z]{3}$"},{"type":"null"}],"title":"Gdpatriskcurrencycode"},"vulnerableSectors":{"items":{"$ref":"#/components/schemas/Sector"},"type":"array","title":"Vulnerablesectors"}},"type":"object","title":"RegionalStatistics"},"RoleSelectionRequest":{"properties":{"role":{"$ref":"#/components/schemas/UserRole"}},"type":"object","required":["role"],"title":"RoleSelectionRequest"},"ScenarioEnum":{"type":"string","enum":["historical","ssp126","ssp245","ssp370","ssp585"],"title":"ScenarioEnum"},"Sector":{"properties":{"sectorType":{"$ref":"#/components/schemas/SectorEnum"},"otherSectorDetails":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Othersectordetails","description":"Free-text details for a sector of type OTHERS."}},"type":"object","required":["sectorType"],"title":"Sector","description":"Represents a sector with optional custom details for OTHERS type."},"SectorEnum":{"type":"string","enum":["AGRICULTURE","FORESTRY","FISHING","MINING_QUARRYING","MANUFACTURING","ELECTRICITY_GAS_STEAM_AIR","WATER_SUPPLY","SEWERAGE_WASTE_REMEDIATION","WASTE_MANAGEMENT","CONSTRUCTION","WHOLESALE_RETAIL_TRADE","TRANSPORTATION_STORAGE","ACCOMMODATION_FOOD_SERVICE","INFORMATION_COMMUNICATION","FINANCIAL_INSURANCE","REAL_ESTATE","PROFESSIONAL_SCIENTIFIC_TECHNICAL","ADMIN_SUPPORT_SERVICES","PUBLIC_ADMIN_DEFENCE","EDUCATION","HUMAN_HEALTH_SOCIAL_WORK","ARTS_ENTERTAINMENT_RECREATION","CONSERVATION","OTHERS"],"title":"SectorEnum","description":"Economic sectors affected by climate hazards (exactly matches DB strings)."},"SolutionCard":{"properties":{"solution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Solution"},"solutionCategory":{"anyOf":[{"$ref":"#/components/schemas/SolutionCategoryEnum"},{"type":"null"}]},"peerActions":{"anyOf":[{"items":{"$ref":"#/components/schemas/PeerAction"},"type":"array"},{"type":"null"}],"title":"Peeractions"},"pctPeerTakingAction":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Pctpeertakingaction"},"solutionHazardsAddressed":{"anyOf":[{"items":{"$ref":"#/components/schemas/Hazard"},"type":"array"},{"type":"null"}],"title":"Solutionhazardsaddressed"},"hazardFilter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hazardfilter"},"hasLocalAction":{"type":"boolean","title":"Haslocalaction","default":false}},"type":"object","title":"SolutionCard"},"SolutionCategoryEnum":{"type":"string","enum":["ENGINEERED_BUILT_ENVIRONMENT","ECONOMIC","LAWS_REGULATIONS","TECHNOLOGICAL","BEHAVIOURAL","EDUCATIONAL_INFORMATIONAL","ECOSYSTEM_BASED","SERVICES","GOVERNMENT_POLICIES_PROGRAMS"],"title":"SolutionCategoryEnum","description":"Solution categories for adaptation actions."},"SolutionsTab":{"properties":{"solutions":{"additionalProperties":{"items":{"$ref":"#/components/schemas/SolutionCard"},"type":"array"},"propertyNames":{"$ref":"#/components/schemas/SolutionCategoryEnum"},"type":"object","title":"Solutions"}},"type":"object","title":"SolutionsTab"},"TileHazardLayerData":{"properties":{"type":{"type":"string","const":"tile","title":"Type","default":"tile"},"tile_url":{"type":"string","title":"Tile Url","description":"Map tile url for the hazard layer."}},"type":"object","required":["tile_url"],"title":"TileHazardLayerData"},"TopHazard":{"properties":{"rank":{"type":"integer","title":"Rank"},"type":{"$ref":"#/components/schemas/HazardEnum"},"range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Range"}},"type":"object","required":["rank","type"],"title":"TopHazard","description":"One of the most-reported hazards across the dataset."},"TranslateRequest":{"properties":{"texts":{"items":{"type":"string"},"type":"array","maxItems":50,"minItems":1,"title":"Texts"},"target_language":{"type":"string","maxLength":10,"minLength":2,"title":"Target Language"},"source_language":{"type":"string","maxLength":10,"minLength":2,"title":"Source Language","default":"en"}},"type":"object","required":["texts","target_language"],"title":"TranslateRequest"},"TranslateResponse":{"properties":{"translations":{"items":{"type":"string"},"type":"array","title":"Translations"},"source_language":{"type":"string","title":"Source Language"},"target_language":{"type":"string","title":"Target Language"}},"type":"object","required":["translations","source_language","target_language"],"title":"TranslateResponse"},"UserRole":{"type":"string","enum":["ngo","governmentDiscloser","financial","governmentNotDisclosing","business","other"],"title":"UserRole","description":"Welcome-modal role options. Mirrors the `roles` list in\nfrontend/src/app/features/welcome-modal/welcome-modal.component.ts.\nKeep both lists in sync."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"YearRange":{"properties":{"start":{"type":"integer","title":"Start","description":"Start year of the range."},"end":{"type":"integer","title":"End","description":"End year of the range."}},"type":"object","required":["start","end"],"title":"YearRange"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}}}