{
  "openapi": "3.1.0",
  "info": {"title": "문고리닷컴 지역 인테리어 참고 인구 API", "version": "1.0.0", "description": "행정안전부 기반 자체 DB 공개 집계. 실제 시공비·검색량·수요 예측은 아님. 기준월과 출처를 함께 인용하고 상하위 지역을 중복 합산하지 마세요. next로 페이지를 순회합니다."},
  "servers": [{"url": "https://www.mungori.com/interior-data"}],
  "paths": {
    "/api.php": {"get": {
      "operationId": "searchRegionalInteriorData",
      "summary": "지역별 인구와 연령 비율 조회",
      "parameters": [
        {"name":"q","in":"query","description":"지역명 검색. 공백은 AND","schema":{"type":"string","maxLength":80}},
        {"name":"code","in":"query","schema":{"type":"string","pattern":"^[0-9]{10}$"}},
        {"name":"parent","in":"query","description":"직속 상위 지역코드","schema":{"type":"string","pattern":"^[0-9]{10}$"}},
        {"name":"level","in":"query","description":"0 전국, 1 시도, 2 시군구, 3 읍면동","schema":{"type":"integer","minimum":0,"maximum":3}},
        {"name":"month","in":"query","description":"보유 기준월 YYYYMM. 생략 시 DB 최신","schema":{"type":"string","pattern":"^20[0-9]{2}(0[1-9]|1[0-2])$"}},
        {"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":1000,"default":1000}},
        {"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":1000000,"default":0}},
        {"name":"format","in":"query","schema":{"type":"string","enum":["json","csv"],"default":"json"}}
      ],
      "responses": {
        "200":{"description":"조회 결과. 빈 검색은 data: []","content":{"application/json":{"schema":{"type":"object","properties":{
          "metadata":{"type":"object","properties":{"base_ym":{"type":"string"},"source":{"type":"string"},"source_url":{"type":"string"},"db_imported_at":{"type":"string","format":"date-time"},"limitations":{"type":"array","items":{"type":"string"}}}},
          "total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"},"next":{"type":["string","null"]},"previous":{"type":["string","null"]},
          "data":{"type":"array","items":{"type":"object","properties":{"base_ym":{"type":"string"},"region_cd":{"type":"string"},"parent_cd":{"type":["string","null"]},"region_nm":{"type":"string"},"level":{"type":"integer"},"pop":{"type":"integer"},"male":{"type":"integer"},"female":{"type":"integer"},"young14":{"type":"integer"},"adult":{"type":"integer"},"old65":{"type":"integer"},"young14_pct":{"type":["number","null"]},"adult_pct":{"type":["number","null"]},"old65_pct":{"type":["number","null"]},"avg_age":{"type":["number","null"]},"keywords":{"type":"array","items":{"type":"string"}},"url":{"type":"string","format":"uri"}}}}
        }}},"text/csv":{"schema":{"type":"string"}}}},
        "304":{"description":"ETag 동일"},"400":{"description":"잘못된 요청"},"404":{"description":"미보유 기준월"},"405":{"description":"미지원 메서드"},"503":{"description":"데이터 준비 중"}
      }
    }}
  }
}
