Skip to content

add(api): introduce diesel-to-solar hybrid feasibility api for africa#2678

Open
bethelhash wants to merge 2 commits into
APIs-guru:mainfrom
bethelhash:add-axiom-hybrid-energy-api
Open

add(api): introduce diesel-to-solar hybrid feasibility api for africa#2678
bethelhash wants to merge 2 commits into
APIs-guru:mainfrom
bethelhash:add-axiom-hybrid-energy-api

Conversation

@bethelhash

Copy link
Copy Markdown

API Submission Summary

Description

This pull request introduces the structural OpenAPI specification for the Diesel-to-Solar Hybrid Feasibility API under the tracking domain segment axiomii.co.uk. The underlying calculation system handles high-fidelity merit-order physical dispatch simulations, 25-year structural financial underwriting schedules, and automated covenant evaluation (minimum 1.30 DSCR thresholds) for commercial and industrial solar installations across 10 distinct African sovereign jurisdictions.

Validation Checklist

  • Schema maps completely to valid OpenAPI 3.1.0 syntax specifications.
  • Contains zero missing parameter block descriptions or untracked operational routes.
  • Production gateway hooks point directly to active production systems.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the OpenAPI 3.1.0 specification for the Diesel-to-Solar Hybrid Feasibility API, defining endpoints for feasibility analysis, country screening, and reference data. Feedback on the specification highlights several improvement opportunities: defining explicit schemas for all successful HTTP 200 responses, utilizing global or route-level securitySchemes for API key headers instead of repeating them as individual parameters, and adding an enum constraint to the carbon_standard property in FullAnalysisRequest to enforce valid inputs.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread APIs/axiomii.co.uk/openapi.json Outdated
@@ -0,0 +1 @@
{"openapi":"3.1.0","info":{"title":"Diesel-to-Solar Hybrid Feasibility API","description":"Lender-grade pre-feasibility for replacing diesel generators with solar+BESS hybrid systems across 10 African C&I markets.\n\n**Engineering standards**: ISO 8528-1:2005 | NREL ATB 2024 | HOMER dispatch | PNNL-33283 LCOS | PVGIS-SARAH3 | IFC DSCR | Verra VCS carbon credits.\n\n**v3.0 additions**: GPS→PVGIS irradiance lookup | PPA/EaaS model | DSCR covenant table | 3-scenario analysis | IFC PS1 E&S checklist | Break-even & P90 fields.\n\n**Countries**: Nigeria, South Africa, Kenya, Ghana, Egypt, Tanzania, Ethiopia, Zambia, Senegal, Morocco.\n\n**Sectors**: Manufacturing, Commercial Office, Retail, Cold Chain, Telecoms, Hospital, Hotel, Agro-processing.\n\nEvery output equation is cited to its primary engineering source.","version":"3.0.0"},"paths":{"/health":{"get":{"tags":["System"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/pricing":{"get":{"tags":["System"],"summary":"Pricing","operationId":"pricing_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/analyse/quick":{"post":{"tags":["Analysis"],"summary":"Quick pre-feasibility with sensitivity and DSCR snapshot","description":"Diesel-to-solar pre-feasibility for a single site. **Free plan.**\n\nReturns a complete engineering and financial model including:\n- All-in diesel cost (ISO 8528-1:2005 fuel consumption model)\n- PV and BESS sizing (NREL ATB 2024 CAPEX; PVGIS-SARAH2 yield)\n- Merit-order dispatch: solar → BESS → generator\n- NPV, IRR, simple payback (25-year model, 3%/yr diesel escalation)\n- DSCR snapshot — lender bankability against IFC 1.30 threshold\n- Carbon credit estimate (Verra VCS VM0038)\n- FX risk level and IRR downside under currency stress\n- Sensitivity table: diesel ±20%/+40%, CAPEX ±10/20%, NPV at 8/10/12/15%\n- Generator wet-stacking health check (ISO 8528-1; Cummins 2002)\n- Thermal derating — ambient temperature correction on PV yield\n- Land area estimate (rooftop and ground-mount)\n\n25-year cashflow schedule available on Pro plan via `/analyse/full`.","operationId":"analyse_quick_analyse_quick_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/full":{"post":{"tags":["Analysis"],"summary":"Full lender-grade model — DSCR, carbon, FX, cashflows, SOH curve","description":"Full lender-grade engineering and financial model. **Pro plan required.**\n\nIncludes everything in `/analyse/quick` plus:\n- Complete 25-year annual cashflow schedule\n- Debt structuring: DSCR for each year over loan tenor, lender pass/fail\n- Carbon credit revenue (Verra VCS or Gold Standard — your choice)\n- FX risk level and IRR downside under currency stress\n- BESS State-of-Health degradation curve (phased fade to 80% SOH)\n- Full sensitivity matrix\n- Custom irradiance override — use your measured site data\n- Productive loss quantification from grid downtime (requires revenue/hr input)\n- Configurable: discount rate, project life, debt terms, carbon standard","operationId":"analyse_full_analyse_full_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/batch":{"post":{"tags":["Analysis"],"summary":"Screen up to 30 sites — fleet and portfolio analysis","description":"Batch analysis for up to 30 sites in a single call. **Pro plan required.**\n\nReturns per-site results ranked by IRR, plus portfolio totals:\n- Total CAPEX, annual savings, CO2 avoided, carbon credit revenue\n- DSCR lender pass/fail count across the portfolio\n- Sites grouped by viability rating (excellent / strong / viable / marginal)\n\nTypical use cases: tower company fleet screening; EPC pipeline quoting;\nDFI grant shortlist ranking; multi-site corporate energy review.","operationId":"analyse_batch_analyse_batch_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/bankable":{"post":{"tags":["Analysis"],"summary":"Structured lender package — all sections, bankable format","description":"Structured lender package — bankable pre-feasibility report format. **Pro plan required.**\n\nReturns a JSON object organised as a complete bankable feasibility report:\n- Section 1: Executive summary — headline KPIs, viability rating\n- Section 2: Country context — resource, grid, diesel, tax incentives\n- Section 3: Technical design — PV, BESS, dispatch, land, thermal derating\n- Section 4: Financial model — NPV, IRR, LCOE, 25-year cashflow schedule\n- Section 5: Debt structuring — DSCR per year, lender pass/fail, terms\n- Section 6: Risk analysis — sensitivity table, FX risk, generator health\n- Section 7: Carbon and ESG — CO2 savings, carbon credit pathway, SDG flags\n- Section 8: Engineering sources — all primary citations\n\nUse your PDF generation layer to convert this output into a branded client deliverable.\nSee `/reference/methodology` for full calculation methodology.","operationId":"analyse_bankable_analyse_bankable_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/screen/country":{"post":{"tags":["Screening"],"summary":"Screen all 8 sectors for one country — instant market map","description":"Screen all 8 sector load profiles for a single country in one call. **Free plan.**\n\nReturns all sectors ranked by IRR — instant market map for that country.\n\nAnswers: *\"Which sector has the strongest solar economics in Nigeria for my generator fleet size?\"*\n\nResults include DSCR lender flag, LCOE vs diesel, CO2, and viability rating per sector.","operationId":"screen_country_screen_country_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryScreenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compare/countries":{"post":{"tags":["Screening"],"summary":"Compare economics across countries for the same load","description":"Compare solar hybrid economics across 2–10 countries for the same load profile. **Free plan.**\n\nReturns countries ranked by IRR with key drivers surfaced per country:\ndiesel price differential, grid reliability, irradiance, incentives, FX risk.\n\nAnswers: *\"I operate manufacturing facilities across Nigeria, South Africa, Kenya and Ghana —\nwhere should I deploy my solar capital first?\"*","operationId":"compare_countries_compare_countries_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryCompareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reference/countries":{"get":{"tags":["Reference"],"summary":"Ref Countries","description":"Country reference data: irradiance, diesel price, grid reliability, FX risk, incentives.","operationId":"ref_countries_reference_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/load-profiles":{"get":{"tags":["Reference"],"summary":"Ref Load Profiles","description":"Load profile library with solar coincidence, BESS benefit, and daily cycle rates.","operationId":"ref_load_profiles_reference_load_profiles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/capex-benchmarks":{"get":{"tags":["Reference"],"summary":"Ref Capex","description":"CAPEX benchmarks for PV, BESS, and generators in the African C&I market.","operationId":"ref_capex_reference_capex_benchmarks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/methodology":{"get":{"tags":["Reference"],"summary":"Ref Methodology","description":"Full engineering methodology and primary source citations for all calculations.","operationId":"ref_methodology_reference_methodology_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/changelog":{"get":{"tags":["Reference"],"summary":"Ref Changelog","description":"Version history and engineering updates.","operationId":"ref_changelog_reference_changelog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/site/irradiance":{"post":{"tags":["Site Tools"],"summary":"GPS coordinates → PVGIS-SARAH3 site-specific irradiance","description":"Fetch site-specific annual irradiance from GPS coordinates using EU JRC PVGIS-SARAH3.\n\n**Free plan.** Results can be passed as `irradiance_override_kwh_m2_yr`\nto `/analyse/full` for site-accurate modelling.\n\nCrossBoundary (2021) found that generic country-average datasets overstate\nAfrica irradiance by up to 20%, causing 1–2% IRR overstatement. This endpoint\neliminates that systematic bias using 15-year Meteosat satellite data at ~3 km resolution.\n\nSource: EU JRC PVGIS v5.3. Huld et al. (2012) Solar Energy 86:1803-1815.","operationId":"site_irradiance_site_irradiance_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteIrradianceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/ppa":{"post":{"tags":["Analysis"],"summary":"PPA vs CAPEX dual-mode analysis — Energy-as-a-Service model","description":"Model both PPA/EaaS and CAPEX ownership structures side-by-side. **Pro plan required.**\n\nIn PPA/EaaS:\n- Developer owns and operates the system (zero CAPEX for customer)\n- Customer pays only per kWh consumed at fixed PPA tariff\n- Developer earns project IRR from PPA cashflows\n- Customer saves vs diesel from day one\n\nReturns: developer IRR, break-even tariff, customer savings vs diesel,\n25-year PPA revenue, crossover analysis.\n\nTemplate: CrossBoundary Energy EaaS — 20-country, $707M portfolio (2025).\nKamoa Copper DRC: 222 MWp + 526 MWh BESS, EaaS structure (April 2025).\n\nCitation: IFC (2023) Mobilizing Private Investment in Clean Energy Africa §3.2.","operationId":"analyse_ppa_analyse_ppa_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PPARequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/scenarios":{"post":{"tags":["Analysis"],"summary":"Three-scenario analysis — Conservative / Base / Optimistic","description":"Run Conservative / Base / Optimistic scenarios side-by-side. **Pro plan required.**\n\nIFC standard stress-test deltas (Sub-Saharan Africa C&I solar):\n- Conservative: P90 irradiance (−10%), diesel −20%, CAPEX +15%\n- Base: P50 irradiance, current diesel price, base CAPEX\n- Optimistic: irradiance +5%, diesel +20%, CAPEX −5%\n\nReturns a side-by-side table with IRR, NPV, payback, DSCR, and an\ninvestment decision string: INVEST / PROCEED WITH CONDITIONS / MARGINAL / DO NOT PROCEED.\n\nThis is the single output that every investment committee and DFI credit\nofficer requests. Required for IFC project finance approval packages.\n\nCitation: IRENA (2023) §4.6 risk framework. IFC (2023) §5 stress-test.\nArcadis (2025) sensitivity methodology. IEA PVPS Task 13 (2024) P90 definition.","operationId":"analyse_scenarios_analyse_scenarios_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/screen/es-checklist":{"get":{"tags":["Screening"],"summary":"IFC PS1 Environmental & Social pre-screening checklist","description":"Generate an IFC Performance Standards pre-screening checklist. **Free plan.**\n\nReturns structured PS1, PS2, PS3, PS6 requirements with:\n- IFC project category (A/B/C)\n- Equator Principles category\n- DFI eligibility list (AfDB SEFA, IFC, Proparco, REPP, KfW DEG, FMO etc.)\n- Line-by-line checklist with IFC PS reference and guidance notes\n\nAlmost all C&I rooftop and small ground-mount solar in Africa qualifies\nas Category B (site-specific, largely reversible impacts).\n\nThis checklist is required for any project seeking financing from an\nEquator Principles signatory bank or IFC-affiliated DFI.\n\nCitation: IFC Performance Standards on E&S Sustainability (2012).\nIFC Project 49569 Botswana Solar Phase 2 ESRS (2024) — Category B precedent.\nWorld Bank Equator Principles IV (2020). AfDB ISS Category 2 (2013).","operationId":"screen_es_checklist_screen_es_checklist_get","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","description":"Country code. See /reference/countries","title":"Country"},"description":"Country code. See /reference/countries"},{"name":"sector","in":"query","required":true,"schema":{"type":"string","description":"Sector. See /reference/load-profiles","title":"Sector"},"description":"Sector. See /reference/load-profiles"},{"name":"land_ha","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0,"description":"Estimated land area in hectares","default":0.5,"title":"Land Ha"},"description":"Estimated land area in hectares"},{"name":"has_bess","in":"query","required":false,"schema":{"type":"boolean","description":"Does the project include a BESS?","default":true,"title":"Has Bess"},"description":"Does the project include a BESS?"},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BatchAnalysisRequest":{"properties":{"sites":{"items":{"$ref":"#/components/schemas/BatchSiteItem"},"type":"array","maxItems":30,"minItems":1,"title":"Sites"},"project_life_yr":{"type":"integer","maximum":30.0,"minimum":10.0,"title":"Project Life Yr","default":25},"discount_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Discount Rate Pct","default":10.0}},"type":"object","required":["sites"],"title":"BatchAnalysisRequest","example":{"discount_rate_pct":10,"project_life_yr":25,"sites":[{"avg_daily_load_kwh":480,"backup_hours_target":8,"country":"nigeria","load_fraction":0.8,"load_profile":"telecoms_tower","nameplate_kva":100,"site_id":"tower_NG_001","target_diesel_displacement_pct":80},{"avg_daily_load_kwh":9600,"backup_hours_target":4,"country":"south_africa","load_fraction":0.7,"load_profile":"manufacturing","nameplate_kva":2000,"site_id":"factory_ZA_001","target_diesel_displacement_pct":60},{"avg_daily_load_kwh":1200,"backup_hours_target":6,"country":"kenya","load_fraction":0.85,"load_profile":"cold_chain","nameplate_kva":250,"site_id":"cold_KE_001","target_diesel_displacement_pct":55}]}},"BatchSiteItem":{"properties":{"site_id":{"type":"string","title":"Site Id","description":"Unique site identifier"},"country":{"type":"string","title":"Country"},"load_profile":{"type":"string","title":"Load Profile"},"avg_daily_load_kwh":{"type":"number","exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0}},"type":"object","required":["site_id","country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"BatchSiteItem"},"CountryCompareRequest":{"properties":{"countries":{"items":{"type":"string"},"type":"array","maxItems":10,"minItems":2,"title":"Countries","description":"2–10 countries to compare"},"load_profile":{"type":"string","title":"Load Profile","description":"Sector load profile"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0}},"type":"object","required":["countries","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"CountryCompareRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"countries":["nigeria","south_africa","kenya","ghana"],"load_fraction":0.75,"load_profile":"manufacturing","nameplate_kva":500,"target_diesel_displacement_pct":70}},"CountryScreenRequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country to screen all sectors for"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0}},"type":"object","required":["country","avg_daily_load_kwh","nameplate_kva"],"title":"CountryScreenRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","load_fraction":0.75,"nameplate_kva":500,"target_diesel_displacement_pct":70}},"FullAnalysisRequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country code."},"load_profile":{"type":"string","title":"Load Profile","description":"Sector load profile."},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0},"project_life_yr":{"type":"integer","maximum":30.0,"minimum":10.0,"title":"Project Life Yr","description":"Financial model horizon in years","default":25},"discount_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Discount Rate Pct","description":"NPV discount rate (%). IFC Sub-Saharan benchmark: 10–12%","default":10.0},"irradiance_override_kwh_m2_yr":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Irradiance Override Kwh M2 Yr","description":"Override country irradiance with measured site data (kWh/m²/yr)"},"revenue_per_operating_hour_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Revenue Per Operating Hour Usd","description":"Business revenue per operating hour — quantifies productive loss from outages"},"debt_fraction_pct":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Debt Fraction Pct","description":"Debt share of total CAPEX for DSCR model (%). Typical Africa project finance: 60–75%","default":70.0},"loan_tenor_yr":{"type":"integer","maximum":20.0,"minimum":3.0,"title":"Loan Tenor Yr","description":"Loan tenor in years for DSCR model","default":10},"interest_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Interest Rate Pct","description":"Loan interest rate (%). Africa commercial: 12–18%; DFI concessional: 6–10%","default":12.0},"carbon_standard":{"type":"string","title":"Carbon Standard","description":"Carbon credit standard: 'vcs' (Verra VCS VM0038) or 'gold_standard' (Gold Standard AMS-I.D.)","default":"vcs"}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"FullAnalysisRequest","example":{"avg_daily_load_kwh":4800,"backup_hours_target":6,"carbon_standard":"vcs","country":"south_africa","debt_fraction_pct":70,"discount_rate_pct":10,"interest_rate_pct":12.0,"load_fraction":0.75,"load_profile":"manufacturing","loan_tenor_yr":10,"nameplate_kva":1000,"project_life_yr":25,"revenue_per_operating_hour_usd":1200,"target_diesel_displacement_pct":75}},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PPARequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country code."},"load_profile":{"type":"string","title":"Load Profile","description":"Sector load profile."},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0},"ppa_tariff_usd_kwh":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Ppa Tariff Usd Kwh","description":"PPA tariff charged to customer (USD/kWh). Typical Africa C&I: $0.07–$0.12/kWh"},"ppa_escalation_pct_yr":{"type":"number","maximum":10.0,"minimum":0.0,"title":"Ppa Escalation Pct Yr","description":"Annual PPA tariff escalation (%). Typical: 1–2%","default":1.5},"developer_wacc_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Developer Wacc Pct","description":"Developer's weighted average cost of capital (%)","default":12.0},"project_life_yr":{"type":"integer","maximum":30.0,"minimum":10.0,"title":"Project Life Yr","default":25}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva","ppa_tariff_usd_kwh"],"title":"PPARequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","developer_wacc_pct":12.0,"load_fraction":0.75,"load_profile":"manufacturing","nameplate_kva":500,"ppa_escalation_pct_yr":1.5,"ppa_tariff_usd_kwh":0.09,"target_diesel_displacement_pct":70}},"QuickAnalysisRequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country code. See GET /reference/countries"},"load_profile":{"type":"string","title":"Load Profile","description":"Sector. See GET /reference/load-profiles"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh","description":"Average daily kWh consumption"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva","description":"Generator nameplate in kVA"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","description":"Generator load fraction (0.1–1.0)","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","description":"Target % diesel displacement","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","description":"BESS backup hours target","default":4.0}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"QuickAnalysisRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","load_fraction":0.75,"load_profile":"manufacturing","nameplate_kva":500,"target_diesel_displacement_pct":70}},"ScenarioRequest":{"properties":{"country":{"type":"string","title":"Country"},"load_profile":{"type":"string","title":"Load Profile"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0},"discount_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Discount Rate Pct","default":10.0},"debt_fraction_pct":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Debt Fraction Pct","default":70.0},"loan_tenor_yr":{"type":"integer","maximum":20.0,"minimum":3.0,"title":"Loan Tenor Yr","default":10},"interest_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Interest Rate Pct","default":12.0}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"ScenarioRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","debt_fraction_pct":70,"discount_rate_pct":10,"interest_rate_pct":12.0,"load_fraction":0.75,"load_profile":"manufacturing","loan_tenor_yr":10,"nameplate_kva":500,"target_diesel_displacement_pct":70}},"SiteIrradianceRequest":{"properties":{"lat":{"type":"number","maximum":38.0,"minimum":-35.0,"title":"Lat","description":"Latitude (decimal degrees). Africa range: −35 to +38."},"lon":{"type":"number","maximum":52.0,"minimum":-18.0,"title":"Lon","description":"Longitude (decimal degrees). Africa range: −18 to +52."}},"type":"object","required":["lat","lon"],"title":"SiteIrradianceRequest","example":{"lat":6.5244,"lon":3.3792}},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

All successful response definitions (HTTP 200) across the endpoints (e.g., /analyse/quick, /analyse/full, /analyse/batch, /analyse/bankable, /screen/country, /compare/countries, /reference/countries, etc.) have empty schemas ("schema": {}).\n\nWithout defined response schemas, client SDK generators, API documentation tools, and contract testing frameworks cannot understand or validate the structure of the returned data.\n\nPlease define and reference appropriate response schemas under components/schemas (e.g., QuickAnalysisResponse, FullAnalysisResponse, etc.) and reference them in the respective path responses.

Comment thread APIs/axiomii.co.uk/openapi.json Outdated
@@ -0,0 +1 @@
{"openapi":"3.1.0","info":{"title":"Diesel-to-Solar Hybrid Feasibility API","description":"Lender-grade pre-feasibility for replacing diesel generators with solar+BESS hybrid systems across 10 African C&I markets.\n\n**Engineering standards**: ISO 8528-1:2005 | NREL ATB 2024 | HOMER dispatch | PNNL-33283 LCOS | PVGIS-SARAH3 | IFC DSCR | Verra VCS carbon credits.\n\n**v3.0 additions**: GPS→PVGIS irradiance lookup | PPA/EaaS model | DSCR covenant table | 3-scenario analysis | IFC PS1 E&S checklist | Break-even & P90 fields.\n\n**Countries**: Nigeria, South Africa, Kenya, Ghana, Egypt, Tanzania, Ethiopia, Zambia, Senegal, Morocco.\n\n**Sectors**: Manufacturing, Commercial Office, Retail, Cold Chain, Telecoms, Hospital, Hotel, Agro-processing.\n\nEvery output equation is cited to its primary engineering source.","version":"3.0.0"},"paths":{"/health":{"get":{"tags":["System"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/pricing":{"get":{"tags":["System"],"summary":"Pricing","operationId":"pricing_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/analyse/quick":{"post":{"tags":["Analysis"],"summary":"Quick pre-feasibility with sensitivity and DSCR snapshot","description":"Diesel-to-solar pre-feasibility for a single site. **Free plan.**\n\nReturns a complete engineering and financial model including:\n- All-in diesel cost (ISO 8528-1:2005 fuel consumption model)\n- PV and BESS sizing (NREL ATB 2024 CAPEX; PVGIS-SARAH2 yield)\n- Merit-order dispatch: solar → BESS → generator\n- NPV, IRR, simple payback (25-year model, 3%/yr diesel escalation)\n- DSCR snapshot — lender bankability against IFC 1.30 threshold\n- Carbon credit estimate (Verra VCS VM0038)\n- FX risk level and IRR downside under currency stress\n- Sensitivity table: diesel ±20%/+40%, CAPEX ±10/20%, NPV at 8/10/12/15%\n- Generator wet-stacking health check (ISO 8528-1; Cummins 2002)\n- Thermal derating — ambient temperature correction on PV yield\n- Land area estimate (rooftop and ground-mount)\n\n25-year cashflow schedule available on Pro plan via `/analyse/full`.","operationId":"analyse_quick_analyse_quick_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/full":{"post":{"tags":["Analysis"],"summary":"Full lender-grade model — DSCR, carbon, FX, cashflows, SOH curve","description":"Full lender-grade engineering and financial model. **Pro plan required.**\n\nIncludes everything in `/analyse/quick` plus:\n- Complete 25-year annual cashflow schedule\n- Debt structuring: DSCR for each year over loan tenor, lender pass/fail\n- Carbon credit revenue (Verra VCS or Gold Standard — your choice)\n- FX risk level and IRR downside under currency stress\n- BESS State-of-Health degradation curve (phased fade to 80% SOH)\n- Full sensitivity matrix\n- Custom irradiance override — use your measured site data\n- Productive loss quantification from grid downtime (requires revenue/hr input)\n- Configurable: discount rate, project life, debt terms, carbon standard","operationId":"analyse_full_analyse_full_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/batch":{"post":{"tags":["Analysis"],"summary":"Screen up to 30 sites — fleet and portfolio analysis","description":"Batch analysis for up to 30 sites in a single call. **Pro plan required.**\n\nReturns per-site results ranked by IRR, plus portfolio totals:\n- Total CAPEX, annual savings, CO2 avoided, carbon credit revenue\n- DSCR lender pass/fail count across the portfolio\n- Sites grouped by viability rating (excellent / strong / viable / marginal)\n\nTypical use cases: tower company fleet screening; EPC pipeline quoting;\nDFI grant shortlist ranking; multi-site corporate energy review.","operationId":"analyse_batch_analyse_batch_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/bankable":{"post":{"tags":["Analysis"],"summary":"Structured lender package — all sections, bankable format","description":"Structured lender package — bankable pre-feasibility report format. **Pro plan required.**\n\nReturns a JSON object organised as a complete bankable feasibility report:\n- Section 1: Executive summary — headline KPIs, viability rating\n- Section 2: Country context — resource, grid, diesel, tax incentives\n- Section 3: Technical design — PV, BESS, dispatch, land, thermal derating\n- Section 4: Financial model — NPV, IRR, LCOE, 25-year cashflow schedule\n- Section 5: Debt structuring — DSCR per year, lender pass/fail, terms\n- Section 6: Risk analysis — sensitivity table, FX risk, generator health\n- Section 7: Carbon and ESG — CO2 savings, carbon credit pathway, SDG flags\n- Section 8: Engineering sources — all primary citations\n\nUse your PDF generation layer to convert this output into a branded client deliverable.\nSee `/reference/methodology` for full calculation methodology.","operationId":"analyse_bankable_analyse_bankable_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/screen/country":{"post":{"tags":["Screening"],"summary":"Screen all 8 sectors for one country — instant market map","description":"Screen all 8 sector load profiles for a single country in one call. **Free plan.**\n\nReturns all sectors ranked by IRR — instant market map for that country.\n\nAnswers: *\"Which sector has the strongest solar economics in Nigeria for my generator fleet size?\"*\n\nResults include DSCR lender flag, LCOE vs diesel, CO2, and viability rating per sector.","operationId":"screen_country_screen_country_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryScreenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compare/countries":{"post":{"tags":["Screening"],"summary":"Compare economics across countries for the same load","description":"Compare solar hybrid economics across 2–10 countries for the same load profile. **Free plan.**\n\nReturns countries ranked by IRR with key drivers surfaced per country:\ndiesel price differential, grid reliability, irradiance, incentives, FX risk.\n\nAnswers: *\"I operate manufacturing facilities across Nigeria, South Africa, Kenya and Ghana —\nwhere should I deploy my solar capital first?\"*","operationId":"compare_countries_compare_countries_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryCompareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reference/countries":{"get":{"tags":["Reference"],"summary":"Ref Countries","description":"Country reference data: irradiance, diesel price, grid reliability, FX risk, incentives.","operationId":"ref_countries_reference_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/load-profiles":{"get":{"tags":["Reference"],"summary":"Ref Load Profiles","description":"Load profile library with solar coincidence, BESS benefit, and daily cycle rates.","operationId":"ref_load_profiles_reference_load_profiles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/capex-benchmarks":{"get":{"tags":["Reference"],"summary":"Ref Capex","description":"CAPEX benchmarks for PV, BESS, and generators in the African C&I market.","operationId":"ref_capex_reference_capex_benchmarks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/methodology":{"get":{"tags":["Reference"],"summary":"Ref Methodology","description":"Full engineering methodology and primary source citations for all calculations.","operationId":"ref_methodology_reference_methodology_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/changelog":{"get":{"tags":["Reference"],"summary":"Ref Changelog","description":"Version history and engineering updates.","operationId":"ref_changelog_reference_changelog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/site/irradiance":{"post":{"tags":["Site Tools"],"summary":"GPS coordinates → PVGIS-SARAH3 site-specific irradiance","description":"Fetch site-specific annual irradiance from GPS coordinates using EU JRC PVGIS-SARAH3.\n\n**Free plan.** Results can be passed as `irradiance_override_kwh_m2_yr`\nto `/analyse/full` for site-accurate modelling.\n\nCrossBoundary (2021) found that generic country-average datasets overstate\nAfrica irradiance by up to 20%, causing 1–2% IRR overstatement. This endpoint\neliminates that systematic bias using 15-year Meteosat satellite data at ~3 km resolution.\n\nSource: EU JRC PVGIS v5.3. Huld et al. (2012) Solar Energy 86:1803-1815.","operationId":"site_irradiance_site_irradiance_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteIrradianceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/ppa":{"post":{"tags":["Analysis"],"summary":"PPA vs CAPEX dual-mode analysis — Energy-as-a-Service model","description":"Model both PPA/EaaS and CAPEX ownership structures side-by-side. **Pro plan required.**\n\nIn PPA/EaaS:\n- Developer owns and operates the system (zero CAPEX for customer)\n- Customer pays only per kWh consumed at fixed PPA tariff\n- Developer earns project IRR from PPA cashflows\n- Customer saves vs diesel from day one\n\nReturns: developer IRR, break-even tariff, customer savings vs diesel,\n25-year PPA revenue, crossover analysis.\n\nTemplate: CrossBoundary Energy EaaS — 20-country, $707M portfolio (2025).\nKamoa Copper DRC: 222 MWp + 526 MWh BESS, EaaS structure (April 2025).\n\nCitation: IFC (2023) Mobilizing Private Investment in Clean Energy Africa §3.2.","operationId":"analyse_ppa_analyse_ppa_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PPARequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/scenarios":{"post":{"tags":["Analysis"],"summary":"Three-scenario analysis — Conservative / Base / Optimistic","description":"Run Conservative / Base / Optimistic scenarios side-by-side. **Pro plan required.**\n\nIFC standard stress-test deltas (Sub-Saharan Africa C&I solar):\n- Conservative: P90 irradiance (−10%), diesel −20%, CAPEX +15%\n- Base: P50 irradiance, current diesel price, base CAPEX\n- Optimistic: irradiance +5%, diesel +20%, CAPEX −5%\n\nReturns a side-by-side table with IRR, NPV, payback, DSCR, and an\ninvestment decision string: INVEST / PROCEED WITH CONDITIONS / MARGINAL / DO NOT PROCEED.\n\nThis is the single output that every investment committee and DFI credit\nofficer requests. Required for IFC project finance approval packages.\n\nCitation: IRENA (2023) §4.6 risk framework. IFC (2023) §5 stress-test.\nArcadis (2025) sensitivity methodology. IEA PVPS Task 13 (2024) P90 definition.","operationId":"analyse_scenarios_analyse_scenarios_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/screen/es-checklist":{"get":{"tags":["Screening"],"summary":"IFC PS1 Environmental & Social pre-screening checklist","description":"Generate an IFC Performance Standards pre-screening checklist. **Free plan.**\n\nReturns structured PS1, PS2, PS3, PS6 requirements with:\n- IFC project category (A/B/C)\n- Equator Principles category\n- DFI eligibility list (AfDB SEFA, IFC, Proparco, REPP, KfW DEG, FMO etc.)\n- Line-by-line checklist with IFC PS reference and guidance notes\n\nAlmost all C&I rooftop and small ground-mount solar in Africa qualifies\nas Category B (site-specific, largely reversible impacts).\n\nThis checklist is required for any project seeking financing from an\nEquator Principles signatory bank or IFC-affiliated DFI.\n\nCitation: IFC Performance Standards on E&S Sustainability (2012).\nIFC Project 49569 Botswana Solar Phase 2 ESRS (2024) — Category B precedent.\nWorld Bank Equator Principles IV (2020). AfDB ISS Category 2 (2013).","operationId":"screen_es_checklist_screen_es_checklist_get","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","description":"Country code. See /reference/countries","title":"Country"},"description":"Country code. See /reference/countries"},{"name":"sector","in":"query","required":true,"schema":{"type":"string","description":"Sector. See /reference/load-profiles","title":"Sector"},"description":"Sector. See /reference/load-profiles"},{"name":"land_ha","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0,"description":"Estimated land area in hectares","default":0.5,"title":"Land Ha"},"description":"Estimated land area in hectares"},{"name":"has_bess","in":"query","required":false,"schema":{"type":"boolean","description":"Does the project include a BESS?","default":true,"title":"Has Bess"},"description":"Does the project include a BESS?"},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BatchAnalysisRequest":{"properties":{"sites":{"items":{"$ref":"#/components/schemas/BatchSiteItem"},"type":"array","maxItems":30,"minItems":1,"title":"Sites"},"project_life_yr":{"type":"integer","maximum":30.0,"minimum":10.0,"title":"Project Life Yr","default":25},"discount_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Discount Rate Pct","default":10.0}},"type":"object","required":["sites"],"title":"BatchAnalysisRequest","example":{"discount_rate_pct":10,"project_life_yr":25,"sites":[{"avg_daily_load_kwh":480,"backup_hours_target":8,"country":"nigeria","load_fraction":0.8,"load_profile":"telecoms_tower","nameplate_kva":100,"site_id":"tower_NG_001","target_diesel_displacement_pct":80},{"avg_daily_load_kwh":9600,"backup_hours_target":4,"country":"south_africa","load_fraction":0.7,"load_profile":"manufacturing","nameplate_kva":2000,"site_id":"factory_ZA_001","target_diesel_displacement_pct":60},{"avg_daily_load_kwh":1200,"backup_hours_target":6,"country":"kenya","load_fraction":0.85,"load_profile":"cold_chain","nameplate_kva":250,"site_id":"cold_KE_001","target_diesel_displacement_pct":55}]}},"BatchSiteItem":{"properties":{"site_id":{"type":"string","title":"Site Id","description":"Unique site identifier"},"country":{"type":"string","title":"Country"},"load_profile":{"type":"string","title":"Load Profile"},"avg_daily_load_kwh":{"type":"number","exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0}},"type":"object","required":["site_id","country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"BatchSiteItem"},"CountryCompareRequest":{"properties":{"countries":{"items":{"type":"string"},"type":"array","maxItems":10,"minItems":2,"title":"Countries","description":"2–10 countries to compare"},"load_profile":{"type":"string","title":"Load Profile","description":"Sector load profile"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0}},"type":"object","required":["countries","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"CountryCompareRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"countries":["nigeria","south_africa","kenya","ghana"],"load_fraction":0.75,"load_profile":"manufacturing","nameplate_kva":500,"target_diesel_displacement_pct":70}},"CountryScreenRequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country to screen all sectors for"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0}},"type":"object","required":["country","avg_daily_load_kwh","nameplate_kva"],"title":"CountryScreenRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","load_fraction":0.75,"nameplate_kva":500,"target_diesel_displacement_pct":70}},"FullAnalysisRequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country code."},"load_profile":{"type":"string","title":"Load Profile","description":"Sector load profile."},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0},"project_life_yr":{"type":"integer","maximum":30.0,"minimum":10.0,"title":"Project Life Yr","description":"Financial model horizon in years","default":25},"discount_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Discount Rate Pct","description":"NPV discount rate (%). IFC Sub-Saharan benchmark: 10–12%","default":10.0},"irradiance_override_kwh_m2_yr":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Irradiance Override Kwh M2 Yr","description":"Override country irradiance with measured site data (kWh/m²/yr)"},"revenue_per_operating_hour_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Revenue Per Operating Hour Usd","description":"Business revenue per operating hour — quantifies productive loss from outages"},"debt_fraction_pct":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Debt Fraction Pct","description":"Debt share of total CAPEX for DSCR model (%). Typical Africa project finance: 60–75%","default":70.0},"loan_tenor_yr":{"type":"integer","maximum":20.0,"minimum":3.0,"title":"Loan Tenor Yr","description":"Loan tenor in years for DSCR model","default":10},"interest_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Interest Rate Pct","description":"Loan interest rate (%). Africa commercial: 12–18%; DFI concessional: 6–10%","default":12.0},"carbon_standard":{"type":"string","title":"Carbon Standard","description":"Carbon credit standard: 'vcs' (Verra VCS VM0038) or 'gold_standard' (Gold Standard AMS-I.D.)","default":"vcs"}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"FullAnalysisRequest","example":{"avg_daily_load_kwh":4800,"backup_hours_target":6,"carbon_standard":"vcs","country":"south_africa","debt_fraction_pct":70,"discount_rate_pct":10,"interest_rate_pct":12.0,"load_fraction":0.75,"load_profile":"manufacturing","loan_tenor_yr":10,"nameplate_kva":1000,"project_life_yr":25,"revenue_per_operating_hour_usd":1200,"target_diesel_displacement_pct":75}},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PPARequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country code."},"load_profile":{"type":"string","title":"Load Profile","description":"Sector load profile."},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0},"ppa_tariff_usd_kwh":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Ppa Tariff Usd Kwh","description":"PPA tariff charged to customer (USD/kWh). Typical Africa C&I: $0.07–$0.12/kWh"},"ppa_escalation_pct_yr":{"type":"number","maximum":10.0,"minimum":0.0,"title":"Ppa Escalation Pct Yr","description":"Annual PPA tariff escalation (%). Typical: 1–2%","default":1.5},"developer_wacc_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Developer Wacc Pct","description":"Developer's weighted average cost of capital (%)","default":12.0},"project_life_yr":{"type":"integer","maximum":30.0,"minimum":10.0,"title":"Project Life Yr","default":25}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva","ppa_tariff_usd_kwh"],"title":"PPARequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","developer_wacc_pct":12.0,"load_fraction":0.75,"load_profile":"manufacturing","nameplate_kva":500,"ppa_escalation_pct_yr":1.5,"ppa_tariff_usd_kwh":0.09,"target_diesel_displacement_pct":70}},"QuickAnalysisRequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country code. See GET /reference/countries"},"load_profile":{"type":"string","title":"Load Profile","description":"Sector. See GET /reference/load-profiles"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh","description":"Average daily kWh consumption"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva","description":"Generator nameplate in kVA"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","description":"Generator load fraction (0.1–1.0)","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","description":"Target % diesel displacement","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","description":"BESS backup hours target","default":4.0}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"QuickAnalysisRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","load_fraction":0.75,"load_profile":"manufacturing","nameplate_kva":500,"target_diesel_displacement_pct":70}},"ScenarioRequest":{"properties":{"country":{"type":"string","title":"Country"},"load_profile":{"type":"string","title":"Load Profile"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0},"discount_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Discount Rate Pct","default":10.0},"debt_fraction_pct":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Debt Fraction Pct","default":70.0},"loan_tenor_yr":{"type":"integer","maximum":20.0,"minimum":3.0,"title":"Loan Tenor Yr","default":10},"interest_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Interest Rate Pct","default":12.0}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"ScenarioRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","debt_fraction_pct":70,"discount_rate_pct":10,"interest_rate_pct":12.0,"load_fraction":0.75,"load_profile":"manufacturing","loan_tenor_yr":10,"nameplate_kva":500,"target_diesel_displacement_pct":70}},"SiteIrradianceRequest":{"properties":{"lat":{"type":"number","maximum":38.0,"minimum":-35.0,"title":"Lat","description":"Latitude (decimal degrees). Africa range: −35 to +38."},"lon":{"type":"number","maximum":52.0,"minimum":-18.0,"title":"Lon","description":"Longitude (decimal degrees). Africa range: −18 to +52."}},"type":"object","required":["lat","lon"],"title":"SiteIrradianceRequest","example":{"lat":6.5244,"lon":3.3792}},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The API keys X-API-Key and X-RapidAPI-Key are defined as individual header parameters on almost every path. This is an anti-pattern in OpenAPI.\n\nInstead, you should define these security schemes in the components/securitySchemes section and apply them globally or per-route using the security property. This reduces duplication, improves readability, and allows client generators to handle authentication natively.\n\nFor example, add this to components:\njson\n"securitySchemes": {\n "ApiKeyAuth": {\n "type": "apiKey",\n "in": "header",\n "name": "X-API-Key"\n },\n "RapidApiKeyAuth": {\n "type": "apiKey",\n "in": "header",\n "name": "X-RapidAPI-Key"\n }\n}\n\nAnd then reference them at the root level or on specific paths:\njson\n"security": [\n { "ApiKeyAuth": [] },\n { "RapidApiKeyAuth": [] }\n]\n

Comment thread APIs/axiomii.co.uk/openapi.json Outdated
@@ -0,0 +1 @@
{"openapi":"3.1.0","info":{"title":"Diesel-to-Solar Hybrid Feasibility API","description":"Lender-grade pre-feasibility for replacing diesel generators with solar+BESS hybrid systems across 10 African C&I markets.\n\n**Engineering standards**: ISO 8528-1:2005 | NREL ATB 2024 | HOMER dispatch | PNNL-33283 LCOS | PVGIS-SARAH3 | IFC DSCR | Verra VCS carbon credits.\n\n**v3.0 additions**: GPS→PVGIS irradiance lookup | PPA/EaaS model | DSCR covenant table | 3-scenario analysis | IFC PS1 E&S checklist | Break-even & P90 fields.\n\n**Countries**: Nigeria, South Africa, Kenya, Ghana, Egypt, Tanzania, Ethiopia, Zambia, Senegal, Morocco.\n\n**Sectors**: Manufacturing, Commercial Office, Retail, Cold Chain, Telecoms, Hospital, Hotel, Agro-processing.\n\nEvery output equation is cited to its primary engineering source.","version":"3.0.0"},"paths":{"/health":{"get":{"tags":["System"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/pricing":{"get":{"tags":["System"],"summary":"Pricing","operationId":"pricing_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/analyse/quick":{"post":{"tags":["Analysis"],"summary":"Quick pre-feasibility with sensitivity and DSCR snapshot","description":"Diesel-to-solar pre-feasibility for a single site. **Free plan.**\n\nReturns a complete engineering and financial model including:\n- All-in diesel cost (ISO 8528-1:2005 fuel consumption model)\n- PV and BESS sizing (NREL ATB 2024 CAPEX; PVGIS-SARAH2 yield)\n- Merit-order dispatch: solar → BESS → generator\n- NPV, IRR, simple payback (25-year model, 3%/yr diesel escalation)\n- DSCR snapshot — lender bankability against IFC 1.30 threshold\n- Carbon credit estimate (Verra VCS VM0038)\n- FX risk level and IRR downside under currency stress\n- Sensitivity table: diesel ±20%/+40%, CAPEX ±10/20%, NPV at 8/10/12/15%\n- Generator wet-stacking health check (ISO 8528-1; Cummins 2002)\n- Thermal derating — ambient temperature correction on PV yield\n- Land area estimate (rooftop and ground-mount)\n\n25-year cashflow schedule available on Pro plan via `/analyse/full`.","operationId":"analyse_quick_analyse_quick_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuickAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/full":{"post":{"tags":["Analysis"],"summary":"Full lender-grade model — DSCR, carbon, FX, cashflows, SOH curve","description":"Full lender-grade engineering and financial model. **Pro plan required.**\n\nIncludes everything in `/analyse/quick` plus:\n- Complete 25-year annual cashflow schedule\n- Debt structuring: DSCR for each year over loan tenor, lender pass/fail\n- Carbon credit revenue (Verra VCS or Gold Standard — your choice)\n- FX risk level and IRR downside under currency stress\n- BESS State-of-Health degradation curve (phased fade to 80% SOH)\n- Full sensitivity matrix\n- Custom irradiance override — use your measured site data\n- Productive loss quantification from grid downtime (requires revenue/hr input)\n- Configurable: discount rate, project life, debt terms, carbon standard","operationId":"analyse_full_analyse_full_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/batch":{"post":{"tags":["Analysis"],"summary":"Screen up to 30 sites — fleet and portfolio analysis","description":"Batch analysis for up to 30 sites in a single call. **Pro plan required.**\n\nReturns per-site results ranked by IRR, plus portfolio totals:\n- Total CAPEX, annual savings, CO2 avoided, carbon credit revenue\n- DSCR lender pass/fail count across the portfolio\n- Sites grouped by viability rating (excellent / strong / viable / marginal)\n\nTypical use cases: tower company fleet screening; EPC pipeline quoting;\nDFI grant shortlist ranking; multi-site corporate energy review.","operationId":"analyse_batch_analyse_batch_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/bankable":{"post":{"tags":["Analysis"],"summary":"Structured lender package — all sections, bankable format","description":"Structured lender package — bankable pre-feasibility report format. **Pro plan required.**\n\nReturns a JSON object organised as a complete bankable feasibility report:\n- Section 1: Executive summary — headline KPIs, viability rating\n- Section 2: Country context — resource, grid, diesel, tax incentives\n- Section 3: Technical design — PV, BESS, dispatch, land, thermal derating\n- Section 4: Financial model — NPV, IRR, LCOE, 25-year cashflow schedule\n- Section 5: Debt structuring — DSCR per year, lender pass/fail, terms\n- Section 6: Risk analysis — sensitivity table, FX risk, generator health\n- Section 7: Carbon and ESG — CO2 savings, carbon credit pathway, SDG flags\n- Section 8: Engineering sources — all primary citations\n\nUse your PDF generation layer to convert this output into a branded client deliverable.\nSee `/reference/methodology` for full calculation methodology.","operationId":"analyse_bankable_analyse_bankable_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullAnalysisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/screen/country":{"post":{"tags":["Screening"],"summary":"Screen all 8 sectors for one country — instant market map","description":"Screen all 8 sector load profiles for a single country in one call. **Free plan.**\n\nReturns all sectors ranked by IRR — instant market map for that country.\n\nAnswers: *\"Which sector has the strongest solar economics in Nigeria for my generator fleet size?\"*\n\nResults include DSCR lender flag, LCOE vs diesel, CO2, and viability rating per sector.","operationId":"screen_country_screen_country_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryScreenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/compare/countries":{"post":{"tags":["Screening"],"summary":"Compare economics across countries for the same load","description":"Compare solar hybrid economics across 2–10 countries for the same load profile. **Free plan.**\n\nReturns countries ranked by IRR with key drivers surfaced per country:\ndiesel price differential, grid reliability, irradiance, incentives, FX risk.\n\nAnswers: *\"I operate manufacturing facilities across Nigeria, South Africa, Kenya and Ghana —\nwhere should I deploy my solar capital first?\"*","operationId":"compare_countries_compare_countries_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryCompareRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/reference/countries":{"get":{"tags":["Reference"],"summary":"Ref Countries","description":"Country reference data: irradiance, diesel price, grid reliability, FX risk, incentives.","operationId":"ref_countries_reference_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/load-profiles":{"get":{"tags":["Reference"],"summary":"Ref Load Profiles","description":"Load profile library with solar coincidence, BESS benefit, and daily cycle rates.","operationId":"ref_load_profiles_reference_load_profiles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/capex-benchmarks":{"get":{"tags":["Reference"],"summary":"Ref Capex","description":"CAPEX benchmarks for PV, BESS, and generators in the African C&I market.","operationId":"ref_capex_reference_capex_benchmarks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/methodology":{"get":{"tags":["Reference"],"summary":"Ref Methodology","description":"Full engineering methodology and primary source citations for all calculations.","operationId":"ref_methodology_reference_methodology_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/reference/changelog":{"get":{"tags":["Reference"],"summary":"Ref Changelog","description":"Version history and engineering updates.","operationId":"ref_changelog_reference_changelog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/site/irradiance":{"post":{"tags":["Site Tools"],"summary":"GPS coordinates → PVGIS-SARAH3 site-specific irradiance","description":"Fetch site-specific annual irradiance from GPS coordinates using EU JRC PVGIS-SARAH3.\n\n**Free plan.** Results can be passed as `irradiance_override_kwh_m2_yr`\nto `/analyse/full` for site-accurate modelling.\n\nCrossBoundary (2021) found that generic country-average datasets overstate\nAfrica irradiance by up to 20%, causing 1–2% IRR overstatement. This endpoint\neliminates that systematic bias using 15-year Meteosat satellite data at ~3 km resolution.\n\nSource: EU JRC PVGIS v5.3. Huld et al. (2012) Solar Energy 86:1803-1815.","operationId":"site_irradiance_site_irradiance_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteIrradianceRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/ppa":{"post":{"tags":["Analysis"],"summary":"PPA vs CAPEX dual-mode analysis — Energy-as-a-Service model","description":"Model both PPA/EaaS and CAPEX ownership structures side-by-side. **Pro plan required.**\n\nIn PPA/EaaS:\n- Developer owns and operates the system (zero CAPEX for customer)\n- Customer pays only per kWh consumed at fixed PPA tariff\n- Developer earns project IRR from PPA cashflows\n- Customer saves vs diesel from day one\n\nReturns: developer IRR, break-even tariff, customer savings vs diesel,\n25-year PPA revenue, crossover analysis.\n\nTemplate: CrossBoundary Energy EaaS — 20-country, $707M portfolio (2025).\nKamoa Copper DRC: 222 MWp + 526 MWh BESS, EaaS structure (April 2025).\n\nCitation: IFC (2023) Mobilizing Private Investment in Clean Energy Africa §3.2.","operationId":"analyse_ppa_analyse_ppa_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PPARequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/analyse/scenarios":{"post":{"tags":["Analysis"],"summary":"Three-scenario analysis — Conservative / Base / Optimistic","description":"Run Conservative / Base / Optimistic scenarios side-by-side. **Pro plan required.**\n\nIFC standard stress-test deltas (Sub-Saharan Africa C&I solar):\n- Conservative: P90 irradiance (−10%), diesel −20%, CAPEX +15%\n- Base: P50 irradiance, current diesel price, base CAPEX\n- Optimistic: irradiance +5%, diesel +20%, CAPEX −5%\n\nReturns a side-by-side table with IRR, NPV, payback, DSCR, and an\ninvestment decision string: INVEST / PROCEED WITH CONDITIONS / MARGINAL / DO NOT PROCEED.\n\nThis is the single output that every investment committee and DFI credit\nofficer requests. Required for IFC project finance approval packages.\n\nCitation: IRENA (2023) §4.6 risk framework. IFC (2023) §5 stress-test.\nArcadis (2025) sensitivity methodology. IEA PVPS Task 13 (2024) P90 definition.","operationId":"analyse_scenarios_analyse_scenarios_post","parameters":[{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenarioRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/screen/es-checklist":{"get":{"tags":["Screening"],"summary":"IFC PS1 Environmental & Social pre-screening checklist","description":"Generate an IFC Performance Standards pre-screening checklist. **Free plan.**\n\nReturns structured PS1, PS2, PS3, PS6 requirements with:\n- IFC project category (A/B/C)\n- Equator Principles category\n- DFI eligibility list (AfDB SEFA, IFC, Proparco, REPP, KfW DEG, FMO etc.)\n- Line-by-line checklist with IFC PS reference and guidance notes\n\nAlmost all C&I rooftop and small ground-mount solar in Africa qualifies\nas Category B (site-specific, largely reversible impacts).\n\nThis checklist is required for any project seeking financing from an\nEquator Principles signatory bank or IFC-affiliated DFI.\n\nCitation: IFC Performance Standards on E&S Sustainability (2012).\nIFC Project 49569 Botswana Solar Phase 2 ESRS (2024) — Category B precedent.\nWorld Bank Equator Principles IV (2020). AfDB ISS Category 2 (2013).","operationId":"screen_es_checklist_screen_es_checklist_get","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","description":"Country code. See /reference/countries","title":"Country"},"description":"Country code. See /reference/countries"},{"name":"sector","in":"query","required":true,"schema":{"type":"string","description":"Sector. See /reference/load-profiles","title":"Sector"},"description":"Sector. See /reference/load-profiles"},{"name":"land_ha","in":"query","required":false,"schema":{"type":"number","exclusiveMinimum":0,"description":"Estimated land area in hectares","default":0.5,"title":"Land Ha"},"description":"Estimated land area in hectares"},{"name":"has_bess","in":"query","required":false,"schema":{"type":"boolean","description":"Does the project include a BESS?","default":true,"title":"Has Bess"},"description":"Does the project include a BESS?"},{"name":"X-API-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Api-Key"}},{"name":"X-RapidAPI-Key","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Rapidapi-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"BatchAnalysisRequest":{"properties":{"sites":{"items":{"$ref":"#/components/schemas/BatchSiteItem"},"type":"array","maxItems":30,"minItems":1,"title":"Sites"},"project_life_yr":{"type":"integer","maximum":30.0,"minimum":10.0,"title":"Project Life Yr","default":25},"discount_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Discount Rate Pct","default":10.0}},"type":"object","required":["sites"],"title":"BatchAnalysisRequest","example":{"discount_rate_pct":10,"project_life_yr":25,"sites":[{"avg_daily_load_kwh":480,"backup_hours_target":8,"country":"nigeria","load_fraction":0.8,"load_profile":"telecoms_tower","nameplate_kva":100,"site_id":"tower_NG_001","target_diesel_displacement_pct":80},{"avg_daily_load_kwh":9600,"backup_hours_target":4,"country":"south_africa","load_fraction":0.7,"load_profile":"manufacturing","nameplate_kva":2000,"site_id":"factory_ZA_001","target_diesel_displacement_pct":60},{"avg_daily_load_kwh":1200,"backup_hours_target":6,"country":"kenya","load_fraction":0.85,"load_profile":"cold_chain","nameplate_kva":250,"site_id":"cold_KE_001","target_diesel_displacement_pct":55}]}},"BatchSiteItem":{"properties":{"site_id":{"type":"string","title":"Site Id","description":"Unique site identifier"},"country":{"type":"string","title":"Country"},"load_profile":{"type":"string","title":"Load Profile"},"avg_daily_load_kwh":{"type":"number","exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0}},"type":"object","required":["site_id","country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"BatchSiteItem"},"CountryCompareRequest":{"properties":{"countries":{"items":{"type":"string"},"type":"array","maxItems":10,"minItems":2,"title":"Countries","description":"2–10 countries to compare"},"load_profile":{"type":"string","title":"Load Profile","description":"Sector load profile"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0}},"type":"object","required":["countries","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"CountryCompareRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"countries":["nigeria","south_africa","kenya","ghana"],"load_fraction":0.75,"load_profile":"manufacturing","nameplate_kva":500,"target_diesel_displacement_pct":70}},"CountryScreenRequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country to screen all sectors for"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0}},"type":"object","required":["country","avg_daily_load_kwh","nameplate_kva"],"title":"CountryScreenRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","load_fraction":0.75,"nameplate_kva":500,"target_diesel_displacement_pct":70}},"FullAnalysisRequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country code."},"load_profile":{"type":"string","title":"Load Profile","description":"Sector load profile."},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0},"project_life_yr":{"type":"integer","maximum":30.0,"minimum":10.0,"title":"Project Life Yr","description":"Financial model horizon in years","default":25},"discount_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Discount Rate Pct","description":"NPV discount rate (%). IFC Sub-Saharan benchmark: 10–12%","default":10.0},"irradiance_override_kwh_m2_yr":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Irradiance Override Kwh M2 Yr","description":"Override country irradiance with measured site data (kWh/m²/yr)"},"revenue_per_operating_hour_usd":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Revenue Per Operating Hour Usd","description":"Business revenue per operating hour — quantifies productive loss from outages"},"debt_fraction_pct":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Debt Fraction Pct","description":"Debt share of total CAPEX for DSCR model (%). Typical Africa project finance: 60–75%","default":70.0},"loan_tenor_yr":{"type":"integer","maximum":20.0,"minimum":3.0,"title":"Loan Tenor Yr","description":"Loan tenor in years for DSCR model","default":10},"interest_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Interest Rate Pct","description":"Loan interest rate (%). Africa commercial: 12–18%; DFI concessional: 6–10%","default":12.0},"carbon_standard":{"type":"string","title":"Carbon Standard","description":"Carbon credit standard: 'vcs' (Verra VCS VM0038) or 'gold_standard' (Gold Standard AMS-I.D.)","default":"vcs"}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"FullAnalysisRequest","example":{"avg_daily_load_kwh":4800,"backup_hours_target":6,"carbon_standard":"vcs","country":"south_africa","debt_fraction_pct":70,"discount_rate_pct":10,"interest_rate_pct":12.0,"load_fraction":0.75,"load_profile":"manufacturing","loan_tenor_yr":10,"nameplate_kva":1000,"project_life_yr":25,"revenue_per_operating_hour_usd":1200,"target_diesel_displacement_pct":75}},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PPARequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country code."},"load_profile":{"type":"string","title":"Load Profile","description":"Sector load profile."},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0},"ppa_tariff_usd_kwh":{"type":"number","maximum":1.0,"exclusiveMinimum":0.0,"title":"Ppa Tariff Usd Kwh","description":"PPA tariff charged to customer (USD/kWh). Typical Africa C&I: $0.07–$0.12/kWh"},"ppa_escalation_pct_yr":{"type":"number","maximum":10.0,"minimum":0.0,"title":"Ppa Escalation Pct Yr","description":"Annual PPA tariff escalation (%). Typical: 1–2%","default":1.5},"developer_wacc_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Developer Wacc Pct","description":"Developer's weighted average cost of capital (%)","default":12.0},"project_life_yr":{"type":"integer","maximum":30.0,"minimum":10.0,"title":"Project Life Yr","default":25}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva","ppa_tariff_usd_kwh"],"title":"PPARequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","developer_wacc_pct":12.0,"load_fraction":0.75,"load_profile":"manufacturing","nameplate_kva":500,"ppa_escalation_pct_yr":1.5,"ppa_tariff_usd_kwh":0.09,"target_diesel_displacement_pct":70}},"QuickAnalysisRequest":{"properties":{"country":{"type":"string","title":"Country","description":"Country code. See GET /reference/countries"},"load_profile":{"type":"string","title":"Load Profile","description":"Sector. See GET /reference/load-profiles"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh","description":"Average daily kWh consumption"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva","description":"Generator nameplate in kVA"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","description":"Generator load fraction (0.1–1.0)","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","description":"Target % diesel displacement","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","description":"BESS backup hours target","default":4.0}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"QuickAnalysisRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","load_fraction":0.75,"load_profile":"manufacturing","nameplate_kva":500,"target_diesel_displacement_pct":70}},"ScenarioRequest":{"properties":{"country":{"type":"string","title":"Country"},"load_profile":{"type":"string","title":"Load Profile"},"avg_daily_load_kwh":{"type":"number","maximum":500000.0,"exclusiveMinimum":0.0,"title":"Avg Daily Load Kwh"},"nameplate_kva":{"type":"number","maximum":50000.0,"exclusiveMinimum":0.0,"title":"Nameplate Kva"},"load_fraction":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Load Fraction","default":0.75},"target_diesel_displacement_pct":{"type":"number","maximum":100.0,"exclusiveMinimum":0.0,"title":"Target Diesel Displacement Pct","default":70.0},"backup_hours_target":{"type":"number","maximum":24.0,"exclusiveMinimum":0.0,"title":"Backup Hours Target","default":4.0},"discount_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Discount Rate Pct","default":10.0},"debt_fraction_pct":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Debt Fraction Pct","default":70.0},"loan_tenor_yr":{"type":"integer","maximum":20.0,"minimum":3.0,"title":"Loan Tenor Yr","default":10},"interest_rate_pct":{"type":"number","maximum":30.0,"exclusiveMinimum":0.0,"title":"Interest Rate Pct","default":12.0}},"type":"object","required":["country","load_profile","avg_daily_load_kwh","nameplate_kva"],"title":"ScenarioRequest","example":{"avg_daily_load_kwh":2400,"backup_hours_target":4,"country":"nigeria","debt_fraction_pct":70,"discount_rate_pct":10,"interest_rate_pct":12.0,"load_fraction":0.75,"load_profile":"manufacturing","loan_tenor_yr":10,"nameplate_kva":500,"target_diesel_displacement_pct":70}},"SiteIrradianceRequest":{"properties":{"lat":{"type":"number","maximum":38.0,"minimum":-35.0,"title":"Lat","description":"Latitude (decimal degrees). Africa range: −35 to +38."},"lon":{"type":"number","maximum":52.0,"minimum":-18.0,"title":"Lon","description":"Longitude (decimal degrees). Africa range: −18 to +52."}},"type":"object","required":["lat","lon"],"title":"SiteIrradianceRequest","example":{"lat":6.5244,"lon":3.3792}},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The carbon_standard property in FullAnalysisRequest is documented to accept only 'vcs' or 'gold_standard', but it lacks an enum constraint in its schema definition.\n\nWithout an enum constraint, any arbitrary string can be sent in the request, bypassing schema-level validation.\n\nPlease add the enum constraint to the schema:\njson\n"carbon_standard": {\n "type": "string",\n "enum": ["vcs", "gold_standard"],\n "default": "vcs",\n "description": "Carbon credit standard: 'vcs' (Verra VCS VM0038) or 'gold_standard' (Gold Standard AMS-I.D.)"\n}\n

@bethelhash bethelhash left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Schema updated to OpenAPI 3.1.0 to resolve validation warnings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant