{"openapi":"3.1.0","info":{"title":"LocalGov.jp","version":"1.0.0","description":"中央省庁＋全国1,627市町村（目標1,718）の補助金・助成金 横断検索 API。 個人運営の公開データインフラ。","contact":{"email":"hello@localgov.jp","url":"https://localgov.jp"},"license":{"name":"Data: original government bodies; structuring layer: CC0"}},"servers":[{"url":"https://localgov.jp"}],"paths":{"/api/grants/search":{"get":{"summary":"補助金を検索","parameters":[{"name":"keyword","in":"query","schema":{"type":"string"},"description":"フリーテキスト検索（FTS5 trigram + LIKE fallback）"},{"name":"prefecture","in":"query","schema":{"type":"string"},"description":"都道府県名（例: 東京都）"},{"name":"municipality_code","in":"query","schema":{"type":"string","pattern":"^\\d{6}$"},"description":"JIS X 0402 市町村コード"},{"name":"open_only","in":"query","schema":{"type":"boolean"},"description":"募集中のみ"},{"name":"min_amount","in":"query","schema":{"type":"integer"},"description":"上限額の最低値（円）"},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","deadline_asc","amount_desc","newest"]}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":500,"default":20}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"検索結果（JSON）"}}}},"/api/grants/{id}":{"get":{"summary":"個別補助金の詳細を取得","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Accept","in":"header","schema":{"type":"string","enum":["application/json","text/markdown"]}}],"responses":{"200":{"description":"補助金詳細"},"404":{"description":"見つからない"}}}},"/api/grants/match":{"post":{"summary":"事業者プロファイルからマッチする補助金を提案","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"事業者状況の自由テキスト"},"prefecture":{"type":"string"},"municipality_code":{"type":"string"},"limit":{"type":"integer","maximum":50,"default":10}}}}}},"responses":{"200":{"description":"マッチング結果（関連度順）"}}}},"/api/local/{code}/grants":{"get":{"summary":"指定市町村の補助金一覧","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{6}$"}}],"responses":{"200":{"description":"市町村別補助金リスト"}}}},"/api/export/grants":{"post":{"summary":"バルクエクスポート（x402 課金）","description":"$0.10 USDC on Base via x402 micropayment。 全件JSON配列を返却。","responses":{"200":{"description":"バルクJSON"},"402":{"description":"x402 Payment Required"}}}},"/v1/health":{"get":{"summary":"ヘルスチェック（無料）","responses":{"200":{"description":"OK"}}}},"/v1/health/status":{"get":{"summary":"集計status（無料）","responses":{"200":{"description":"カウント・predicate"}}}},"/api/furusato/search":{"get":{"summary":"ふるさと納税 返礼品の横断検索","description":"自治体公式ふるさと納税ページから抽出した返礼品を検索。 FTS5 trigram (multilingual) + filter。","parameters":[{"name":"keyword","in":"query","schema":{"type":"string"}},{"name":"prefecture","in":"query","schema":{"type":"string"}},{"name":"muni_code","in":"query","schema":{"type":"string","pattern":"^\\d{6}$"}},{"name":"category","in":"query","schema":{"type":"string","enum":["food","craft","travel","event","other"]}},{"name":"subcategory","in":"query","schema":{"type":"string"}},{"name":"min_amount","in":"query","schema":{"type":"integer"}},{"name":"max_amount","in":"query","schema":{"type":"integer"}},{"name":"min_return_rate","in":"query","schema":{"type":"number"}},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","amount_asc","amount_desc","return_rate_desc","newest"]}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":200,"default":20}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"返礼品検索結果"}}}},"/api/furusato/{gift_id}":{"get":{"summary":"返礼品の詳細を取得","parameters":[{"name":"gift_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Accept","in":"header","schema":{"type":"string","enum":["application/json","text/markdown"]}}],"responses":{"200":{"description":"返礼品詳細 (JSON or Markdown)"},"404":{"description":"gift_id 不存在"}}}},"/api/furusato/municipalities/{muni_code}/gifts":{"get":{"summary":"指定自治体の active 返礼品一覧","parameters":[{"name":"muni_code","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{6}$"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":200,"default":50}}],"responses":{"200":{"description":"自治体別返礼品リスト"}}}},"/api/furusato/stats/{muni_code}":{"get":{"summary":"自治体別ふるさと納税統計 (受入額・受入件数・流出額 + 公式問い合わせ先 + schema.org)","parameters":[{"name":"muni_code","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{6}$"}}],"responses":{"200":{"description":"総務省統計 + 公式 contact + schema.org/GovernmentOrganization"}}}},"/api/furusato/limit":{"get":{"summary":"控除上限額シミュレーション (GET — querystring)","description":"総務省試算式の簡易版。 給与年収 + 家族構成 + 各種控除から実質負担¥2,000で済む寄付上限を概算。","parameters":[{"name":"annual_income_jpy","in":"query","required":true,"schema":{"type":"integer"}},{"name":"marital_status","in":"query","schema":{"type":"string","enum":["single","married"]}},{"name":"partner_income_jpy","in":"query","schema":{"type":"integer"}},{"name":"dependents_adult","in":"query","schema":{"type":"integer","maximum":20}},{"name":"dependents_elderly","in":"query","schema":{"type":"integer","maximum":20}},{"name":"dependents_university","in":"query","schema":{"type":"integer","maximum":20}},{"name":"dependents_minor","in":"query","schema":{"type":"integer","maximum":20}},{"name":"social_insurance_jpy","in":"query","schema":{"type":"integer"}},{"name":"other_deductions_jpy","in":"query","schema":{"type":"integer"}},{"name":"income_type","in":"query","schema":{"type":"string","enum":["salary","self_employed"]}}],"responses":{"200":{"description":"上限額の概算 + breakdown"}}},"post":{"summary":"控除上限額シミュレーション (POST — JSON body)","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["annual_income_jpy"],"properties":{"annual_income_jpy":{"type":"integer"},"marital_status":{"type":"string","enum":["single","married"]},"partner_income_jpy":{"type":"integer"},"dependents_adult":{"type":"integer","maximum":20},"dependents_elderly":{"type":"integer","maximum":20},"dependents_university":{"type":"integer","maximum":20},"dependents_minor":{"type":"integer","maximum":20},"social_insurance_jpy":{"type":"integer"},"other_deductions_jpy":{"type":"integer"},"income_type":{"type":"string","enum":["salary","self_employed"]}}}}}},"responses":{"200":{"description":"上限額の概算 + breakdown"}}}},"/api/furusato/portal_options/{gift_id}":{"get":{"summary":"寄付経路 (全ポータル並列 + 自治体公式直接) の一覧","description":"中立性ルール: 日次 rotation seed (UTC 日付ベース)、 アフィリエイト料率順での並べ替えなし、 municipality_direct を必ず併記。","parameters":[{"name":"gift_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"ポータル並列リスト + disclosure"}}}},"/api/furusato/cite/{gift_id}":{"get":{"summary":"引用ヘルパー — citation-grade source_url + markdown/html 文字列","parameters":[{"name":"gift_id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"citation envelope"}}}},"/api/furusato/semantic_search":{"get":{"summary":"Semantic search (Workers AI bge-m3 → Vectorize)。 binding 未活性化時は FTS5 fallback","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"prefecture","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"muni_code","in":"query","schema":{"type":"string","pattern":"^\\d{6}$"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":50,"default":10}}],"responses":{"200":{"description":"engine=workers_ai_bge_m3_v1 | fts5_fallback"}}}},"/api/furusato/coverage":{"get":{"summary":"網羅状況 (gifts/munis/prefectures カウント) + transparency note","responses":{"200":{"description":"coverage snapshot"}}}},"/api/furusato/recommend":{"get":{"summary":"AI rerank 推薦 ($0.50 paid)","description":"Phase 2 paid tier。 Haiku 4.5 が寄付者プロファイル fit で rerank。 KV キャッシュ (1h)。 API key 未設定時は deterministic ranking に fallback。","parameters":[{"name":"prefecture","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"subcategory","in":"query","schema":{"type":"string"}},{"name":"budget_min_jpy","in":"query","schema":{"type":"integer"}},{"name":"budget_max_jpy","in":"query","schema":{"type":"integer"}},{"name":"notes","in":"query","schema":{"type":"string","maxLength":500}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":30,"default":10}}],"responses":{"200":{"description":"推薦結果 + rerank_status"},"402":{"description":"x402 Payment Required"}}}},"/api/furusato/change_detect":{"get":{"summary":"furusato_events 差分 feed ($1.00 paid)","parameters":[{"name":"since_iso","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"muni_code","in":"query","schema":{"type":"string","pattern":"^\\d{6}$"}},{"name":"gift_id","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":500,"default":100}}],"responses":{"200":{"description":"差分イベント一覧"},"402":{"description":"x402 Payment Required"}}}},"/api/furusato/use_history/{muni_code}":{"get":{"summary":"寄付金使途実績 (年次・purpose 別、 citation 強化版) ($0.30 paid)","parameters":[{"name":"muni_code","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{6}$"}}],"responses":{"200":{"description":"使途実績 + _source_with_page"},"402":{"description":"x402 Payment Required"}}}},"/api/furusato/top_movers":{"get":{"summary":"イベント発生数の多い返礼品 Top N ($0.20 paid)","parameters":[{"name":"window","in":"query","schema":{"type":"string","enum":["24h","7d","30d"],"default":"24h"}},{"name":"limit","in":"query","schema":{"type":"integer","maximum":50,"default":10}},{"name":"prefecture","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"muni_code","in":"query","schema":{"type":"string","pattern":"^\\d{6}$"}}],"responses":{"200":{"description":"重み付け score でランクされた gifts"},"402":{"description":"x402 Payment Required"}}}},"/api/furusato/webhooks/subscribe":{"post":{"summary":"furusato push event subscription ($0.20 paid, TTL 30d)","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["callback_url","hmac_secret","filter"],"properties":{"callback_url":{"type":"string","format":"uri"},"hmac_secret":{"type":"string","minLength":16,"maxLength":256},"filter":{"type":"object","properties":{"muni_code":{"type":"string","pattern":"^\\d{6}$"},"category":{"type":"string"},"subcategory":{"type":"string"},"gift_id":{"type":"string"},"event_types":{"type":"array","items":{"type":"string"}}}},"ttl_days":{"type":"integer","minimum":1,"maximum":90,"default":30}}}}}},"responses":{"200":{"description":"subscription_id + expires_at"},"402":{"description":"x402 Payment Required"}}}},"/api/furusato/{gift_id}/price_history":{"get":{"summary":"返礼品の価格・還元率の時系列推移 ($0.30 paid)","parameters":[{"name":"gift_id","in":"path","required":true,"schema":{"type":"string"}},{"name":"days","in":"query","schema":{"type":"integer","minimum":7,"maximum":365,"default":90}}],"responses":{"200":{"description":"時系列の amount/rate changes"},"402":{"description":"x402 Payment Required"}}}}},"x-localgov-jp":{"llms_txt":"https://localgov.jp/llms.txt","x402_manifest":"https://localgov.jp/.well-known/x402","agentic_capabilities":"https://localgov.jp/.well-known/agentic-capabilities.json","sitemap":"https://localgov.jp/sitemap.xml","embed_widget":"https://localgov.jp/widget/embed","furusato_widget":"https://localgov.jp/widget/furusato-limit","furusato_coverage":"https://localgov.jp/.well-known/coverage-furusato.json","furusato_affiliate_disclosure":"https://localgov.jp/.well-known/affiliate-disclosure.json","furusato_affiliate_rates":"https://localgov.jp/.well-known/affiliate-rates.json"}}