kpubdata 0.2.2__tar.gz → 0.2.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kpubdata-0.2.2 → kpubdata-0.2.3}/PKG-INFO +8 -2
- {kpubdata-0.2.2 → kpubdata-0.2.3}/README.md +7 -1
- {kpubdata-0.2.2 → kpubdata-0.2.3}/SUPPORTED_DATA.md +7 -1
- {kpubdata-0.2.2 → kpubdata-0.2.3}/pyproject.toml +1 -1
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/datago/adapter.py +14 -1
- kpubdata-0.2.3/src/kpubdata/providers/datago/catalogue.json +197 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/lofin/adapter.py +19 -5
- kpubdata-0.2.3/tests/fixtures/datago/success_apt_rent.json +55 -0
- kpubdata-0.2.3/tests/fixtures/datago/success_offi_rent.json +57 -0
- kpubdata-0.2.3/tests/fixtures/datago/success_offi_trade.json +57 -0
- kpubdata-0.2.3/tests/fixtures/datago/success_rh_rent.json +57 -0
- kpubdata-0.2.3/tests/fixtures/datago/success_rh_trade.json +61 -0
- kpubdata-0.2.3/tests/fixtures/datago/success_sh_rent.json +51 -0
- kpubdata-0.2.3/tests/fixtures/datago/success_sh_trade.json +55 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/providers/datago/test_adapter.py +95 -5
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/providers/datago/test_fixtures.py +101 -1
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/providers/lofin/test_lofin_adapter.py +35 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/uv.lock +1 -1
- kpubdata-0.2.2/src/kpubdata/providers/datago/catalogue.json +0 -92
- {kpubdata-0.2.2 → kpubdata-0.2.3}/.github/ISSUE_TEMPLATE/new-provider-adapter.yml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/.github/workflows/ci.yml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/.github/workflows/integration.yml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/.github/workflows/publish-pypi.yml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/.gitignore +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/.sisyphus/remove-get-record-plan.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/AGENTS.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/API_SPEC.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/ARCHITECTURE.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/CANONICAL_MODEL.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/CHANGELOG.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/CONTRIBUTING.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/LICENSE +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/PACKAGING.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/PRD.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/PROVIDER_ADAPTER_CONTRACT.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/ROADMAP.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/VALIDATION.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/adrs/0001-dialect-inspired-architecture.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/adrs/0002-standardize-ux-not-native-shape.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/architecture-diagrams.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/datago-api-reference.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/product-family-architecture.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/providers/bok.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/providers/datago.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/providers/kosis.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/quickstart.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/docs/tutorial-ai-agent-workflow.md +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/catalog.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/client.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/config.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/core/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/core/capability.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/core/dataset.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/core/models.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/core/protocol.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/core/representation.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/exceptions.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/_common.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/bok/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/bok/adapter.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/bok/catalogue.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/datago/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/kosis/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/kosis/adapter.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/kosis/catalogue.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/lofin/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/providers/lofin/catalogue.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/py.typed +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/registry.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/transport/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/transport/decode.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/transport/http.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/src/kpubdata/transport/retry.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/contract/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/contract/provider_adapter.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/contract/test_bok.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/contract/test_datago.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/contract/test_kosis.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/contract/test_lofin.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/bok/error_auth.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/bok/success_empty.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/bok/success_single_page.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/error_auth_30.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/error_invalid_request_10.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/error_rate_limit_22.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/error_service_unavailable_01.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/error_xml_auth_30.xml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/success_apt_trade.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/success_empty.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/success_multi_page_1.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/success_multi_page_2.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/success_single_item.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/success_single_page.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/success_string_numerics.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/success_xml.xml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/datago/success_xml_single_item.xml +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/kosis/error_auth.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/kosis/success_empty.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/kosis/success_single_page.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/lofin/error_auth.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/lofin/success_fiacrv.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/fixtures/lofin/success_single_page.json +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/integration/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/integration/conftest.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/integration/test_bok_live.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/integration/test_client_flow.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/integration/test_datago_live.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/integration/test_exception_propagation.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/integration/test_kosis_live.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/integration/test_lofin_live.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/integration/test_transport_http.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/core/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/core/test_dataset.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/core/test_dataset_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/core/test_exceptions.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/core/test_exceptions_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/core/test_models.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/core/test_models_fixtures.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/core/test_to_pandas.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/providers/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/providers/bok/test_bok_adapter.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/providers/datago/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/providers/datago/conftest.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/providers/datago/test_adapter_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/test_catalog.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/test_catalog_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/test_catalogue_validation.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/test_client_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/test_client_transport_requirements.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/test_config.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/test_config_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/test_registry.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/test_registry_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/__init__.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/test_decode.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/test_decode_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/test_http_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/test_http_coverage_extra.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/test_logging.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/test_retry.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/test_retry_after.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/test_retry_coverage.py +0 -0
- {kpubdata-0.2.2 → kpubdata-0.2.3}/tests/unit/transport/test_transport_requirements.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kpubdata
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.3
|
|
4
4
|
Summary: Dialect-inspired Python access framework for Korean public data
|
|
5
5
|
Author: Yeongseon Choe
|
|
6
6
|
License: MIT
|
|
@@ -340,6 +340,13 @@ print(df.head())
|
|
|
340
340
|
| 공공데이터포털 (`datago`) | 버스도착정보 (`bus_arrival`) | 지원 |
|
|
341
341
|
| 공공데이터포털 (`datago`) | 병원정보 (`hospital_info`) | 지원 |
|
|
342
342
|
| 공공데이터포털 (`datago`) | 아파트매매 실거래가 (`apt_trade`) | 지원 |
|
|
343
|
+
| 공공데이터포털 (`datago`) | 아파트 전월세 실거래가 (`apt_rent`) | 지원 |
|
|
344
|
+
| 공공데이터포털 (`datago`) | 오피스텔 매매 실거래가 (`offi_trade`) | 지원 |
|
|
345
|
+
| 공공데이터포털 (`datago`) | 오피스텔 전월세 실거래가 (`offi_rent`) | 지원 |
|
|
346
|
+
| 공공데이터포털 (`datago`) | 연립다세대 매매 실거래가 (`rh_trade`) | 지원 |
|
|
347
|
+
| 공공데이터포털 (`datago`) | 연립다세대 전월세 실거래가 (`rh_rent`) | 지원 |
|
|
348
|
+
| 공공데이터포털 (`datago`) | 단독/다가구 매매 실거래가 (`sh_trade`) | 지원 |
|
|
349
|
+
| 공공데이터포털 (`datago`) | 단독/다가구 전월세 실거래가 (`sh_rent`) | 지원 |
|
|
343
350
|
| 한국은행 ECOS (`bok`) | 기준금리 (`base_rate`) | 지원 |
|
|
344
351
|
| 통계청 KOSIS (`kosis`) | 인구이동 (`population_migration`) | 지원 |
|
|
345
352
|
| 지방재정365 (`lofin`) | 세출결산총괄 (`expenditure_budget`) | 지원 |
|
|
@@ -412,4 +419,3 @@ KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니
|
|
|
412
419
|
|
|
413
420
|
### v0.3
|
|
414
421
|
- 표준 코어를 기반으로 한 경량 [MCP](https://modelcontextprotocol.io/)(Model Context Protocol — AI 모델이 외부 도구를 사용하는 표준 규약) 어댑터 지원
|
|
415
|
-
|
|
@@ -303,6 +303,13 @@ print(df.head())
|
|
|
303
303
|
| 공공데이터포털 (`datago`) | 버스도착정보 (`bus_arrival`) | 지원 |
|
|
304
304
|
| 공공데이터포털 (`datago`) | 병원정보 (`hospital_info`) | 지원 |
|
|
305
305
|
| 공공데이터포털 (`datago`) | 아파트매매 실거래가 (`apt_trade`) | 지원 |
|
|
306
|
+
| 공공데이터포털 (`datago`) | 아파트 전월세 실거래가 (`apt_rent`) | 지원 |
|
|
307
|
+
| 공공데이터포털 (`datago`) | 오피스텔 매매 실거래가 (`offi_trade`) | 지원 |
|
|
308
|
+
| 공공데이터포털 (`datago`) | 오피스텔 전월세 실거래가 (`offi_rent`) | 지원 |
|
|
309
|
+
| 공공데이터포털 (`datago`) | 연립다세대 매매 실거래가 (`rh_trade`) | 지원 |
|
|
310
|
+
| 공공데이터포털 (`datago`) | 연립다세대 전월세 실거래가 (`rh_rent`) | 지원 |
|
|
311
|
+
| 공공데이터포털 (`datago`) | 단독/다가구 매매 실거래가 (`sh_trade`) | 지원 |
|
|
312
|
+
| 공공데이터포털 (`datago`) | 단독/다가구 전월세 실거래가 (`sh_rent`) | 지원 |
|
|
306
313
|
| 한국은행 ECOS (`bok`) | 기준금리 (`base_rate`) | 지원 |
|
|
307
314
|
| 통계청 KOSIS (`kosis`) | 인구이동 (`population_migration`) | 지원 |
|
|
308
315
|
| 지방재정365 (`lofin`) | 세출결산총괄 (`expenditure_budget`) | 지원 |
|
|
@@ -375,4 +382,3 @@ KPubData의 설계 철학과 사용 방법을 안내하는 문서 목록입니
|
|
|
375
382
|
|
|
376
383
|
### v0.3
|
|
377
384
|
- 표준 코어를 기반으로 한 경량 [MCP](https://modelcontextprotocol.io/)(Model Context Protocol — AI 모델이 외부 도구를 사용하는 표준 규약) 어댑터 지원
|
|
378
|
-
|
|
@@ -23,6 +23,13 @@
|
|
|
23
23
|
| 상태 | 검증 | 실API 최종 검증일 | Provider | Dataset ID | 데이터셋명 | 인증 | 공식 문서 | 비고 |
|
|
24
24
|
|---|---|---|---|---|---|---|---|---|
|
|
25
25
|
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `apt_trade` | 아파트매매 실거래가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 국토교통부 제공 |
|
|
26
|
+
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `apt_rent` | 아파트 전월세 실거래가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 국토교통부 제공 |
|
|
27
|
+
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `offi_trade` | 오피스텔 매매 실거래가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 국토교통부 제공 |
|
|
28
|
+
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `offi_rent` | 오피스텔 전월세 실거래가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 국토교통부 제공 |
|
|
29
|
+
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `rh_trade` | 연립다세대 매매 실거래가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 국토교통부 제공 |
|
|
30
|
+
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `rh_rent` | 연립다세대 전월세 실거래가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 국토교통부 제공 |
|
|
31
|
+
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `sh_trade` | 단독/다가구 매매 실거래가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 국토교통부 제공 |
|
|
32
|
+
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `sh_rent` | 단독/다가구 전월세 실거래가 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 국토교통부 제공 |
|
|
26
33
|
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `village_fcst` | 단기예보 조회서비스 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 기상청 제공 |
|
|
27
34
|
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `ultra_srt_ncst` | 초단기실황 조회서비스 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | 기상청 제공 |
|
|
28
35
|
| 지원 | 테스트 검증 | - | 공공데이터포털 (`datago`) | `air_quality` | 대기오염정보 조회서비스 | [공공데이터포털](https://www.data.go.kr) 서비스키 | [data.go.kr](https://www.data.go.kr) | |
|
|
@@ -41,7 +48,6 @@
|
|
|
41
48
|
|
|
42
49
|
| 상태 | Provider | Dataset ID | 데이터셋명 | 메모 |
|
|
43
50
|
|---|---|---|---|---|
|
|
44
|
-
| 예정 | 공공데이터포털 (`datago`) | `apt_rent` | 아파트 전월세 실거래가 | `apt_trade`와 인접한 확장 후보 |
|
|
45
51
|
| 예정 | 기상청 | `weather_forecast` | 동네예보 | provider/adapter 구조 확정 후 착수 |
|
|
46
52
|
|
|
47
53
|
## 갱신 규칙
|
|
@@ -29,6 +29,19 @@ from kpubdata.transport.http import HttpTransport, TransportConfig
|
|
|
29
29
|
logger = logging.getLogger("kpubdata.provider.datago")
|
|
30
30
|
|
|
31
31
|
|
|
32
|
+
def _is_success_code(code: str) -> bool:
|
|
33
|
+
"""Return True for any data.go.kr resultCode that signals success.
|
|
34
|
+
|
|
35
|
+
Different endpoint families use different widths for the "no error" code:
|
|
36
|
+
"00" (most APIs) and "000" (RTMS family under apis.data.go.kr/1613000).
|
|
37
|
+
Both — and any zero-valued numeric variant — should be treated as success.
|
|
38
|
+
"""
|
|
39
|
+
try:
|
|
40
|
+
return int(code) == 0
|
|
41
|
+
except ValueError:
|
|
42
|
+
return False
|
|
43
|
+
|
|
44
|
+
|
|
32
45
|
class DataGoAdapter:
|
|
33
46
|
"""Adapter for data.go.kr (공공데이터포털).
|
|
34
47
|
|
|
@@ -245,7 +258,7 @@ class DataGoAdapter:
|
|
|
245
258
|
"data.go.kr result",
|
|
246
259
|
extra={"result_code": result_code, "result_msg": result_msg, "dataset_id": dataset_id},
|
|
247
260
|
)
|
|
248
|
-
if result_code
|
|
261
|
+
if not _is_success_code(result_code):
|
|
249
262
|
self._raise_for_result_code(result_code, result_msg, dataset_id)
|
|
250
263
|
|
|
251
264
|
body_obj = response_dict.get("body")
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"dataset_key": "village_fcst",
|
|
4
|
+
"name": "동네예보 조회서비스 (Village Forecast)",
|
|
5
|
+
"base_url": "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0",
|
|
6
|
+
"default_operation": "getVilageFcst",
|
|
7
|
+
"representation": "api_json",
|
|
8
|
+
"service_key_param": "serviceKey",
|
|
9
|
+
"format_param": "dataType",
|
|
10
|
+
"description": "Korea Meteorological Administration short-range forecast",
|
|
11
|
+
"operations": ["list", "raw"],
|
|
12
|
+
"query_support": {
|
|
13
|
+
"pagination": "offset",
|
|
14
|
+
"max_page_size": 1000
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"dataset_key": "ultra_srt_ncst",
|
|
19
|
+
"name": "초단기실황 조회서비스 (Ultra Short-term Nowcast)",
|
|
20
|
+
"base_url": "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0",
|
|
21
|
+
"default_operation": "getUltraSrtNcst",
|
|
22
|
+
"representation": "api_json",
|
|
23
|
+
"service_key_param": "serviceKey",
|
|
24
|
+
"format_param": "dataType",
|
|
25
|
+
"description": "KMA ultra short-term observed weather conditions",
|
|
26
|
+
"operations": ["list", "raw"],
|
|
27
|
+
"query_support": {
|
|
28
|
+
"pagination": "offset",
|
|
29
|
+
"max_page_size": 1000
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"dataset_key": "air_quality",
|
|
34
|
+
"name": "대기오염정보 조회서비스 (Air Quality)",
|
|
35
|
+
"base_url": "http://apis.data.go.kr/B552584/ArpltnInforInqireSvc",
|
|
36
|
+
"default_operation": "getCtprvnRltmMesureDnsty",
|
|
37
|
+
"representation": "api_json",
|
|
38
|
+
"service_key_param": "serviceKey",
|
|
39
|
+
"format_param": "returnType",
|
|
40
|
+
"description": "AirKorea real-time particulate matter and atmospheric pollution",
|
|
41
|
+
"operations": ["list", "raw"],
|
|
42
|
+
"query_support": {
|
|
43
|
+
"pagination": "offset",
|
|
44
|
+
"max_page_size": 1000
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"dataset_key": "bus_arrival",
|
|
49
|
+
"name": "경기도 버스도착정보 조회서비스 (Bus Arrival)",
|
|
50
|
+
"base_url": "http://apis.data.go.kr/6410000/busarrivalservice",
|
|
51
|
+
"default_operation": "getBusArrivalList",
|
|
52
|
+
"representation": "api_json",
|
|
53
|
+
"service_key_param": "serviceKey",
|
|
54
|
+
"format_param": "_type",
|
|
55
|
+
"description": "Gyeonggi-do real-time bus arrival information",
|
|
56
|
+
"operations": ["list", "raw"],
|
|
57
|
+
"query_support": {
|
|
58
|
+
"pagination": "offset",
|
|
59
|
+
"max_page_size": 1000
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"dataset_key": "hospital_info",
|
|
64
|
+
"name": "병원정보서비스 (Hospital Information)",
|
|
65
|
+
"base_url": "http://apis.data.go.kr/B551182/hospInfoServicev2",
|
|
66
|
+
"default_operation": "getHospBasisList",
|
|
67
|
+
"representation": "api_json",
|
|
68
|
+
"service_key_param": "serviceKey",
|
|
69
|
+
"format_param": "_type",
|
|
70
|
+
"description": "Hospital basic information and medical institution lookup",
|
|
71
|
+
"operations": ["list", "raw"],
|
|
72
|
+
"query_support": {
|
|
73
|
+
"pagination": "offset",
|
|
74
|
+
"max_page_size": 1000
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"dataset_key": "apt_trade",
|
|
79
|
+
"name": "아파트매매 실거래자료 (Apartment Trade)",
|
|
80
|
+
"base_url": "http://apis.data.go.kr/1613000/RTMSDataSvcAptTradeDev",
|
|
81
|
+
"default_operation": "getRTMSDataSvcAptTradeDev",
|
|
82
|
+
"representation": "api_json",
|
|
83
|
+
"service_key_param": "serviceKey",
|
|
84
|
+
"format_param": "resultType",
|
|
85
|
+
"description": "MOLIT apartment trade real transaction data",
|
|
86
|
+
"operations": ["list", "raw"],
|
|
87
|
+
"query_support": {
|
|
88
|
+
"pagination": "offset",
|
|
89
|
+
"max_page_size": 1000
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"dataset_key": "apt_rent",
|
|
94
|
+
"name": "아파트 전월세 실거래자료 (Apartment Rent)",
|
|
95
|
+
"base_url": "http://apis.data.go.kr/1613000/RTMSDataSvcAptRent",
|
|
96
|
+
"default_operation": "getRTMSDataSvcAptRent",
|
|
97
|
+
"representation": "api_json",
|
|
98
|
+
"service_key_param": "serviceKey",
|
|
99
|
+
"format_param": "resultType",
|
|
100
|
+
"description": "MOLIT apartment rent real transaction data",
|
|
101
|
+
"operations": ["list", "raw"],
|
|
102
|
+
"query_support": {
|
|
103
|
+
"pagination": "offset",
|
|
104
|
+
"max_page_size": 1000
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"dataset_key": "offi_trade",
|
|
109
|
+
"name": "오피스텔 매매 실거래자료 (Officetel Trade)",
|
|
110
|
+
"base_url": "http://apis.data.go.kr/1613000/RTMSDataSvcOffiTrade",
|
|
111
|
+
"default_operation": "getRTMSDataSvcOffiTrade",
|
|
112
|
+
"representation": "api_json",
|
|
113
|
+
"service_key_param": "serviceKey",
|
|
114
|
+
"format_param": "resultType",
|
|
115
|
+
"description": "MOLIT officetel trade real transaction data",
|
|
116
|
+
"operations": ["list", "raw"],
|
|
117
|
+
"query_support": {
|
|
118
|
+
"pagination": "offset",
|
|
119
|
+
"max_page_size": 1000
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"dataset_key": "offi_rent",
|
|
124
|
+
"name": "오피스텔 전월세 실거래자료 (Officetel Rent)",
|
|
125
|
+
"base_url": "http://apis.data.go.kr/1613000/RTMSDataSvcOffiRent",
|
|
126
|
+
"default_operation": "getRTMSDataSvcOffiRent",
|
|
127
|
+
"representation": "api_json",
|
|
128
|
+
"service_key_param": "serviceKey",
|
|
129
|
+
"format_param": "resultType",
|
|
130
|
+
"description": "MOLIT officetel rent real transaction data",
|
|
131
|
+
"operations": ["list", "raw"],
|
|
132
|
+
"query_support": {
|
|
133
|
+
"pagination": "offset",
|
|
134
|
+
"max_page_size": 1000
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"dataset_key": "rh_trade",
|
|
139
|
+
"name": "연립다세대 매매 실거래자료 (Row House Trade)",
|
|
140
|
+
"base_url": "http://apis.data.go.kr/1613000/RTMSDataSvcRHTrade",
|
|
141
|
+
"default_operation": "getRTMSDataSvcRHTrade",
|
|
142
|
+
"representation": "api_json",
|
|
143
|
+
"service_key_param": "serviceKey",
|
|
144
|
+
"format_param": "resultType",
|
|
145
|
+
"description": "MOLIT row house trade real transaction data",
|
|
146
|
+
"operations": ["list", "raw"],
|
|
147
|
+
"query_support": {
|
|
148
|
+
"pagination": "offset",
|
|
149
|
+
"max_page_size": 1000
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"dataset_key": "rh_rent",
|
|
154
|
+
"name": "연립다세대 전월세 실거래자료 (Row House Rent)",
|
|
155
|
+
"base_url": "http://apis.data.go.kr/1613000/RTMSDataSvcRHRent",
|
|
156
|
+
"default_operation": "getRTMSDataSvcRHRent",
|
|
157
|
+
"representation": "api_json",
|
|
158
|
+
"service_key_param": "serviceKey",
|
|
159
|
+
"format_param": "resultType",
|
|
160
|
+
"description": "MOLIT row house rent real transaction data",
|
|
161
|
+
"operations": ["list", "raw"],
|
|
162
|
+
"query_support": {
|
|
163
|
+
"pagination": "offset",
|
|
164
|
+
"max_page_size": 1000
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"dataset_key": "sh_trade",
|
|
169
|
+
"name": "단독/다가구 매매 실거래자료 (Single House Trade)",
|
|
170
|
+
"base_url": "http://apis.data.go.kr/1613000/RTMSDataSvcSHTrade",
|
|
171
|
+
"default_operation": "getRTMSDataSvcSHTrade",
|
|
172
|
+
"representation": "api_json",
|
|
173
|
+
"service_key_param": "serviceKey",
|
|
174
|
+
"format_param": "resultType",
|
|
175
|
+
"description": "MOLIT single house trade real transaction data",
|
|
176
|
+
"operations": ["list", "raw"],
|
|
177
|
+
"query_support": {
|
|
178
|
+
"pagination": "offset",
|
|
179
|
+
"max_page_size": 1000
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"dataset_key": "sh_rent",
|
|
184
|
+
"name": "단독/다가구 전월세 실거래자료 (Single House Rent)",
|
|
185
|
+
"base_url": "http://apis.data.go.kr/1613000/RTMSDataSvcSHRent",
|
|
186
|
+
"default_operation": "getRTMSDataSvcSHRent",
|
|
187
|
+
"representation": "api_json",
|
|
188
|
+
"service_key_param": "serviceKey",
|
|
189
|
+
"format_param": "resultType",
|
|
190
|
+
"description": "MOLIT single house rent real transaction data",
|
|
191
|
+
"operations": ["list", "raw"],
|
|
192
|
+
"query_support": {
|
|
193
|
+
"pagination": "offset",
|
|
194
|
+
"max_page_size": 1000
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
]
|
|
@@ -15,12 +15,29 @@ from kpubdata.exceptions import (
|
|
|
15
15
|
)
|
|
16
16
|
from kpubdata.providers._common import build_schema_from_metadata, coerce_int, load_catalogue
|
|
17
17
|
from kpubdata.transport.decode import decode_json
|
|
18
|
-
from kpubdata.transport.http import HttpTransport, TransportConfig
|
|
18
|
+
from kpubdata.transport.http import HttpTransport, TransportConfig, TransportRequirements
|
|
19
19
|
|
|
20
20
|
logger = logging.getLogger("kpubdata.provider.lofin")
|
|
21
21
|
|
|
22
22
|
|
|
23
|
+
def _lofin_ssl_context() -> ssl.SSLContext:
|
|
24
|
+
"""Create an SSL context compatible with the LOFIN server.
|
|
25
|
+
|
|
26
|
+
The LOFIN server (www.lofin365.go.kr) uses TLSv1.2 with AES256-SHA256,
|
|
27
|
+
which requires a relaxed security level in OpenSSL 3.x.
|
|
28
|
+
"""
|
|
29
|
+
ctx = ssl.create_default_context()
|
|
30
|
+
ctx.check_hostname = False
|
|
31
|
+
ctx.verify_mode = ssl.CERT_NONE
|
|
32
|
+
ctx.set_ciphers("DEFAULT:@SECLEVEL=1")
|
|
33
|
+
return ctx
|
|
34
|
+
|
|
35
|
+
|
|
23
36
|
class LofinAdapter:
|
|
37
|
+
transport_requirements: TransportRequirements = TransportRequirements(
|
|
38
|
+
ssl_context_factory=_lofin_ssl_context,
|
|
39
|
+
)
|
|
40
|
+
|
|
24
41
|
def __init__(
|
|
25
42
|
self,
|
|
26
43
|
*,
|
|
@@ -32,10 +49,7 @@ class LofinAdapter:
|
|
|
32
49
|
if transport is not None:
|
|
33
50
|
self._transport: HttpTransport = transport
|
|
34
51
|
else:
|
|
35
|
-
ssl_ctx =
|
|
36
|
-
ssl_ctx.check_hostname = False
|
|
37
|
-
ssl_ctx.verify_mode = ssl.CERT_NONE
|
|
38
|
-
ssl_ctx.set_ciphers("DEFAULT:@SECLEVEL=1")
|
|
52
|
+
ssl_ctx = _lofin_ssl_context()
|
|
39
53
|
transport_config = TransportConfig(
|
|
40
54
|
timeout=self._config.timeout,
|
|
41
55
|
max_retries=self._config.max_retries,
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"response": {
|
|
3
|
+
"header": {
|
|
4
|
+
"resultCode": "00",
|
|
5
|
+
"resultMsg": "NORMAL SERVICE."
|
|
6
|
+
},
|
|
7
|
+
"body": {
|
|
8
|
+
"items": {
|
|
9
|
+
"item": [
|
|
10
|
+
{
|
|
11
|
+
"sggCd": "11680",
|
|
12
|
+
"umdNm": "역삼동",
|
|
13
|
+
"aptNm": "역삼자이",
|
|
14
|
+
"jibun": "754-1",
|
|
15
|
+
"excluUseAr": "84.97",
|
|
16
|
+
"dealYear": "2024",
|
|
17
|
+
"dealMonth": "2",
|
|
18
|
+
"dealDay": "14",
|
|
19
|
+
"deposit": "120,000",
|
|
20
|
+
"monthlyRent": "80",
|
|
21
|
+
"floor": "15",
|
|
22
|
+
"buildYear": "2016",
|
|
23
|
+
"contractTerm": "202402-202502",
|
|
24
|
+
"contractType": "갱신",
|
|
25
|
+
"useRRRight": "N",
|
|
26
|
+
"preDeposit": "115,000",
|
|
27
|
+
"preMonthlyRent": "75"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"sggCd": "41135",
|
|
31
|
+
"umdNm": "백현동",
|
|
32
|
+
"aptNm": "판교푸르지오그랑블",
|
|
33
|
+
"jibun": "531",
|
|
34
|
+
"excluUseAr": "59.88",
|
|
35
|
+
"dealYear": "2024",
|
|
36
|
+
"dealMonth": "3",
|
|
37
|
+
"dealDay": "8",
|
|
38
|
+
"deposit": "90,000",
|
|
39
|
+
"monthlyRent": "55",
|
|
40
|
+
"floor": "9",
|
|
41
|
+
"buildYear": "2011",
|
|
42
|
+
"contractTerm": "202403-202503",
|
|
43
|
+
"contractType": "신규",
|
|
44
|
+
"useRRRight": "N",
|
|
45
|
+
"preDeposit": "0",
|
|
46
|
+
"preMonthlyRent": "0"
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"numOfRows": 10,
|
|
51
|
+
"pageNo": 1,
|
|
52
|
+
"totalCount": 2
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"response": {
|
|
3
|
+
"header": {
|
|
4
|
+
"resultCode": "00",
|
|
5
|
+
"resultMsg": "NORMAL SERVICE."
|
|
6
|
+
},
|
|
7
|
+
"body": {
|
|
8
|
+
"items": {
|
|
9
|
+
"item": [
|
|
10
|
+
{
|
|
11
|
+
"sggCd": "11680",
|
|
12
|
+
"sggNm": "강남구",
|
|
13
|
+
"umdNm": "삼성동",
|
|
14
|
+
"jibun": "158-20",
|
|
15
|
+
"offiNm": "삼성 서초리버뷰",
|
|
16
|
+
"excluUseAr": "27.41",
|
|
17
|
+
"dealYear": "2024",
|
|
18
|
+
"dealMonth": "4",
|
|
19
|
+
"dealDay": "3",
|
|
20
|
+
"deposit": "30,000",
|
|
21
|
+
"monthlyRent": "120",
|
|
22
|
+
"floor": "14",
|
|
23
|
+
"buildYear": "2020",
|
|
24
|
+
"contractType": "신규",
|
|
25
|
+
"contractTerm": "202404-202504",
|
|
26
|
+
"useRRRight": "N",
|
|
27
|
+
"preDeposit": "0",
|
|
28
|
+
"preMonthlyRent": "0"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"sggCd": "41131",
|
|
32
|
+
"sggNm": "성남수정구",
|
|
33
|
+
"umdNm": "창곡동",
|
|
34
|
+
"jibun": "509",
|
|
35
|
+
"offiNm": "위례중앙타워",
|
|
36
|
+
"excluUseAr": "35.92",
|
|
37
|
+
"dealYear": "2024",
|
|
38
|
+
"dealMonth": "4",
|
|
39
|
+
"dealDay": "21",
|
|
40
|
+
"deposit": "20,000",
|
|
41
|
+
"monthlyRent": "95",
|
|
42
|
+
"floor": "7",
|
|
43
|
+
"buildYear": "2017",
|
|
44
|
+
"contractType": "갱신",
|
|
45
|
+
"contractTerm": "202404-202604",
|
|
46
|
+
"useRRRight": "Y",
|
|
47
|
+
"preDeposit": "18,000",
|
|
48
|
+
"preMonthlyRent": "90"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"numOfRows": 10,
|
|
53
|
+
"pageNo": 1,
|
|
54
|
+
"totalCount": 2
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"response": {
|
|
3
|
+
"header": {
|
|
4
|
+
"resultCode": "00",
|
|
5
|
+
"resultMsg": "NORMAL SERVICE."
|
|
6
|
+
},
|
|
7
|
+
"body": {
|
|
8
|
+
"items": {
|
|
9
|
+
"item": [
|
|
10
|
+
{
|
|
11
|
+
"sggCd": "11680",
|
|
12
|
+
"sggNm": "강남구",
|
|
13
|
+
"umdNm": "논현동",
|
|
14
|
+
"jibun": "211-21",
|
|
15
|
+
"offiNm": "논현 아이파크",
|
|
16
|
+
"excluUseAr": "29.76",
|
|
17
|
+
"dealYear": "2024",
|
|
18
|
+
"dealMonth": "1",
|
|
19
|
+
"dealDay": "19",
|
|
20
|
+
"dealAmount": "31,500",
|
|
21
|
+
"floor": "11",
|
|
22
|
+
"buildYear": "2018",
|
|
23
|
+
"cdealType": "-",
|
|
24
|
+
"cdealDay": "",
|
|
25
|
+
"dealingGbn": "중개거래",
|
|
26
|
+
"estateAgentSggNm": "서울 강남구",
|
|
27
|
+
"slerGbn": "개인",
|
|
28
|
+
"buyerGbn": "개인"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"sggCd": "26110",
|
|
32
|
+
"sggNm": "해운대구",
|
|
33
|
+
"umdNm": "우동",
|
|
34
|
+
"jibun": "1505",
|
|
35
|
+
"offiNm": "센텀스카이비즈",
|
|
36
|
+
"excluUseAr": "42.13",
|
|
37
|
+
"dealYear": "2024",
|
|
38
|
+
"dealMonth": "2",
|
|
39
|
+
"dealDay": "27",
|
|
40
|
+
"dealAmount": "22,800",
|
|
41
|
+
"floor": "18",
|
|
42
|
+
"buildYear": "2015",
|
|
43
|
+
"cdealType": "-",
|
|
44
|
+
"cdealDay": "",
|
|
45
|
+
"dealingGbn": "직거래",
|
|
46
|
+
"estateAgentSggNm": "",
|
|
47
|
+
"slerGbn": "법인",
|
|
48
|
+
"buyerGbn": "개인"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"numOfRows": 10,
|
|
53
|
+
"pageNo": 1,
|
|
54
|
+
"totalCount": 2
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"response": {
|
|
3
|
+
"header": {
|
|
4
|
+
"resultCode": "00",
|
|
5
|
+
"resultMsg": "NORMAL SERVICE."
|
|
6
|
+
},
|
|
7
|
+
"body": {
|
|
8
|
+
"items": {
|
|
9
|
+
"item": [
|
|
10
|
+
{
|
|
11
|
+
"sggCd": "11410",
|
|
12
|
+
"umdNm": "홍제동",
|
|
13
|
+
"mhouseNm": "홍제한솔빌",
|
|
14
|
+
"jibun": "330-45",
|
|
15
|
+
"buildYear": "2007",
|
|
16
|
+
"excluUseAr": "49.58",
|
|
17
|
+
"dealYear": "2024",
|
|
18
|
+
"dealMonth": "1",
|
|
19
|
+
"dealDay": "25",
|
|
20
|
+
"deposit": "35,000",
|
|
21
|
+
"monthlyRent": "25",
|
|
22
|
+
"floor": "2",
|
|
23
|
+
"contractTerm": "202401-202601",
|
|
24
|
+
"contractType": "갱신",
|
|
25
|
+
"useRRRight": "Y",
|
|
26
|
+
"preDeposit": "33,000",
|
|
27
|
+
"preMonthlyRent": "20",
|
|
28
|
+
"houseType": "다세대"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"sggCd": "28237",
|
|
32
|
+
"umdNm": "송도동",
|
|
33
|
+
"mhouseNm": "송도센트럴빌",
|
|
34
|
+
"jibun": "23-7",
|
|
35
|
+
"buildYear": "2014",
|
|
36
|
+
"excluUseAr": "66.02",
|
|
37
|
+
"dealYear": "2024",
|
|
38
|
+
"dealMonth": "3",
|
|
39
|
+
"dealDay": "11",
|
|
40
|
+
"deposit": "20,000",
|
|
41
|
+
"monthlyRent": "70",
|
|
42
|
+
"floor": "5",
|
|
43
|
+
"contractTerm": "202403-202503",
|
|
44
|
+
"contractType": "신규",
|
|
45
|
+
"useRRRight": "N",
|
|
46
|
+
"preDeposit": "0",
|
|
47
|
+
"preMonthlyRent": "0",
|
|
48
|
+
"houseType": "연립"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
"numOfRows": 10,
|
|
53
|
+
"pageNo": 1,
|
|
54
|
+
"totalCount": 2
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"response": {
|
|
3
|
+
"header": {
|
|
4
|
+
"resultCode": "00",
|
|
5
|
+
"resultMsg": "NORMAL SERVICE."
|
|
6
|
+
},
|
|
7
|
+
"body": {
|
|
8
|
+
"items": {
|
|
9
|
+
"item": [
|
|
10
|
+
{
|
|
11
|
+
"sggCd": "11440",
|
|
12
|
+
"umdNm": "연남동",
|
|
13
|
+
"mhouseNm": "연남그린빌",
|
|
14
|
+
"jibun": "487-12",
|
|
15
|
+
"buildYear": "2003",
|
|
16
|
+
"excluUseAr": "59.74",
|
|
17
|
+
"landAr": "31.20",
|
|
18
|
+
"dealYear": "2024",
|
|
19
|
+
"dealMonth": "2",
|
|
20
|
+
"dealDay": "6",
|
|
21
|
+
"dealAmount": "58,000",
|
|
22
|
+
"floor": "3",
|
|
23
|
+
"cdealType": "-",
|
|
24
|
+
"cdealDay": "",
|
|
25
|
+
"dealingGbn": "중개거래",
|
|
26
|
+
"estateAgentSggNm": "서울 마포구",
|
|
27
|
+
"rgstDate": "20240212",
|
|
28
|
+
"slerGbn": "개인",
|
|
29
|
+
"buyerGbn": "개인",
|
|
30
|
+
"houseType": "연립"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"sggCd": "11215",
|
|
34
|
+
"umdNm": "면목동",
|
|
35
|
+
"mhouseNm": "면목하이츠빌",
|
|
36
|
+
"jibun": "102-8",
|
|
37
|
+
"buildYear": "2010",
|
|
38
|
+
"excluUseAr": "72.11",
|
|
39
|
+
"landAr": "40.55",
|
|
40
|
+
"dealYear": "2024",
|
|
41
|
+
"dealMonth": "3",
|
|
42
|
+
"dealDay": "18",
|
|
43
|
+
"dealAmount": "41,500",
|
|
44
|
+
"floor": "4",
|
|
45
|
+
"cdealType": "-",
|
|
46
|
+
"cdealDay": "",
|
|
47
|
+
"dealingGbn": "직거래",
|
|
48
|
+
"estateAgentSggNm": "",
|
|
49
|
+
"rgstDate": "20240320",
|
|
50
|
+
"slerGbn": "개인",
|
|
51
|
+
"buyerGbn": "개인",
|
|
52
|
+
"houseType": "다세대"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"numOfRows": 10,
|
|
57
|
+
"pageNo": 1,
|
|
58
|
+
"totalCount": 2
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|