// generated from contracts/providers/kbx.providers.json; do not edit.
import type { KbxExternalProviderDefinition } from '../provider'
export const kbxProviderSourceSha256='5515e5e002767ed895ea0442003829b0bad8fa9c7a0693ce6cdcbd65969b830f' as const
export const kbxExternalProviderCatalog={
  "provider.krx.openapi": {
    "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에서 승인된 개별 서비스 명세를 구성값으로 등록. 저장소에서 추정하지 않음."
      }
    ]
  },
  "provider.opendart": {
    "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"
      }
    ]
  },
  "provider.kis.market-data": {
    "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"
        ]
      }
    ]
  }
} as const satisfies Record<string,KbxExternalProviderDefinition>
export type KbxExternalProviderId=keyof typeof kbxExternalProviderCatalog
