{"openapi":"3.1.0","info":{"title":"CivicNZ API","description":"\n    CivicNZ is New Zealand's public-money watchdog. CivicIQ operates this API.\n\n    ## Public desks (free)\n    - **NZ Index** `/index` — experimental composite; observed official points only\n    - **Health / affordability / wellbeing** — official series with published verdict rules\n    - **Promises** — coalition and manifesto commitments with sourced status history\n    - **GETS tenders** — notices with day/month/year close and award dates\n    - **Government stats / value-for-money** — vfm-2.0 scorecards, not a 0–100 league\n\n    Paid high-volume and officer-graph routes live under `/paid/` (x402). Charity lookup\n    remains available; it is not the product.\n\n    ## Authentication\n    Most endpoints are public. Admin endpoints require `Authorization: Bearer <token>`.\n    ","contact":{"name":"The CivicIQ Team","email":"hello@civicnz.org"},"license":{"name":"To be determined"},"version":"1.0.0","x-guidance":"CivicIQ is the machine API for CivicNZ public-register data. Browse and search routes are free. Paid routes live under /paid/ and use x402 (HTTP 402) with Solana USDC. Discover them at GET /.well-known/x402 and GET /llms.txt. Call a /paid/ URL without X-PAYMENT to receive payment requirements, then retry with an x402 client such as x402-fetch or the Python x402 package."},"paths":{"/":{"get":{"tags":["root"],"summary":"Root endpoint","description":"API root endpoint with basic information.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"tags":["health"],"summary":"Root health check","description":"Basic health check endpoint at root level.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/":{"get":{"tags":["health","health"],"summary":"Health check","description":"Basic health check endpoint.\n    \n    Returns simple status to verify the API is running.","operationId":"health_health__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health/ready":{"get":{"tags":["health","health"],"summary":"Readiness check","description":"Readiness check endpoint (TODO).\n    \n    Should check:\n    - Database connectivity\n    - Config loaded successfully\n    - Baseline data available (if required)\n    \n    Currently returns basic status. Full implementation TODO.","operationId":"ready_health_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/charities/":{"get":{"tags":["charities","charities"],"summary":"List and search charities","description":"List charities with search, filtering, and pagination support.\n    \n    **Search:** Search by charity name or registration number\n    **Filters:** Filter by sector, revenue band, registration status\n    **Revenue Bands:** \"$10m+\", \"$1m-$10m\", \"$100k-$1m\", \"$10k-$100k\", \"Under $10k\"\n    **Pagination:** Results are paginated with configurable page size\n    \n    Returns a list of charity summaries with basic information.","operationId":"list_charities_charities__get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query (name or registration number)","title":"Q"},"description":"Search query (name or registration number)"},{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sector name","title":"Sector"},"description":"Filter by sector name"},{"name":"revenue_band","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by revenue band ($10m+, $1m-$10m, etc.)","title":"Revenue Band"},"description":"Filter by revenue band ($10m+, $1m-$10m, etc.)"},{"name":"min_score","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":0},{"type":"null"}],"description":"Minimum overall score (0-100)","title":"Min Score"},"description":"Minimum overall score (0-100)"},{"name":"registration_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by registration status","title":"Registration Status"},"description":"Filter by registration status"},{"name":"max_data_age","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":20,"minimum":1},{"type":"null"}],"description":"Max years since last filing (e.g., 5 = exclude charities with data older than 5 years)","title":"Max Data Age"},"description":"Max years since last filing (e.g., 5 = exclude charities with data older than 5 years)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number (1-indexed)","default":1,"title":"Page"},"description":"Page number (1-indexed)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page (max 100)","default":50,"title":"Limit"},"description":"Items per page (max 100)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharityListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charities/{organisation_id}/debug-ar":{"get":{"tags":["charities","charities","debug"],"summary":"Debug annual return linkage","description":"Debug endpoint to check annual return linkage for an organisation.","operationId":"debug_annual_returns_charities__organisation_id__debug_ar_get","parameters":[{"name":"organisation_id","in":"path","required":true,"schema":{"type":"integer","title":"Organisation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charities/{organisation_id}":{"get":{"tags":["charities","charities"],"summary":"Get charity profile","description":"Get detailed profile for a specific charity.\n    \n    Includes:\n    - Basic organisation information\n    - Latest scores for all 5 dimensions\n    - Annual return history (if include_history=true)\n    - Multi-year metrics and trends\n    - Filing patterns\n    \n    **History:** Set include_history=true to get up to 10 years of annual return data.","operationId":"get_charity_charities__organisation_id__get","parameters":[{"name":"organisation_id","in":"path","required":true,"schema":{"type":"integer","title":"Organisation Id"}},{"name":"include_history","in":"query","required":false,"schema":{"type":"boolean","description":"Include multi-year history","default":false,"title":"Include History"},"description":"Include multi-year history"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharityProfile"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charities/{organisation_id}/scores/explained":{"get":{"tags":["charities","charities","scores"],"summary":"Get detailed scoring breakdown","description":"Get a detailed breakdown of how scores were computed for a charity.\n    \n    Returns:\n    - Overall dimension scores\n    - Component metrics with values, scores, and weights\n    - Percentiles and comparisons\n    - Explanations (if available)\n    \n    Useful for understanding how scores are calculated and what factors contribute to each dimension.","operationId":"get_explained_scores_charities__organisation_id__scores_explained_get","parameters":[{"name":"organisation_id","in":"path","required":true,"schema":{"type":"integer","title":"Organisation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/charities/{organisation_id}/compute-scores":{"post":{"tags":["charities","charities","scores"],"summary":"Trigger score computation","description":"Manually trigger score computation for a charity.\n    \n    This endpoint computes all 5 dimension scores and stores them in the database.\n    Scores are typically computed automatically during ingestion, but this endpoint\n    allows manual recomputation (e.g., after data updates or scoring model changes).\n    \n    **Returns:** The computed scores for all dimensions.","operationId":"compute_charity_scores_charities__organisation_id__compute_scores_post","parameters":[{"name":"organisation_id","in":"path","required":true,"schema":{"type":"integer","title":"Organisation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scores/{organisation_id}":{"get":{"tags":["scores","scores"],"summary":"Get charity scores","description":"Get scores for a charity across all 5 dimensions.\n    \n    **Dimensions:**\n    - Financial Health\n    - Efficiency\n    - Governance Stability\n    - Filing Behaviour\n    - Transparency\n    \n    Optionally filter by a specific dimension.\n    \n    Returns scores with percentiles and explanations (if available).","operationId":"get_charity_scores_scores__organisation_id__get","parameters":[{"name":"organisation_id","in":"path","required":true,"schema":{"type":"integer","title":"Organisation Id"}},{"name":"dimension","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by dimension (optional)","title":"Dimension"},"description":"Filter by dimension (optional)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CharityScoreResponse"},"title":"Response Get Charity Scores Scores  Organisation Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/insights/{organisation_id}":{"get":{"tags":["insights","insights"],"summary":"Get comprehensive insights for a charity","description":"Returns structured insights including:\n    - Generated insights (list)\n    - Trends (if requested)\n    - Governance anomalies (if requested)\n    - Efficiency/transparency flags (if requested)\n    - Filing behaviour prediction (if requested)\n    \n    **LLM Explanations:** Set use_llm=true to generate AI-powered explanations (requires OpenAI API key).","operationId":"get_charity_insights_insights__organisation_id__get","parameters":[{"name":"organisation_id","in":"path","required":true,"schema":{"type":"integer","title":"Organisation Id"}},{"name":"use_llm","in":"query","required":false,"schema":{"type":"boolean","description":"Use LLM for enhanced insights","default":true,"title":"Use Llm"},"description":"Use LLM for enhanced insights"},{"name":"include_trends","in":"query","required":false,"schema":{"type":"boolean","description":"Include trend analysis","default":true,"title":"Include Trends"},"description":"Include trend analysis"},{"name":"include_anomalies","in":"query","required":false,"schema":{"type":"boolean","description":"Include governance anomalies","default":true,"title":"Include Anomalies"},"description":"Include governance anomalies"},{"name":"include_flags","in":"query","required":false,"schema":{"type":"boolean","description":"Include efficiency/transparency flags","default":true,"title":"Include Flags"},"description":"Include efficiency/transparency flags"},{"name":"include_prediction","in":"query","required":false,"schema":{"type":"boolean","description":"Include filing behaviour prediction","default":true,"title":"Include Prediction"},"description":"Include filing behaviour prediction"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Charity Insights Insights  Organisation Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/insights/query":{"post":{"tags":["insights","insights"],"summary":"Natural language insights query","description":"Accepts a natural language query and returns an LLM-generated answer\n    grounded in actual data from the system.\n    \n    **Example queries:**\n    - \"How has XYZ Trust's governance stability changed over time?\"\n    - \"What are the top performing charities in the arts sector?\"\n    - \"Compare financial health across medium-sized charities\"\n    \n    **LLM Required:** This endpoint requires LLM to be enabled and configured.","operationId":"natural_language_insights_insights_query_post","parameters":[{"name":"use_llm","in":"query","required":false,"schema":{"type":"boolean","description":"Use LLM for answer generation","default":true,"title":"Use Llm"},"description":"Use LLM for answer generation"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Natural Language Insights Insights Query Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stats/sector/{sector_name}/people-benchmarks":{"get":{"tags":["stats","stats"],"summary":"Get sector people/workforce benchmarks","description":"Get workforce and volunteer benchmarks for a specific sector.\n    \n    Returns:\n    - Average employees per $100K revenue\n    - Average volunteer hours\n    - Salary metrics\n    - Percentile distributions for comparison","operationId":"get_sector_people_benchmarks_stats_sector__sector_name__people_benchmarks_get","parameters":[{"name":"sector_name","in":"path","required":true,"schema":{"type":"string","title":"Sector Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stats/sector/{sector_name}":{"get":{"tags":["stats","stats"],"summary":"Get detailed sector analytics","description":"Get comprehensive analytics for a specific sector.\n    \n    Returns:\n    - Sector totals (charities, income, expenditure)\n    - Top charities in sector\n    - Income source breakdown\n    - Revenue band distribution within sector\n    - Growth trends","operationId":"get_sector_detail_stats_stats_sector__sector_name__get","parameters":[{"name":"sector_name","in":"path","required":true,"schema":{"type":"string","title":"Sector Name"}},{"name":"sector_id","in":"query","required":false,"schema":{"type":"integer","description":"Sector ID (alternative to name)","title":"Sector Id"},"description":"Sector ID (alternative to name)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stats/sector":{"get":{"tags":["stats","stats"],"summary":"Get sector statistics","description":"Get aggregate statistics for a specific sector.\n    \n    Returns:\n    - Total number of charities in sector\n    - Average scores per dimension\n    - Sample sizes for each dimension","operationId":"get_sector_stats_stats_sector_get","parameters":[{"name":"sector_id","in":"query","required":true,"schema":{"type":"integer","description":"Sector ID","title":"Sector Id"},"description":"Sector ID"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stats/overview":{"get":{"tags":["stats","stats"],"summary":"Get platform overview statistics","description":"Get platform-wide overview statistics.\n    \n    Returns:\n    - Total number of organisations\n    - Total scores computed\n    - Coverage percentage (scores vs. expected)","operationId":"get_overview_stats_stats_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/stats/dashboard":{"get":{"tags":["stats","stats"],"summary":"Get comprehensive dashboard statistics","description":"Get rich aggregate statistics for the browse dashboard.\n    \n    Returns:\n    - Platform totals (charities, income, expenditure)\n    - Revenue band distribution\n    - Sector distribution with income totals\n    - Top 15 charities by income\n    - Income source breakdown","operationId":"get_dashboard_stats_stats_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/compare/":{"get":{"tags":["compare","compare"],"summary":"Compare charities","description":"Comprehensive comparison endpoint supporting:\n    - Direct organisation comparison (via ids parameter)\n    - Filtered set comparison (via sector, activity, beneficiary, size_band, etc.)\n    \n    **Returns:**\n    - Scores for all 5 dimensions\n    - Percentiles (national, sector, size-band)\n    - Outlier detection flags\n    - Benchmark profiles (sector median, size-band mean, top 10% cutoff)\n    - Status labels per dimension\n    \n    **Filters:**\n    - sector: Filter by sector ID\n    - activity: Filter by activity ID\n    - beneficiary: Filter by beneficiary ID\n    - size_band: Filter by size band (small/medium/large)\n    - region: Filter by region\n    - kaupapa_maori: Filter by Kaupapa Māori status\n    - min_age_years: Minimum organisation age\n    \n    **Pagination:** Results are paginated with configurable page size.","operationId":"compare_charities_compare__get","parameters":[{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated organisation IDs (integers)","title":"Ids"},"description":"Comma-separated organisation IDs (integers)"},{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by sector ID","title":"Sector"},"description":"Filter by sector ID"},{"name":"activity","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by activity ID","title":"Activity"},"description":"Filter by activity ID"},{"name":"beneficiary","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by beneficiary ID","title":"Beneficiary"},"description":"Filter by beneficiary ID"},{"name":"size_band","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by size band (small/medium/large)","title":"Size Band"},"description":"Filter by size band (small/medium/large)"},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by region","title":"Region"},"description":"Filter by region"},{"name":"kaupapa_maori","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter by Kaupapa Māori status","title":"Kaupapa Maori"},"description":"Filter by Kaupapa Māori status"},{"name":"filing_tier","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by filing tier","title":"Filing Tier"},"description":"Filter by filing tier"},{"name":"min_age_years","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum organisation age in years","title":"Min Age Years"},"description":"Minimum organisation age in years"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Items per page","default":50,"title":"Limit"},"description":"Items per page"},{"name":"include_metrics","in":"query","required":false,"schema":{"type":"boolean","description":"Include raw metrics bundle","default":true,"title":"Include Metrics"},"description":"Include raw metrics bundle"},{"name":"include_percentiles","in":"query","required":false,"schema":{"type":"boolean","description":"Include percentile rankings","default":true,"title":"Include Percentiles"},"description":"Include percentile rankings"},{"name":"include_outliers","in":"query","required":false,"schema":{"type":"boolean","description":"Include outlier detection","default":true,"title":"Include Outliers"},"description":"Include outlier detection"},{"name":"include_benchmarks","in":"query","required":false,"schema":{"type":"boolean","description":"Include benchmark profiles","default":true,"title":"Include Benchmarks"},"description":"Include benchmark profiles"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Compare Charities Compare  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sectors/":{"get":{"tags":["sectors","sectors"],"summary":"List all sectors with summary statistics","description":"Returns a list of all available sectors along with summary statistics for each.\n    \n    Includes:\n    - Sector ID and name\n    - Total number of charities in sector\n    - Median income/expenditure","operationId":"list_sectors_sectors__get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Country code","default":"NZ","title":"Country Code"},"description":"Country code"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{},"title":"Response List Sectors Sectors  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sectors/{sector_id}/profile":{"get":{"tags":["sectors","sectors"],"summary":"Get detailed sector performance profile","description":"Returns a comprehensive performance profile for a specific sector.\n    \n    Includes:\n    - Score distributions (median, p25, p75) per dimension\n    - Sector-wide trends for key metrics\n    - Summary statistics (total charities, median income/expenditure)\n    \n    Optionally filter by size band.","operationId":"get_sector_profile_sectors__sector_id__profile_get","parameters":[{"name":"sector_id","in":"path","required":true,"schema":{"type":"integer","title":"Sector Id"}},{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Country code","default":"NZ","title":"Country Code"},"description":"Country code"},{"name":"size_band","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by size band","title":"Size Band"},"description":"Filter by size band"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Sector Profile Sectors  Sector Id  Profile Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lookup/activities":{"get":{"tags":["lookup","lookup"],"summary":"List all charity activities","description":"Returns a list of all defined charity activities (lookup table).\n    \n    Supports search by name and filtering by country code.","operationId":"list_activities_lookup_activities_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Country code","default":"NZ","title":"Country Code"},"description":"Country code"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query","title":"Q"},"description":"Search query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lookup/beneficiaries":{"get":{"tags":["lookup","lookup"],"summary":"List all beneficiary types","description":"Returns a list of all defined beneficiary types (lookup table).\n    \n    Supports search by name and filtering by country code.","operationId":"list_beneficiaries_lookup_beneficiaries_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Country code","default":"NZ","title":"Country Code"},"description":"Country code"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query","title":"Q"},"description":"Search query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lookup/sectors":{"get":{"tags":["lookup","lookup"],"summary":"List all charity sectors","description":"Returns a list of all defined charity sectors (lookup table).\n    \n    Supports search by name and filtering by country code.","operationId":"list_sectors_lookup_lookup_sectors_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Country code","default":"NZ","title":"Country Code"},"description":"Country code"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query","title":"Q"},"description":"Search query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lookup/areas":{"get":{"tags":["lookup","lookup"],"summary":"List all areas of operation","description":"Returns a list of all defined areas of operation (lookup table).\n    \n    Supports search by name and filtering by country code.","operationId":"list_areas_lookup_areas_get","parameters":[{"name":"country_code","in":"query","required":false,"schema":{"type":"string","description":"Country code","default":"NZ","title":"Country Code"},"description":"Country code"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search query","title":"Q"},"description":"Search query"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LookupListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard":{"get":{"tags":["dashboard"],"summary":"Dashboard","description":"Simple web dashboard to view system data.","operationId":"dashboard_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/simple-test":{"get":{"tags":["dashboard"],"summary":"Simple Test","description":"Ultra-simple test page.","operationId":"simple_test_simple_test_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/network/statistics":{"get":{"tags":["network","Network Intelligence"],"summary":"Get Network Statistics","description":"Get overall network statistics.\n\nOfficer names are grouped on a normalised key (case, whitespace,\npunctuation, Ltd/Limited). Counts split individuals from organisations\nsuch as trustee companies. Common personal names may refer to several\ndifferent people.","operationId":"get_network_statistics_network_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/network/professional-trustees":{"get":{"tags":["network","Network Intelligence"],"summary":"Get Professional Trustees","description":"Identify officers on multiple charity boards.\n\nDefaults to individuals. Corporate trustee companies are classified as\norganisations and are available with entity_type=organisation.\nGrouped names that are very common, or that span many unrelated sectors\nor regions, are flagged as possible_name_collision — they may refer to\nseveral different people.","operationId":"get_professional_trustees_network_professional_trustees_get","parameters":[{"name":"min_boards","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":2,"default":5,"title":"Min Boards"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"entity_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(individual|organisation|all)$","description":"individuals (default), organisations such as trustee companies, or all grouped officers","default":"individual","title":"Entity Type"},"description":"individuals (default), organisations such as trustee companies, or all grouped officers"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/network/multi-board-officers":{"get":{"tags":["network","Network Intelligence"],"summary":"Get Multi Board Officers","description":"Get officers serving on multiple charity boards.\n\nNames are grouped on a normalised key. Defaults to individuals so\ntrustee companies are not listed as people.","operationId":"get_multi_board_officers_network_multi_board_officers_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"entity_type","in":"query","required":false,"schema":{"type":"string","pattern":"^(individual|organisation|all)$","description":"individuals (default), organisations such as trustee companies, or all grouped officers","default":"individual","title":"Entity Type"},"description":"individuals (default), organisations such as trustee companies, or all grouped officers"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/network/charity/{organisation_id}/connections":{"get":{"tags":["network","Network Intelligence"],"summary":"Get Charity Connections","description":"Get network connections for a specific charity.\n\nReturns other charities connected through shared officers,\nhelping understand the broader network this charity operates in.","operationId":"get_charity_connections_network_charity__organisation_id__connections_get","parameters":[{"name":"organisation_id","in":"path","required":true,"schema":{"type":"integer","title":"Organisation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/network/match":{"get":{"tags":["network","Network Intelligence"],"summary":"Find Officer Matches","description":"Find potential matches for an officer name.\n\nUses name normalization and fuzzy matching to find potential\nmatches across the database. Useful for entity resolution\nand deduplication.","operationId":"find_officer_matches_network_match_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Officer name to match","title":"Name"},"description":"Officer name to match"},{"name":"min_score","in":"query","required":false,"schema":{"type":"number","maximum":1.0,"minimum":0.5,"default":0.7,"title":"Min Score"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/create-checkout-session":{"post":{"tags":["payments","payments"],"summary":"Create Checkout Session","description":"Create a Stripe Checkout session for subscription.","operationId":"create_checkout_session_payments_create_checkout_session_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/create-portal-session":{"post":{"tags":["payments","payments"],"summary":"Create Portal Session","description":"Create a Stripe Billing Portal session for managing subscription.","operationId":"create_portal_session_payments_create_portal_session_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalSessionResponse"}}}}}}},"/payments/webhook":{"post":{"tags":["payments","payments"],"summary":"Stripe Webhook","description":"Handle Stripe webhook events.\n\nImportant events:\n- customer.subscription.created\n- customer.subscription.updated\n- customer.subscription.deleted\n- invoice.payment_succeeded\n- invoice.payment_failed","operationId":"stripe_webhook_payments_webhook_post","parameters":[{"name":"Stripe-Signature","in":"header","required":false,"schema":{"type":"string","title":"Stripe-Signature"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/payments/prices":{"get":{"tags":["payments","payments"],"summary":"Get Prices","description":"Get available subscription prices.","operationId":"get_prices_payments_prices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/paid/officers/{officer_id}/connections":{"get":{"tags":["paid"],"summary":"Paid officer board connections (US$0.02)","description":"Officer board connections from public charity-register fields only. x402 price US$0.02 in Solana USDC.","operationId":"paid_officer_connections_paid_officers__officer_id__connections_get","parameters":[{"name":"officer_id","in":"path","required":true,"schema":{"type":"string","title":"Officer Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Payment Required — x402 Solana USDC challenge"},"503":{"description":"Paid access is not configured (X402_PAY_TO unset)"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.020000"},"protocols":[{"x402":{}}]}}},"/paid/tenders/search":{"get":{"tags":["paid"],"summary":"Paid government tender search (US$0.01)","description":"Search GETS procurement awards using the same filters as the free government procurement awards endpoint. x402 price US$0.01 in Solana USDC.","operationId":"paid_tenders_search_paid_tenders_search_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"department_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id"}},{"name":"supplier_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supplier Id"}},{"name":"tender_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Type"}},{"name":"min_value","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value"}},{"name":"max_value","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort: date, value, department","default":"date","title":"Sort By"},"description":"Sort: date, value, department"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Payment Required — x402 Solana USDC challenge"},"503":{"description":"Paid access is not configured (X402_PAY_TO unset)"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.010000"},"protocols":[{"x402":{}}]}}},"/paid/charities/{organisation_id}":{"get":{"tags":["paid"],"summary":"Paid charity profile (US$0.005)","description":"Charity profile using the same query as GET /charities/{id}. x402 price US$0.005 in Solana USDC.","operationId":"paid_charity_paid_charities__organisation_id__get","parameters":[{"name":"organisation_id","in":"path","required":true,"schema":{"type":"integer","title":"Organisation Id"}},{"name":"include_history","in":"query","required":false,"schema":{"type":"boolean","description":"Include multi-year history","default":false,"title":"Include History"},"description":"Include multi-year history"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Payment Required — x402 Solana USDC challenge"},"503":{"description":"Paid access is not configured (X402_PAY_TO unset)"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.005000"},"protocols":[{"x402":{}}]}}},"/.well-known/x402":{"get":{"tags":["discovery"],"summary":"x402 discovery manifest","description":"Machine-readable list of CivicIQ paid endpoints, prices, and schemas.","operationId":"well_known_x402__well_known_x402_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/llms.txt":{"get":{"tags":["discovery"],"summary":"LLM / agent briefing","description":"Plain-text index of CivicIQ paid and free endpoints for AI agents.","operationId":"llms_txt_endpoint_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/government/departments":{"get":{"tags":["government","government"],"summary":"List Departments","description":"List current central-government agencies by default.\n\nGETS posting agencies (councils, DHBs, shared-services names) stay in the\ndatabase for award linkage but are excluded from the default list and count.","operationId":"list_departments_government_departments_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Search by name","title":"Search"},"description":"Search by name"},{"name":"department_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Type"}},{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort field: name, type","default":"name","title":"Sort By"},"description":"Sort field: name, type"},{"name":"scope","in":"query","required":false,"schema":{"type":"string","description":"current = current central government; all = include councils and defunct","default":"current","title":"Scope"},"description":"current = current central government; all = include councils and defunct"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/departments/{slug}":{"get":{"tags":["government","government"],"summary":"Get Department","description":"Get full department profile by slug.","operationId":"get_department_government_departments__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/stats":{"get":{"tags":["government","government"],"summary":"Get Government Stats","description":"Get aggregate government watchdog statistics including data freshness.","operationId":"get_government_stats_government_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/government/insights":{"get":{"tags":["government","government"],"summary":"List Government Insights","description":"List government insights/findings.\n\nWithdrawn vfm-1.0 insights are never returned. Value-for-money findings\nbelong on /government/value-for-money (vfm-2.0). Spending σ-spikes and the\nSPE effectiveness classifier are not public alerts.","operationId":"list_government_insights_government_insights_get","parameters":[{"name":"department_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/data-quality":{"get":{"tags":["government","government"],"summary":"Get Data Quality","description":"Get data quality metrics for government datasets.\n\nReturns row counts, null percentages, duplicate counts, date quality flags,\nlinking rates, and last ingest time for each dataset.","operationId":"get_data_quality_government_data_quality_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/government/procurement/awards":{"get":{"tags":["government-procurement","government-procurement"],"summary":"List Procurement Awards","description":"Search and filter GETS tenders (historically named awards).","operationId":"list_procurement_awards_government_procurement_awards_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"department_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id"}},{"name":"supplier_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supplier Id"}},{"name":"tender_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Type"}},{"name":"min_value","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value"}},{"name":"max_value","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"closing_within_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":90,"minimum":0},{"type":"null"}],"description":"Only tenders closing within this many days","title":"Closing Within Days"},"description":"Only tenders closing within this many days"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort: date, value, department, closing","default":"date","title":"Sort By"},"description":"Sort: date, value, department, closing"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/procurement/tenders":{"get":{"tags":["government-procurement","government-procurement"],"summary":"List Procurement Tenders","description":"Alias of /awards — GETS records are tenders, not only awards.","operationId":"list_procurement_tenders_government_procurement_tenders_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"department_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id"}},{"name":"supplier_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supplier Id"}},{"name":"tender_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tender Type"}},{"name":"min_value","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min Value"}},{"name":"max_value","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Value"}},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"closing_within_days","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":90,"minimum":0},{"type":"null"}],"title":"Closing Within Days"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort: date, value, department, closing","default":"date","title":"Sort By"},"description":"Sort: date, value, department, closing"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/procurement/closing":{"get":{"tags":["government-procurement","government-procurement"],"summary":"Tenders Closing","description":"Tenders whose close date falls within the next ``days`` days.","operationId":"tenders_closing_government_procurement_closing_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/procurement/suppliers":{"get":{"tags":["government-procurement","government-procurement"],"summary":"List Suppliers","description":"List suppliers with aggregated procurement data.","operationId":"list_suppliers_government_procurement_suppliers_get","parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Sort: value, count, name","default":"value","title":"Sort By"},"description":"Sort: value, count, name"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/procurement/summary":{"get":{"tags":["government-procurement","government-procurement"],"summary":"Procurement Summary","description":"Get procurement / tender summary statistics.","operationId":"procurement_summary_government_procurement_summary_get","parameters":[{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/procurement/findings":{"get":{"tags":["government-procurement","government-procurement"],"summary":"Procurement Findings","description":"Auto-generated findings from live GETS and published insights.","operationId":"procurement_findings_government_procurement_findings_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":8,"minimum":1,"default":3,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/procurement/home":{"get":{"tags":["government-procurement","government-procurement"],"summary":"Procurement Home","description":"Homepage payload: stats, closing tenders, and three findings.","operationId":"procurement_home_government_procurement_home_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/government/oia/requests":{"get":{"tags":["government-oia","government-oia"],"summary":"List Oia Requests","description":"List OIA requests (public: only sent/responded, NOT drafts).","operationId":"list_oia_requests_government_oia_requests_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"department_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Department Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/oia/stats":{"get":{"tags":["government-oia","government-oia"],"summary":"Oia Stats","description":"Get OIA request statistics by status (public: only sent/responded, NOT drafts).","operationId":"oia_stats_government_oia_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/government/oia/overdue":{"get":{"tags":["government-oia","government-oia"],"summary":"Get Overdue Requests","description":"Get all overdue OIA requests (public: only sent, NOT drafts).","operationId":"get_overdue_requests_government_oia_overdue_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/government/value-for-money/status":{"get":{"tags":["government-value-for-money","government-value-for-money"],"summary":"Vfm Status","description":"Always-on method status. Never returns a vfm-1.0 grade.","operationId":"vfm_status_government_value_for_money_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/government/value-for-money/methodology":{"get":{"tags":["government-value-for-money","government-value-for-money"],"summary":"Vfm Methodology","operationId":"vfm_methodology_government_value_for_money_methodology_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/government/value-for-money/overview":{"get":{"tags":["government-value-for-money","government-value-for-money"],"summary":"Vfm Overview","operationId":"vfm_overview_government_value_for_money_overview_get","parameters":[{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/value-for-money":{"get":{"tags":["government-value-for-money","government-value-for-money"],"summary":"Vfm Leaderboard","operationId":"vfm_leaderboard_government_value_for_money_get","parameters":[{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(best|worst|rank)$","default":"rank","title":"Order"}},{"name":"include_insufficient","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Insufficient"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/value-for-money/leaderboard":{"get":{"tags":["government-value-for-money","government-value-for-money"],"summary":"Vfm Leaderboard Path","description":"Dedicated path so 'leaderboard' is never treated as a department slug.","operationId":"vfm_leaderboard_path_government_value_for_money_leaderboard_get","parameters":[{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(best|worst|rank)$","default":"rank","title":"Order"}},{"name":"include_insufficient","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Insufficient"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/value-for-money/{slug}":{"get":{"tags":["government-value-for-money","government-value-for-money"],"summary":"Vfm Department","operationId":"vfm_department_government_value_for_money__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/workforce/metrics":{"get":{"tags":["government-workforce","government-workforce"],"summary":"Workforce Metrics Catalog","description":"The set of comparable workforce metrics and how to render them.","operationId":"workforce_metrics_catalog_government_workforce_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/government/workforce/compare":{"get":{"tags":["government-workforce","government-workforce"],"summary":"Workforce Compare","description":"Cohort comparison table: every agency with metrics, peer percentiles and findings.","operationId":"workforce_compare_government_workforce_compare_get","parameters":[{"name":"sort_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Metric key to sort agencies by","title":"Sort By"},"description":"Metric key to sort agencies by"},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(asc|desc)$","default":"desc","title":"Order"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/workforce/{slug}":{"get":{"tags":["government-workforce","government-workforce"],"summary":"Workforce Department","description":"One agency's workforce profile benchmarked against peers, with findings.","operationId":"workforce_department_government_workforce__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/effectiveness":{"get":{"tags":["government-effectiveness","government-effectiveness"],"summary":"Effectiveness Leaderboard","operationId":"effectiveness_leaderboard_government_effectiveness_get","parameters":[{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","pattern":"^(best|worst)$","default":"worst","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":400,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/effectiveness/{slug}":{"get":{"tags":["government-effectiveness","government-effectiveness"],"summary":"Effectiveness Department","operationId":"effectiveness_department_government_effectiveness__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}},{"name":"fiscal_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fiscal Year"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promises/summary":{"get":{"tags":["promises"],"summary":"Promises Summary","description":"Free per-party delivered / in progress / broken shares.","operationId":"promises_summary_promises_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromiseSummary"}}}}}}},"/promises/methods":{"get":{"tags":["promises"],"summary":"Promises Methods","operationId":"promises_methods_promises_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MethodsCharter"}}}}}}},"/promises/vocab":{"get":{"tags":["promises"],"summary":"Promises Vocab","operationId":"promises_vocab_promises_vocab_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Promises Vocab Promises Vocab Get"}}}}}}},"/promises/outcomes":{"get":{"tags":["promises"],"summary":"Promises Outcomes","description":"Official NZ Index outcome series. Does not change promise statuses.","operationId":"promises_outcomes_promises_outcomes_get","parameters":[{"name":"area","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OutcomeIndicator"},"title":"Response Promises Outcomes Promises Outcomes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promises/policy-to-problem":{"get":{"tags":["promises"],"summary":"Promises Policy To Problem","description":"Completeness score: does an official quote name a worsening or lagging series?","operationId":"promises_policy_to_problem_promises_policy_to_problem_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Promises Policy To Problem Promises Policy To Problem Get"}}}}}}},"/promises/policy-to-problem/areas/{area}":{"get":{"tags":["promises"],"summary":"Promises Policy To Problem Area","operationId":"promises_policy_to_problem_area_promises_policy_to_problem_areas__area__get","parameters":[{"name":"area","in":"path","required":true,"schema":{"type":"string","title":"Area"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Promises Policy To Problem Area Promises Policy To Problem Areas  Area  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promises/policy-to-problem/parties/{party}":{"get":{"tags":["promises"],"summary":"Promises Policy To Problem Party","operationId":"promises_policy_to_problem_party_promises_policy_to_problem_parties__party__get","parameters":[{"name":"party","in":"path","required":true,"schema":{"type":"string","title":"Party"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Promises Policy To Problem Party Promises Policy To Problem Parties  Party  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promises":{"get":{"tags":["promises"],"summary":"Promises List","operationId":"promises_list_promises_get","parameters":[{"name":"party","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Party"}},{"name":"area","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"election_cycle","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Election Cycle"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromiseListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promises/{promise_id}":{"get":{"tags":["promises"],"summary":"Promises Detail","operationId":"promises_detail_promises__promise_id__get","parameters":[{"name":"promise_id","in":"path","required":true,"schema":{"type":"string","title":"Promise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Promise"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/promises/ingest/2026-manifesto":{"post":{"tags":["promises"],"summary":"Ingest 2026 Manifesto Stub","description":"Dry-run 2026 manifesto ingest. Returns candidates; does not publish statuses.","operationId":"ingest_2026_manifesto_stub_promises_ingest_2026_manifesto_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManifestoIngestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ingest 2026 Manifesto Stub Promises Ingest 2026 Manifesto Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/government/data-freshness/":{"get":{"tags":["government-data","government-data"],"summary":"Get Data Freshness","description":"Return the last successful run time for each government dataset.\n\nReturns:\n    dict: Mapping of pipeline names to last successful run timestamps","operationId":"get_data_freshness_government_data_freshness__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/government/data-freshness/summary":{"get":{"tags":["government-data","government-data"],"summary":"Get Freshness Summary","description":"Return a single 'data as of' timestamp for display.\n\nUses the oldest of the key datasets (GETS, Treasury, PSC) as the\nconservative 'data as of' date. Only marks data as 'current' if under 14 days old.\nCKAN is excluded until it has a working source (currently bot-checked).\n\nReturns:\n    dict: Single timestamp representing overall data freshness","operationId":"get_freshness_summary_government_data_freshness_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health-outcomes/summary":{"get":{"tags":["health-outcomes"],"summary":"Health Summary","description":"Free headline: are we getting healthier? Topic verdicts and top findings.","operationId":"health_summary_health_outcomes_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health-outcomes/topics":{"get":{"tags":["health-outcomes"],"summary":"Health Topics","operationId":"health_topics_health_outcomes_topics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health-outcomes/topics/{topic_id}":{"get":{"tags":["health-outcomes"],"summary":"Health Topic","operationId":"health_topic_health_outcomes_topics__topic_id__get","parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health-outcomes/findings":{"get":{"tags":["health-outcomes"],"summary":"Health Findings","operationId":"health_findings_health_outcomes_findings_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health-outcomes/sources":{"get":{"tags":["health-outcomes"],"summary":"Health Sources","operationId":"health_sources_health_outcomes_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health-outcomes/methods":{"get":{"tags":["health-outcomes"],"summary":"Health Methods","operationId":"health_methods_health_outcomes_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health-outcomes/gaps":{"get":{"tags":["health-outcomes"],"summary":"Health Gaps","operationId":"health_gaps_health_outcomes_gaps_get","parameters":[{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/index/":{"get":{"tags":["watchdog-index"],"summary":"Get Index","description":"Headline NZ Index with domains, indicators, sparklines and provenance.","operationId":"get_index_index__get","parameters":[{"name":"health","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Health"}},{"name":"housing","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Housing"}},{"name":"safety","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Safety"}},{"name":"affordability","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Affordability"}},{"name":"wellbeing","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Wellbeing"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/index":{"get":{"tags":["watchdog-index"],"summary":"Get Index","description":"Headline NZ Index with domains, indicators, sparklines and provenance.","operationId":"get_index_index_get","parameters":[{"name":"health","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Health"}},{"name":"housing","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Housing"}},{"name":"safety","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Safety"}},{"name":"affordability","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Affordability"}},{"name":"wellbeing","in":"query","required":false,"schema":{"anyOf":[{"type":"number","maximum":10,"minimum":0},{"type":"null"}],"title":"Wellbeing"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/index/spec":{"get":{"tags":["watchdog-index"],"summary":"Get Index Spec","operationId":"get_index_spec_index_spec_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/affordability/summary":{"get":{"tags":["affordability"],"summary":"Affordability Summary","description":"Free headline: is the cost of living easing? Topic verdicts and top findings.","operationId":"affordability_summary_affordability_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/affordability/topics":{"get":{"tags":["affordability"],"summary":"Affordability Topics","operationId":"affordability_topics_affordability_topics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/affordability/topics/{topic_id}":{"get":{"tags":["affordability"],"summary":"Affordability Topic","operationId":"affordability_topic_affordability_topics__topic_id__get","parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/affordability/findings":{"get":{"tags":["affordability"],"summary":"Affordability Findings","operationId":"affordability_findings_affordability_findings_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/affordability/sources":{"get":{"tags":["affordability"],"summary":"Affordability Sources","operationId":"affordability_sources_affordability_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/affordability/methods":{"get":{"tags":["affordability"],"summary":"Affordability Methods","operationId":"affordability_methods_affordability_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/affordability/gaps":{"get":{"tags":["affordability"],"summary":"Affordability Gaps","operationId":"affordability_gaps_affordability_gaps_get","parameters":[{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wellbeing/summary":{"get":{"tags":["wellbeing"],"summary":"Wellbeing Summary","description":"Free headline: how are we? Topic verdicts and top findings.","operationId":"wellbeing_summary_wellbeing_summary_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wellbeing/topics":{"get":{"tags":["wellbeing"],"summary":"Wellbeing Topics","operationId":"wellbeing_topics_wellbeing_topics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wellbeing/topics/{topic_id}":{"get":{"tags":["wellbeing"],"summary":"Wellbeing Topic","operationId":"wellbeing_topic_wellbeing_topics__topic_id__get","parameters":[{"name":"topic_id","in":"path","required":true,"schema":{"type":"string","title":"Topic Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wellbeing/findings":{"get":{"tags":["wellbeing"],"summary":"Wellbeing Findings","operationId":"wellbeing_findings_wellbeing_findings_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":12,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/wellbeing/sources":{"get":{"tags":["wellbeing"],"summary":"Wellbeing Sources","operationId":"wellbeing_sources_wellbeing_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wellbeing/methods":{"get":{"tags":["wellbeing"],"summary":"Wellbeing Methods","operationId":"wellbeing_methods_wellbeing_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/wellbeing/gaps":{"get":{"tags":["wellbeing"],"summary":"Wellbeing Gaps","operationId":"wellbeing_gaps_wellbeing_gaps_get","parameters":[{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Topic"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CharityListResponse":{"properties":{"charities":{"items":{"$ref":"#/components/schemas/CharitySummary"},"type":"array","title":"Charities"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["charities","total","page","limit"],"title":"CharityListResponse","description":"Paginated list of charities."},"CharityProfile":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"organisation_id":{"type":"integer","title":"Organisation Id"},"name":{"type":"string","title":"Name"},"charity_registration_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charity Registration Number"},"registration_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Status"},"registration_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Registration Date"},"main_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Sector"},"charitable_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charitable Purpose"},"main_activity":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Activity"},"main_beneficiary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Beneficiary"},"website_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Url"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"latest_return_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Return Year"},"data_age_years":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Data Age Years"},"data_freshness":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Freshness"},"data_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Data Confidence"},"scores":{"items":{"$ref":"#/components/schemas/CharityScoreResponse"},"type":"array","title":"Scores","default":[]},"insights":{"items":{"$ref":"#/components/schemas/Insight"},"type":"array","title":"Insights","default":[]},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics","default":{}},"history":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"History"},"trends":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Trends"},"governance_anomalies":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Governance Anomalies"}},"type":"object","required":["organisation_id","name"],"title":"CharityProfile","description":"Detailed charity profile."},"CharityScoreResponse":{"properties":{"dimension":{"type":"string","title":"Dimension"},"score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Score"},"percentile":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Percentile"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"},"baseline_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Baseline Value"},"computed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Computed At"}},"type":"object","required":["dimension"],"title":"CharityScoreResponse","description":"Score response model."},"CharitySummary":{"properties":{"id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Id"},"organisation_id":{"type":"integer","title":"Organisation Id"},"name":{"type":"string","title":"Name"},"charity_registration_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Charity Registration Number"},"registration_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Status"},"main_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Main Sector"},"revenue_band":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Revenue Band"},"latest_return_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Latest Return Year"},"data_freshness":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Freshness"}},"type":"object","required":["organisation_id","name"],"title":"CharitySummary","description":"Summary information for a charity."},"CheckoutSessionRequest":{"properties":{"priceId":{"type":"string","title":"Priceid"},"customerId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Customerid"},"successUrl":{"type":"string","title":"Successurl"},"cancelUrl":{"type":"string","title":"Cancelurl"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata"}},"type":"object","required":["priceId","successUrl","cancelUrl"],"title":"CheckoutSessionRequest"},"CheckoutSessionResponse":{"properties":{"url":{"type":"string","title":"Url"},"sessionId":{"type":"string","title":"Sessionid"}},"type":"object","required":["url","sessionId"],"title":"CheckoutSessionResponse"},"EvidenceLink":{"properties":{"title":{"type":"string","title":"Title"},"url":{"type":"string","title":"Url"},"date":{"type":"string","title":"Date"},"kind":{"type":"string","title":"Kind"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"needs_human_verification":{"type":"boolean","title":"Needs Human Verification","default":false}},"type":"object","required":["title","url","date","kind"],"title":"EvidenceLink"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Insight":{"properties":{"category":{"type":"string","title":"Category"},"severity":{"type":"string","title":"Severity"},"summary":{"type":"string","title":"Summary"},"evidence":{"additionalProperties":true,"type":"object","title":"Evidence","default":{}},"confidence":{"type":"number","title":"Confidence","default":0.5}},"type":"object","required":["category","severity","summary"],"title":"Insight","description":"Insight model."},"Lineage":{"properties":{"stage":{"type":"string","title":"Stage"},"coalition_fate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coalition Fate"},"manifesto_quote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manifesto Quote"},"manifesto_source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manifesto Source Url"},"related_ids":{"items":{"type":"string"},"type":"array","title":"Related Ids"}},"type":"object","required":["stage"],"title":"Lineage"},"LookupItem":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"country_code":{"type":"string","title":"Country Code"}},"type":"object","required":["id","name","country_code"],"title":"LookupItem","description":"Lookup table item."},"LookupListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LookupItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["items","total"],"title":"LookupListResponse","description":"List of lookup items."},"ManifestoIngestRequest":{"properties":{"party":{"type":"string","title":"Party"},"source_url":{"type":"string","maxLength":2083,"minLength":1,"format":"uri","title":"Source Url"},"source_title":{"type":"string","title":"Source Title"},"source_date":{"type":"string","title":"Source Date"},"text":{"type":"string","title":"Text"}},"type":"object","required":["party","source_url","source_title","source_date","text"],"title":"ManifestoIngestRequest"},"MethodsCharter":{"properties":{"title":{"type":"string","title":"Title"},"version":{"type":"string","title":"Version"},"principles":{"items":{"type":"string"},"type":"array","title":"Principles"},"status_rules":{"additionalProperties":{"type":"string"},"type":"object","title":"Status Rules"},"corrections":{"items":{"type":"string"},"type":"array","title":"Corrections"},"sources_policy":{"items":{"type":"string"},"type":"array","title":"Sources Policy"},"policy_to_problem":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Policy To Problem"}},"type":"object","required":["title","version","principles","status_rules","corrections","sources_policy"],"title":"MethodsCharter"},"OutcomeIndicator":{"properties":{"id":{"type":"string","title":"Id"},"area":{"type":"string","title":"Area"},"title":{"type":"string","title":"Title"},"unit":{"type":"string","title":"Unit"},"target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Target"},"source":{"$ref":"#/components/schemas/SourceDocument"},"series":{"items":{"$ref":"#/components/schemas/OutcomePoint"},"type":"array","title":"Series"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["id","area","title","unit","source"],"title":"OutcomeIndicator"},"OutcomePoint":{"properties":{"date":{"type":"string","title":"Date"},"value":{"type":"number","title":"Value"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","required":["date","value"],"title":"OutcomePoint"},"PartyShare":{"properties":{"party":{"type":"string","title":"Party"},"label":{"type":"string","title":"Label"},"total":{"type":"integer","title":"Total"},"delivered":{"type":"integer","title":"Delivered","default":0},"in_progress":{"type":"integer","title":"In Progress","default":0},"broken":{"type":"integer","title":"Broken","default":0},"not_started":{"type":"integer","title":"Not Started","default":0},"partially_delivered":{"type":"integer","title":"Partially Delivered","default":0},"dropped_in_coalition":{"type":"integer","title":"Dropped In Coalition","default":0},"delivered_share":{"type":"number","title":"Delivered Share","default":0.0},"in_progress_share":{"type":"number","title":"In Progress Share","default":0.0},"broken_share":{"type":"number","title":"Broken Share","default":0.0},"needs_human_verification":{"type":"integer","title":"Needs Human Verification","default":0}},"type":"object","required":["party","label","total"],"title":"PartyShare"},"PortalSessionResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"PortalSessionResponse"},"Promise":{"properties":{"id":{"type":"string","title":"Id"},"slug":{"type":"string","title":"Slug"},"title":{"type":"string","title":"Title"},"party":{"type":"string","title":"Party"},"also_parties":{"items":{"type":"string"},"type":"array","title":"Also Parties"},"policy_area":{"type":"string","title":"Policy Area"},"election_cycle":{"type":"string","title":"Election Cycle"},"lineage":{"$ref":"#/components/schemas/Lineage"},"source":{"$ref":"#/components/schemas/SourceDocument"},"verbatim_quote":{"type":"string","title":"Verbatim Quote"},"measurable_target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Measurable Target"},"current_status":{"type":"string","title":"Current Status"},"needs_human_verification":{"type":"boolean","title":"Needs Human Verification","default":true},"verification_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Notes"},"status_history":{"items":{"$ref":"#/components/schemas/StatusEvent"},"type":"array","title":"Status History"},"evidence":{"items":{"$ref":"#/components/schemas/EvidenceLink"},"type":"array","title":"Evidence"},"nz_index_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nz Index Area"},"outcome":{"anyOf":[{"$ref":"#/components/schemas/OutcomeIndicator"},{"type":"null"}]}},"type":"object","required":["id","slug","title","party","policy_area","election_cycle","lineage","source","verbatim_quote","current_status"],"title":"Promise"},"PromiseCard":{"properties":{"id":{"type":"string","title":"Id"},"slug":{"type":"string","title":"Slug"},"title":{"type":"string","title":"Title"},"party":{"type":"string","title":"Party"},"also_parties":{"items":{"type":"string"},"type":"array","title":"Also Parties"},"policy_area":{"type":"string","title":"Policy Area"},"current_status":{"type":"string","title":"Current Status"},"election_cycle":{"type":"string","title":"Election Cycle"},"source_date":{"type":"string","title":"Source Date"},"source_title":{"type":"string","title":"Source Title"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"},"needs_human_verification":{"type":"boolean","title":"Needs Human Verification"},"measurable_target":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Measurable Target"},"nz_index_href":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nz Index Href"},"lineage_stage":{"type":"string","title":"Lineage Stage"},"coalition_fate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coalition Fate"}},"type":"object","required":["id","slug","title","party","policy_area","current_status","election_cycle","source_date","source_title","needs_human_verification","lineage_stage"],"title":"PromiseCard","description":"Free list card — no verbatim dump, no full evidence trail."},"PromiseListResponse":{"properties":{"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"filters":{"additionalProperties":true,"type":"object","title":"Filters"},"items":{"items":{"$ref":"#/components/schemas/PromiseCard"},"type":"array","title":"Items"}},"type":"object","required":["total","limit","offset","filters","items"],"title":"PromiseListResponse"},"PromiseSummary":{"properties":{"election_cycle":{"type":"string","title":"Election Cycle"},"total":{"type":"integer","title":"Total"},"by_status":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Status"},"by_party":{"items":{"$ref":"#/components/schemas/PartyShare"},"type":"array","title":"By Party"},"by_area":{"additionalProperties":{"type":"integer"},"type":"object","title":"By Area"},"needs_human_verification":{"type":"integer","title":"Needs Human Verification"},"sources":{"items":{"$ref":"#/components/schemas/SourceDocument"},"type":"array","title":"Sources"},"methods_href":{"type":"string","title":"Methods Href","default":"/promises/methods"},"notes":{"items":{"type":"string"},"type":"array","title":"Notes"}},"type":"object","required":["election_cycle","total","by_status","by_party","by_area","needs_human_verification","sources"],"title":"PromiseSummary"},"QueryRequest":{"properties":{"query":{"type":"string","title":"Query"},"organisation_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Organisation Id"},"sector_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sector Id"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit","default":10}},"type":"object","required":["query"],"title":"QueryRequest","description":"Request model for natural language query."},"SourceDocument":{"properties":{"title":{"type":"string","title":"Title"},"url":{"type":"string","title":"Url"},"date":{"type":"string","title":"Date"},"publisher":{"type":"string","title":"Publisher"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["title","url","date","publisher"],"title":"SourceDocument"},"StatusEvent":{"properties":{"status":{"type":"string","title":"Status"},"date":{"type":"string","title":"Date"},"evidence":{"$ref":"#/components/schemas/EvidenceLink"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"needs_human_verification":{"type":"boolean","title":"Needs Human Verification","default":true}},"type":"object","required":["status","date","evidence"],"title":"StatusEvent"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}