Releases: smallfish06/krsec
Release list
v0.28.0
v0.28.0
This release fixes incorrect market routing, fractional execution loss, incomplete account responses, and missing continuation support. It also adds LS common order management for tracked domestic orders.
Upgrade notes
- Balance availability: unsupported metrics are listed in
unavailable_fieldsand omitted from HTTP JSON instead of being reported as zero or filled with a different financial metric. Go callers must checkUnavailableFields. This affects Toss cash/withdrawable cash/total assets and LS cash/buying power/withdrawable cash. LS total assets now use the provider's estimated net assets. - Account summaries:
/accounts/summaryreturns HTTP 503 without partial totals when any account fails or cannot supply a required aggregate metric. - Fractional quantities: prefer
filled_quantity_decimal,remaining_quantity_decimal, and fillquantity_decimalwhen present. Whole-share compatibility fields remain available. - LS raw Go responses: numeric values are decoded as
json.Numberto preserve large order identifiers and quantities. HTTP values remain JSON numbers. - LS order management: cancel, modify, order lookup, and fills are available for domestic orders placed through this account's common API with recorded credentials and the same Korean trading date. Unknown or prior-day orders are rejected; use the raw APIs for other scopes. Cancellation acceptance is not confirmation of completion.
See the common API contract for migration details and pagination examples.
Fixes and additions
- KIS domestic placement, modification, and cancellation forward the requested exchange with current TR identifiers. Unsupported sandbox venues are rejected.
- KIS overseas candles use the correct overseas endpoint. Date-range queries paginate with explicit limits, and position-source failures no longer become successful empty holdings. The documented sandbox bond limitation is handled separately.
- Restore 106 optional KIS request properties in generated SDK types and OpenAPI documentation.
- Kiwoom quote and chart requests use venue-specific NXT/SOR symbols, validate conflicting inputs, and use documented account query and withdrawal fields.
- Add optional Go page interfaces and HTTP continuation headers for Kiwoom and LS while retaining existing raw response bodies. Common holdings and chart queries reject incomplete traversals; Kiwoom charts stop once the requested range or limit is covered.
- Preserve Toss fractional executions and calculate remaining quantities without a floating-point round trip. Daily changes use the previous trading-session close in the exchange's timezone.
- Correct Toss and LS balance field meanings and propagate upstream failures.
- Add LS account, credential, and trading-date guards for common order management, exact order identifiers, and bounded order/fill history traversal.
- Prevent failed or delayed LS reauthentication and stale automatic refreshes from replacing the active account identity or token.
KIS, Kiwoom, and Toss WebSocket support and Kiwoom common US/minute-chart expansion remain outside this release.
Validation
- Full race-enabled test suite, plus an additional LS race suite after the final authentication changes.
- Static analysis, vet, binary build, generated broker spec checks, and OpenAPI consistency checks.
- Isolated build of the existing
kis-requesterconsumer against this library. - Regression tests use local mocked providers; no live orders were submitted.
Full changelog: v0.27.0...v0.28.0
v0.27.0
The spec drift check now handles transient Kiwoom and LS documentation failures with bounded retries and reports each broker independently, preserving refresh logs and diffs when any broker fails.
- Remove Kiwoom ka10087 and ka10098 from active documented endpoints following the official retirement notice, effective September 12, 2026 at 21:00 KST. Existing exported Go constants and payload types remain available with deprecation comments for source compatibility.
- Refresh LS chart and ETF documentation, including KRX pre/after-market times and NXT fields. Existing required inputs and the endpoint inventory are unchanged.
- Update the Toss candle timestamp description: one-minute timestamps identify the candle end; daily timestamps identify the trading date.
- Regenerate the published OpenAPI document.
Validation: all generated spec and OpenAPI checks, full Go race tests, go vet, build, golangci-lint, and workflow syntax/failure-path checks passed locally. Remote CI and CodeQL passed. The live spec drift check refreshed all four brokers successfully with no diff.
v0.26.0
v0.25.0
v0.24.0
Changelog
Features
- 642eb52 feat(openapi): make doc/openapi.json an explicit, CI-checked artifact
- 3e7038d feat(release): publish multi-arch Docker images to GHCR, group release changelog
Bug Fixes
- 7015c1e fix(server): declare wildcard path params as 'path...' so OpenAPI validation passes
- 6a79693 fix(server): typed HealthResponse removes invalid empty-named OpenAPI schema
Refactoring
- d01eefa refactor(server): split server.go into cohesive files
- d68c646 refactor: modernize codebase with go fix — interface{} to any (492 sites), maps.Copy, builtin max
Build & Specs
- 0376b3b build: fold per-broker spec targets into foreach-generated rules, add toss to CI drift checks
Other
- 41252ad chore(lint): enable gosec + revive; document public API, fix examples
v0.23.0
Changelog
- ef0cee5 fix(specs): refresh Kiwoom ust21100 spec — 4 fields now required upstream
v0.22.0
v0.21.0
v0.20.2
Changelog
- 6ec149b feat(server): graceful shutdown on SIGTERM/SIGINT
v0.20.1
Changelog
- dad5a86 fix(auth): collapse concurrent token issuance with singleflight