{ "schemaVersion": "1.0", "providerVersion": "1.0.0", "sourceSha256": "5515e5e002767ed895ea0442003829b0bad8fa9c7a0693ce6cdcbd65969b830f", "principles": { "officialSourcesOnly": true, "secretsNeverEnterUiTelemetryOrLogs": true, "providerFactsSeparatedFromKbxPolicy": true, "unknownLimitsAreNotInvented": true, "readOnlyByDefault": true, "domainWritesRequireSeparateIntegrationContract": true, "providerErrorNeverBecomesBusinessTruth": true }, "providers": [ { "id": "provider.krx.openapi", "title": "KRX Data Marketplace OPEN API", "ownerModule": "COMMON", "purpose": "market-data-readonly", "mutationAllowed": false, "officialSources": [ "https://openapi.krx.co.kr/contents/OPP/INFO/OPPINFO003.jsp", "https://openapi.krx.co.kr/contents/OPP/INFO/service/OPPINFO004.cmd" ], "official": { "approvalRequired": true, "authentication": { "type": "header-api-key", "headerName": "AUTH_KEY" }, "serviceUrlPolicy": "service-specific-from-approved-KRX-definition", "dataAvailabilityNote": "서비스 목록은 다수 데이터에 대해 2010년 이후 제공범위를 안내함", "numericRateLimit": null }, "kbxPolicy": { "allowedHostSuffix": ".krx.co.kr", "credentialKey": "ExternalProviders:Krx:AuthKey", "maxConcurrency": 2, "timeoutMs": 5000, "retryHttpStatuses": [ 408, 429, 500, 502, 503, 504 ], "maxRetryAttempts": 1, "serviceDefinitionRequired": true, "cacheable": true }, "operations": [ { "id": "krx.approved-service.invoke", "method": "provider-defined-read", "path": "provider-defined", "response": "json-or-xml", "notes": "실제 URL/메서드는 KRX에서 승인된 개별 서비스 명세를 구성값으로 등록. 저장소에서 추정하지 않음." } ] }, { "id": "provider.opendart", "title": "금융감독원 OPENDART OpenAPI", "ownerModule": "COMMON", "purpose": "disclosure-data-readonly", "mutationAllowed": false, "officialSources": [ "https://opendart.fss.or.kr/guide/detail.do?apiGrpCd=DS001&apiId=2019001", "https://opendart.fss.or.kr/guide/detail.do?apiGrpCd=DS001&apiId=2019002", "https://opendart.fss.or.kr/guide/detail.do?apiGrpCd=DS001&apiId=2019018" ], "official": { "baseUri": "https://opendart.fss.or.kr/api/", "authentication": { "type": "query-api-key", "parameterName": "crtfc_key", "length": 40 }, "statusField": "status", "messageField": "message", "statusCodes": { "100": "invalid-field", "101": "invalid-access", "800": "maintenance", "900": "undefined-error", "901": "expired-personal-data-retention", "000": "success", "010": "unregistered-key", "011": "disabled-key", "012": "forbidden-ip", "013": "no-data", "014": "file-missing", "020": "request-limit-exceeded", "021": "company-count-exceeded" }, "rateLimitNote": "020은 일반적으로 20,000건 이상의 요청에서 발생할 수 있으나 서비스별 제한이 다를 수 있음" }, "kbxPolicy": { "credentialKey": "ExternalProviders:OpenDart:ApiKey", "timeoutMs": 5000, "maxConcurrency": 2, "retryStatusCodes": [ "020", "800", "900" ], "maxRetryAttempts": 1, "noDataStatusCodes": [ "013" ], "cacheable": true }, "operations": [ { "id": "opendart.disclosures", "method": "GET", "path": "list.json", "response": "json" }, { "id": "opendart.company", "method": "GET", "path": "company.json", "response": "json" }, { "id": "opendart.corp-code", "method": "GET", "path": "corpCode.xml", "response": "zip-binary" } ] }, { "id": "provider.kis.market-data", "title": "한국투자증권 KIS Open API — 국내주식 시세", "ownerModule": "COMMON", "purpose": "market-data-readonly", "mutationAllowed": false, "officialSources": [ "https://apiportal.koreainvestment.com/apiservice-apiservice", "https://apiportal.koreainvestment.com/community/10000000-0000-0011-0000-000000000001/post/d0d1a83f-6f8d-4437-9700-6d26702fd989", "https://github.com/koreainvestment/open-trading-api/blob/main/examples_llm/domestic_stock/inquire_price/inquire_price.py", "https://github.com/koreainvestment/open-trading-api/blob/main/examples_llm/kis_auth.py" ], "official": { "productionBaseUri": "https://openapi.koreainvestment.com:9443", "sandboxBaseUri": "https://openapivts.koreainvestment.com:29443", "authentication": { "type": "oauth2-client-credentials", "tokenPath": "/oauth2/tokenP", "bodyFields": [ "grant_type", "appkey", "appsecret" ], "grantType": "client_credentials" }, "tokenValidityHours": 24, "tokenRenewalCycleHours": 6, "headers": [ "authorization", "appkey", "appsecret", "tr_id", "custtype", "tr_cont" ], "responseSuccess": { "field": "rt_cd", "value": "0" }, "rateLimitsAsOf": "2026-04-20", "productionRequestsPerSecond": 18, "sandboxRequestsPerSecond": 1, "tokenRequestsPerSecond": 1, "concurrentSpacingRecommendationMs": [ 100, 150 ] }, "kbxPolicy": { "appKeyCredential": "ExternalProviders:Kis:AppKey", "appSecretCredential": "ExternalProviders:Kis:AppSecret", "environmentKey": "ExternalProviders:Kis:Environment", "readOnlyOnly": true, "tokenRefreshSkewMinutes": 5, "productionMinimumSpacingMs": 100, "sandboxMinimumSpacingMs": 1000, "timeoutMs": 5000, "maxRetryAttempts": 1, "retryHttpStatuses": [ 408, 429, 500, 502, 503, 504 ], "cacheable": true }, "operations": [ { "id": "kis.oauth.token", "method": "POST", "path": "/oauth2/tokenP", "response": "json", "authOperation": true }, { "id": "kis.domestic-stock.current-price", "method": "GET", "path": "/uapi/domestic-stock/v1/quotations/inquire-price", "trId": "FHKST01010100", "response": "json", "query": [ "FID_COND_MRKT_DIV_CODE", "FID_INPUT_ISCD" ] } ] } ] }