226 lines
7.0 KiB
JSON
226 lines
7.0 KiB
JSON
{
|
|
"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"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|