From 70d01d0b89e583f194bfa6b37f951b60945acb11 Mon Sep 17 00:00:00 2001 From: ened Date: Thu, 13 Jul 2023 09:02:16 +0900 Subject: [PATCH] Working on DART api --- .../DomesticDartDisclosureInterests.swift | 195 ++++ .../DART/DomesticDartMajorReport.swift | 936 ++++++++++++++++++ .../macos/KissMe.xcodeproj/project.pbxproj | 8 + 3 files changed, 1139 insertions(+) create mode 100644 KissMe/Sources/Domestic/DART/DomesticDartDisclosureInterests.swift create mode 100644 KissMe/Sources/Domestic/DART/DomesticDartMajorReport.swift diff --git a/KissMe/Sources/Domestic/DART/DomesticDartDisclosureInterests.swift b/KissMe/Sources/Domestic/DART/DomesticDartDisclosureInterests.swift new file mode 100644 index 0000000..3523ae8 --- /dev/null +++ b/KissMe/Sources/Domestic/DART/DomesticDartDisclosureInterests.swift @@ -0,0 +1,195 @@ +// +// DomesticDartDisclosureInterests.swift +// KissMe +// +// Created by ened-book-m1 on 2023/07/11. +// + +import Foundation + + +extension DomesticDart { + + /// 지분공시 종합정보 - 1 대량보유 상황보고 + public struct BlockSharesOwnershipRequest: DartRequest { + public typealias KResult = BlockSharesOwnershipResult + + public var url: String { + "/api/majorstock.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + + public init(openApiKey: String, corporationCode: String) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + } + } + + + /// 지분공시 종합정보 - 2 임원ㆍ주요주주 소유보고 + public struct ExecutiveMajorShareholderRequest: DartRequest { + public typealias KResult = ExecutiveMajorShareholderResult + + public var url: String { + "/api/elestock.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + + public init(openApiKey: String, corporationCode: String) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + } + } +} + + +extension DomesticDart { + + public struct BlockSharesOwnershipResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 접수일자 + public let receiptDate: String + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 보고구분 + public let reportType: String + /// 대표보고자 + public let representativeReporter: String + /// 보유주식등의 수 + public let stockQuantity: String + /// 보유주식등의 증감 + public let stockQuantityIncreaseDecrease: String + /// 보유비율 + public let stockRatio: String + /// 보유비율 증감 + public let stockRatioIncreaseDecrease: String + /// 주요체결 주식등의 수 + public let contractStockQuantity: String + /// 주요체결 보유비율 + public let contractStockRatio: String + /// 보고사유 + public let reportReason: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case receiptDate = "rcept_dt" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case reportType = "report_tp" + case representativeReporter = "repror" + case stockQuantity = "stkqy" + case stockQuantityIncreaseDecrease = "stkqy_irds" + case stockRatio = "stkrt" + case stockRatioIncreaseDecrease = "stkrt_irds" + case contractStockQuantity = "ctr_stkqy" + case contractStockRatio = "ctr_stkrt" + case reportReason = "report_resn" + } + } + } + + + public struct ExecutiveMajorShareholderResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 접수일자 + public let receiptDate: String + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 대표보고자 + public let representativeReporter: String + /// 발행 회사 관계 임원(등기여부) + public let issuedCorporation_ExecutiveRegistered: String + /// 발행 회사 관계 임원 직위 + public let issuedCorporation_ExecutivePosition: String + /// 발행 회사 관계 주요 주주 + public let issuedCorporation_MainShareholder: String + /// 특정 증권 등 소유 수 + public let specificStockOwnQuantity: String + /// 특정 증권 등 소유 증감 수 + public let specificStockOwnIncreaseDecreaseQuantity: String + /// 특정 증권 등 소유 비율 + public let specificStockOwnRatio: String + /// 특정 증권 등 소유 증감 비율 + public let specificStockOwnIncreaseDecreaseRatio: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case receiptDate = "rcept_dt" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case representativeReporter = "repror" + case issuedCorporation_ExecutiveRegistered = "isu_exctv_rgist_at" + case issuedCorporation_ExecutivePosition = "isu_exctv_ofcps" + case issuedCorporation_MainShareholder = "isu_main_shrholdr" + case specificStockOwnQuantity = "sp_stock_lmp_cnt" + case specificStockOwnIncreaseDecreaseQuantity = "sp_stock_lmp_irds_cnt" + case specificStockOwnRatio = "sp_stock_lmp_rate" + case specificStockOwnIncreaseDecreaseRatio = "sp_stock_lmp_irds_rate" + } + } + } +} diff --git a/KissMe/Sources/Domestic/DART/DomesticDartMajorReport.swift b/KissMe/Sources/Domestic/DART/DomesticDartMajorReport.swift new file mode 100644 index 0000000..fd433f9 --- /dev/null +++ b/KissMe/Sources/Domestic/DART/DomesticDartMajorReport.swift @@ -0,0 +1,936 @@ +// +// DomesticDartMajorReport.swift +// KissMe +// +// Created by ened-book-m1 on 2023/07/11. +// + +import Foundation + + +extension DomesticDart { + + /// 주요사항보고서 주요정보 - 1 부도발생 + /// + public struct BankruptcyRequest: DartRequest { + public typealias KResult = BankruptcyResult + + public var url: String { + "/api/dfOcr.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } + } + + + /// 주요사항보고서 주요정보 - 2 영업정지 + /// + public struct BusinessSuspensionRequest: DartRequest { + public typealias KResult = BusinessSuspensionResult + + public var url: String { + "/api/bsnSp.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } + } + + + /// 주요사항보고서 주요정보 - 3 회생절차 개시신청 + /// + public struct RehabilitationProcessBeginReqeust: DartRequest { + public typealias KResult = RehabilitationProcessBeginResult + + public var url: String { + "/api/ctrcvsBgrq.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } + } + + /// 주요사항보고서 주요정보 - 4 해산사유 발생 + /// + public struct DissolutionReasonRequest : DartRequest { + public typealias KResult = DissolutionReasonResult + + public var url: String { + "/api/dsRsOcr.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } + } + + + /// 주요사항보고서 주요정보 - 5 유상증자 결정 + /// + public struct CapitalIncreaseDecisionRequest : DartRequest { + public typealias KResult = CapitalIncreaseDecisionResult + + public var url: String { + "/api/piicDecsn.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } + } + + + /// 주요사항보고서 주요정보 - 6 무상증자 결정 + /// + public struct FreeIssueOfNewStockDecisionRequest: DartRequest { + public typealias KResult = FreeIssueOfNewStockDecisionResult + + public var url: String { + "/api/fricDecsn.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } + } + + + /// 주요사항보고서 주요정보 - 7 유무상증자 결정 + /// + public struct PaidOrFreeIssueOfNewStockDecisionRequest: DartRequest { + public typealias KResult = PaidOrFreeIssueOfNewStockDecisionResult + + public var url: String { + "/api/pifricDecsn.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } + } + + + /// 주요사항보고서 주요정보 - 8 감자 결정 + /// + public struct CapitalReductionDecisionRequest: DartRequest { + public typealias KResult = CapitalReductionDecisionResult + + public var url: String { + "/api/crDecsn.json" + } + public var method: Method { .get } + public var header: [String : String?] { + [:] + } + public var body: [String: Any] { + return [ + "crtfc_key": openApiKey, + "corp_code": corporationCode, + "bgn_de": startDate.yyyyMMdd, + "end_de": endDate.yyyyMMdd + ] + } + public var result: KResult? = nil + + + public let openApiKey: String + let corporationCode: String + let startDate: Date + let endDate: Date + + public init(openApiKey: String, corporationCode: String, startDate: Date, endDate: Date) { + self.openApiKey = openApiKey + self.corporationCode = corporationCode + self.startDate = startDate + self.endDate = endDate + } + } + + + /// 주요사항보고서 주요정보 - 9 +} + + +extension DomesticDart { + + public struct BankruptcyResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 부도내용 + public let bankruptcyContent: String + /// 부도금액 + public let bankruptcyAmount: String + /// 부도발생은행 + public let bankruptcyBank: String + /// 최종부도(당좌거래정지)일자 + public let bankruptcyDate: String + /// 부도사유 및 경위 + public let bankruptcyReason: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case bankruptcyContent = "df_cn" + case bankruptcyAmount = "df_amt" + case bankruptcyBank = "df_bnk" + case bankruptcyDate = "dfd" + case bankruptcyReason = "df_rs" + } + } + } + + + public struct BusinessSuspensionResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 영업정지 분야 + public let suspensionArea: String + /// 영업정지 내역(영업정지금액) + public let suspensionAmount: String + /// 영업정지 내역(최근매출총액) + public let recentTotalSales: String + /// 영업정지 내역(매출액 대비) + public let comparisionTotalSales: String + /// 영업정지 내역(대규모법인여부) + public let largeCorporationBeing: String + /// 영업정지 내역(거래소 의무공시 해당 여부) + public let krxMandatoryDisclosureRelated: String + /// 영업정지 내용 + public let suspensionContent: String + /// 영업정지사유 + public let suspensionReason: String + /// 향후대책 + public let countermeasures: String + /// 영업정지영향 + public let suspensionEffect: String + /// 영업정지일자 + public let suspensionDate: String + /// 이사회결의일(결정일) + public let directorateDecisionDate: String + /// 사외이사 참석여부(참석) + public let outsideDirectorsAttended: String + /// 사외이사 참석여부(불참) + public let outsideDirectorsAbsent: String + /// 감사(감사위원) 참석여부 + public let auditorAttended: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case suspensionArea = "bsnsp_rm" + case suspensionAmount = "bsnsp_amt" + case recentTotalSales = "rsl" + case comparisionTotalSales = "sl_vs" + case largeCorporationBeing = "ls_atn" + case krxMandatoryDisclosureRelated = "krx_stt_atn" + case suspensionContent = "bsnsp_cn" + case suspensionReason = "bsnsp_rs" + case countermeasures = "ft_ctp" + case suspensionEffect = "bsnsp_af" + case suspensionDate = "bsnspd" + case directorateDecisionDate = "bddd" + case outsideDirectorsAttended = "od_a_at_t" + case outsideDirectorsAbsent = "od_a_at_b" + case auditorAttended = "adt_a_atn" + } + } + } + + + public struct RehabilitationProcessBeginResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 신청인 (회사와의 관계) + public let applicant: String + /// 관할법원 + public let competentCourt: String + /// 신청사유 + public let requestReason: String + /// 신청일자 + public let requestDate: String + /// 향후대책 및 일정 + public let countermeasuresAndSchedule: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case applicant = "apcnt" + case competentCourt = "cpct" + case requestReason = "rq_rs" + case requestDate = "rqd" + case countermeasuresAndSchedule = "ft_ctp_sc" + } + } + } + + + public struct DissolutionReasonResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 해산사유 + public let dissolutionReason: String + /// 해산사유발생일(결정일) + public let dissolutionReasonDate: String + /// 사외이사 참석여부(참석) + public let outsideDirectorsAttended: String + /// 사외이사 참석여부(불참) + public let outsideDirectorsAbsent: String + /// 감사(감사위원) 참석여부 + public let auditorAttended: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case dissolutionReason = "ds_rs" + case dissolutionReasonDate = "ds_rsd" + case outsideDirectorsAttended = "od_a_at_t" + case outsideDirectorsAbsent = "od_a_at_b" + case auditorAttended = "adt_a_atn" + } + } + } + + + public struct CapitalIncreaseDecisionResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 신주의 종류와 수(보통주식 (주)) + public let newCommonStockQuantity: String + /// 신주의 종류와 수(기타주식 (주)) + public let newEtcStockQuantity: String + /// 1주당 액면가액 (원) + public let stockFacePrice: String + /// 증자전 발행주식총수 (주)(보통주식 (주)) + public let beforeIncrease_IssuedTotalCommonStock: String + /// 증자전 발행주식총수 (주)(기타주식 (주)) + public let beforeIncrease_IssuedTotalEtcStock: String + /// 자금조달의 목적(시설자금 (원)) + public let financingReason_FacilityFund: String + /// 자금조달의 목적(영업양수자금 (원)) + public let financingReason_BusinessFund: String + /// 자금조달의 목적(운영자금 (원)) + public let financingReason_OperationFund: String + /// 자금조달의 목적(채무상환자금 (원)) + public let financingReason_DebtRedemptionFund: String + /// 자금조달의 목적(타법인 증권 취득자금 (원)) + public let financingReason_AnotherCorporationAcquisitionFund: String + /// 자금조달의 목적(기타자금 (원)) + public let financingReason_EtcFund: String + /// 증자방식 + public let increaseMethod: String + /// 공매도 해당여부 + public let shortSellingRelated: String + /// 공매도 시작일 + public let shortSellingStartDate: String + /// 공매도 종료일 + public let shortSellingEndDate: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case newCommonStockQuantity = "nstk_ostk_cnt" + case newEtcStockQuantity = "nstk_estk_cnt" + case stockFacePrice = "fv_ps" + case beforeIncrease_IssuedTotalCommonStock = "bfic_tisstk_ostk" + case beforeIncrease_IssuedTotalEtcStock = "bfic_tisstk_estk" + case financingReason_FacilityFund = "fdpp_fclt" + case financingReason_BusinessFund = "fdpp_bsninh" + case financingReason_OperationFund = "fdpp_op" + case financingReason_DebtRedemptionFund = "fdpp_dtrp" + case financingReason_AnotherCorporationAcquisitionFund = "fdpp_ocsa" + case financingReason_EtcFund = "fdpp_etc" + case increaseMethod = "ic_mthn" + case shortSellingRelated = "ssl_at" + case shortSellingStartDate = "ssl_bgd" + case shortSellingEndDate = "ssl_edd" + } + } + } + + + public struct FreeIssueOfNewStockDecisionResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 신주의 종류와 수(보통주식 (주)) + public let newCommonStockQuantity: String + /// 신주의 종류와 수(기타주식 (주)) + public let newEtcStockQuantity: String + /// 1주당 액면가액 (원) + public let stockFacePrice: String + /// 증자전 발행주식총수 (주)(보통주식 (주)) + public let beforeIncrease_IssuedTotalCommonStock: String + /// 증자전 발행주식총수 (주)(기타주식 (주)) + public let beforeIncrease_IssuedTotalEtcStock: String + /// 신주배정기준일 + public let newStock_AssignDate: String + /// 1주당 신주배정 주식수(보통주식 (주)) + public let newStock_AssignCount_PerCommonStock: String + /// 1주당 신주배정 주식수(기타주식 (주)) + public let newStock_AssignCount_PerEtcStock: String + /// 신주의 배당기산일 + public let newStock_DividendPayoutDate: String + /// 신주권교부예정일 + public let newStock_DistributionScheduleDate: String + /// 신주의 상장 예정일 + public let newStock_ListingScheduleDate: String + /// 이사회결의일(결정일) + public let directorateDecisionDate: String + /// 사외이사 참석여부(참석) + public let outsideDirectorsAttended: String + /// 사외이사 참석여부(불참) + public let outsideDirectorsAbsent: String + /// 감사(감사위원) 참석여부 + public let auditorAttended: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case newCommonStockQuantity = "nstk_ostk_cnt" + case newEtcStockQuantity = "nstk_estk_cnt" + case stockFacePrice = "fv_ps" + case beforeIncrease_IssuedTotalCommonStock = "bfic_tisstk_ostk" + case beforeIncrease_IssuedTotalEtcStock = "bfic_tisstk_estk" + case newStock_AssignDate = "nstk_asstd" + case newStock_AssignCount_PerCommonStock = "nstk_ascnt_ps_ostk" + case newStock_AssignCount_PerEtcStock = "nstk_ascnt_ps_estk" + case newStock_DividendPayoutDate = "nstk_dividrk" + case newStock_DistributionScheduleDate = "nstk_dlprd" + case newStock_ListingScheduleDate = "nstk_lstprd" + case directorateDecisionDate = "bddd" + case outsideDirectorsAttended = "od_a_at_t" + case outsideDirectorsAbsent = "od_a_at_b" + case auditorAttended = "adt_a_atn" + } + } + } + + + public struct PaidOrFreeIssueOfNewStockDecisionResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 유상증자(신주의 종류와 수(보통주식 (주))) + public let paidNewStock_CommonStockQuantity: String + /// 유상증자(신주의 종류와 수(기타주식 (주))) + public let paidNewStock_EtcStockQuantity: String + /// 유상증자(1주당 액면가액 (원)) + public let paidNewStock_StockFacePrice: String + /// 유상증자(증자전 발행주식총수 (주)(보통주식 (주))) + public let paidNewStock_BeforeIncrease_IssuedTotalCommonStock: String + /// 유상증자(증자전 발행주식총수 (주)(기타주식 (주))) + public let paidNewStock_BeforeIncrease_IssuedTotalEtcStock: String + /// 유상증자(자금조달의 목적(시설자금 (원))) + public let paidNewStock_FinancingReason_FacilityFund: String + /// 유상증자(자금조달의 목적(영업양수자금 (원))) + public let paidNewStock_FinancingReason_BusinessFund: String + /// 유상증자(자금조달의 목적(운영자금 (원))) + public let paidNewStock_FinancingReason_OperationFund: String + /// 유상증자(자금조달의 목적(채무상환자금 (원))) + public let paidNewStock_FinancingReason_DebtRedemptionFund: String + /// 유상증자(자금조달의 목적(타법인 증권 취득자금 (원))) + public let paidNewStock_FinancingReason_AnotherCorporationAcquisitionFund: String + /// 유상증자(자금조달의 목적(기타자금 (원))) + public let paidNewStock_FinancingReason_EtcFund: String + /// 유상증자(증자방식) + public let paidNewStock_IncreaseMethod: String + + /// 무상증자(신주의 종류와 수(보통주식 (주))) + public let freeNewStock_CommonStockQuantity: String + /// 무상증자(신주의 종류와 수(기타주식 (주))) + public let freeNewStock_EtcStockQuantity: String + /// 무상증자(1주당 액면가액 (원)) + public let freeNewStock_StockFacePrice: String + /// 무상증자(증자전 발행주식총수(보통주식 (주))) + public let freeNewStock_BeforeIncrease_IssuedTotalCommonStock: String + /// 무상증자(증자전 발행주식총수(기타주식 (주))) + public let freeNewStock_BeforeIncrease_IssuedTotalEtcStock: String + /// 무상증자(신주배정기준일) + public let freeNewStock_AssignDate: String + /// 무상증자(1주당 신주배정 주식수(보통주식 (주))) + public let freeNewStock_AssignCount_PerCommonStock: String + /// 무상증자(1주당 신주배정 주식수(기타주식 (주))) + public let freeNewStock_AssignCount_PerEtcStock: String + /// 무상증자(신주의 배당기산일) + public let freeNewStock_DividendPayoutDate: String + /// 무상증자(신주권교부예정일) + public let freeNewStock_DistributionScheduleDate: String + /// 무상증자(신주의 상장 예정일) + public let freeNewStock_ListingScheduleDate: String + /// 무상증자(이사회결의일(결정일)) + public let freeNewStock_DirectorateDecisionDate: String + /// 무상증자(사외이사 참석여부(참석(명))) + public let freeNewStock_OutsideDirectorsAttended: String + /// 무상증자(사외이사 참석여부(불참(명))) + public let freeNewStock_OutsideDirectorsAbsent: String + /// 무상증자(감사(감사위원)참석 여부) + public let freeNewStock_AuditorAttended: String + + /// 공매도 해당여부 + public let shortSellingRelated: String + /// 공매도 시작일 + public let shortSellingStartDate: String + /// 공매도 종료일 + public let shortSellingEndDate: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case paidNewStock_CommonStockQuantity = "piic_nstk_ostk_cnt" + case paidNewStock_EtcStockQuantity = "piic_nstk_estk_cnt" + case paidNewStock_StockFacePrice = "piic_fv_ps" + case paidNewStock_BeforeIncrease_IssuedTotalCommonStock = "piic_bfic_tisstk_ostk" + case paidNewStock_BeforeIncrease_IssuedTotalEtcStock = "piic_bfic_tisstk_estk" + case paidNewStock_FinancingReason_FacilityFund = "piic_fdpp_fclt" + case paidNewStock_FinancingReason_BusinessFund = "piic_fdpp_bsninh" + case paidNewStock_FinancingReason_OperationFund = "piic_fdpp_op" + case paidNewStock_FinancingReason_DebtRedemptionFund = "piic_fdpp_dtrp" + case paidNewStock_FinancingReason_AnotherCorporationAcquisitionFund = "piic_fdpp_ocsa" + case paidNewStock_FinancingReason_EtcFund = "piic_fdpp_etc" + case paidNewStock_IncreaseMethod = "piic_ic_mthn" + + case freeNewStock_CommonStockQuantity = "fric_nstk_ostk_cnt" + case freeNewStock_EtcStockQuantity = "fric_nstk_estk_cnt" + case freeNewStock_StockFacePrice = "fric_fv_ps" + case freeNewStock_BeforeIncrease_IssuedTotalCommonStock = "fric_bfic_tisstk_ostk" + case freeNewStock_BeforeIncrease_IssuedTotalEtcStock = "fric_bfic_tisstk_estk" + case freeNewStock_AssignDate = "fric_nstk_asstd" + case freeNewStock_AssignCount_PerCommonStock = "fric_nstk_ascnt_ps_ostk" + case freeNewStock_AssignCount_PerEtcStock = "fric_nstk_ascnt_ps_estk" + case freeNewStock_DividendPayoutDate = "fric_nstk_dividrk" + case freeNewStock_DistributionScheduleDate = "fric_nstk_dlprd" + case freeNewStock_ListingScheduleDate = "fric_nstk_lstprd" + case freeNewStock_DirectorateDecisionDate = "fric_bddd" + case freeNewStock_OutsideDirectorsAttended = "fric_od_a_at_t" + case freeNewStock_OutsideDirectorsAbsent = "fric_od_a_at_b" + case freeNewStock_AuditorAttended = "fric_adt_a_atn" + + case shortSellingRelated = "ssl_at" + case shortSellingStartDate = "ssl_bgd" + case shortSellingEndDate = "ssl_edd" + } + } + } + + + public struct CapitalReductionDecisionResult: Codable { + public let result: Result + + public struct Result: Codable { + public let status: String + public let message: String + public let list: [Item] + + private enum CodingKeys: String, CodingKey { + case status + case message + case list + } + } + + public struct Item: Codable { + /// 접수번호 + public let receiptNo: String + /// 법인구분 + public let marketType: MarketType + /// 고유번호 + public let corporationCode: String + /// 회사명 + public let corporationName: String + /// 감자주식의 종류와 수(보통주식 (주)) + /// 감자주식의 종류와 수(기타주식 (주)) + /// 1주당 액면가액 (원) + /// 감자전후 자본금(감자전 (원)) + /// 감자전후 자본금(감자후 (원)) + /// 감자전후 발행주식수(보통주식 (주)(감자전 (원))) + /// 감자전후 발행주식수(보통주식 (주)(감자후 (원))) + /// 감자전후 발행주식수(기타주식 (주)(감자전 (원))) + /// 감자전후 발행주식수(기타주식 (주)(감자후 (원))) + /// 감자비율(보통주식 (%)) + /// 감자비율(기타주식 (%)) + /// 감자기준일 + /// 감자방법 + /// 감자사유 + /// 감자일정(주주총회 예정일) + /// 감자일정(명의개서정지기간) + /// 감자일정(구주권 제출기간) + /// 감자일정(매매거래 정지예정기간) + /// 감자일정(구주권 제출기간(시작일)) + /// 감자일정(구주권 제출기간(종료일)) + /// 감자일정(매매거래 정지예정기간(시작일)) + /// 감자일정(매매거래 정지예정기간(종료일)) + /// 감자일정(신주권교부예정일) + /// 감자일정(신주상장예정일) + /// 채권자 이의제출기간(시작일) + /// 채권자 이의제출기간(종료일) + /// 구주권제출 및 신주권교부장소 + + /// 이사회결의일(결정일) + public let directorateDecisionDate: String + /// 사외이사 참석여부(참석) + public let outsideDirectorsAttended: String + /// 사외이사 참석여부(불참) + public let outsideDirectorsAbsent: String + /// 감사(감사위원) 참석여부 + public let auditorAttended: String + /// 공정거래위원회 신고대상 여부 + public let fairTradeCommission_SubjectToReport: String + + private enum CodingKeys: String, CodingKey { + case receiptNo = "rcept_no" + case marketType = "corp_cls" + case corporationCode = "corp_code" + case corporationName = "corp_name" + case = "crstk_ostk_cnt" + case = "crstk_estk_cnt" + case = "fv_ps" + case = "bfcr_cpt" + case = "atcr_cpt" + case = "bfcr_tisstk_ostk" + case = "atcr_tisstk_ostk" + case = "bfcr_tisstk_estk" + case = "atcr_tisstk_estk" + case = "cr_rt_ostk" + case = "cr_rt_estk" + case = "cr_std" + case = "cr_mth" + case = "cr_rs" + case = "crsc_gmtsck_prd" + case = "crsc_trnmsppd" + case = "crsc_osprpd" + case = "crsc_trspprpd" + case = "crsc_osprpd_bgd" + case = "crsc_osprpd_edd" + case = "crsc_trspprpd_bgd" + case = "crsc_trspprpd_edd" + case = "crsc_nstkdlprd" + case = "crsc_nstklstprd" + case = "cdobprpd_bgd" + case = "cdobprpd_edd" + case = "ospr_nstkdl_pl" + case directorateDecisionDate = "bddd" + case outsideDirectorsAttended = "od_a_at_t" + case outsideDirectorsAbsent = "od_a_at_b" + case auditorAttended = "adt_a_atn" + case fairTradeCommission_SubjectToReport = "ftc_stt_atn" + } + } + } +} diff --git a/projects/macos/KissMe.xcodeproj/project.pbxproj b/projects/macos/KissMe.xcodeproj/project.pbxproj index e9c8dff..7f4f114 100644 --- a/projects/macos/KissMe.xcodeproj/project.pbxproj +++ b/projects/macos/KissMe.xcodeproj/project.pbxproj @@ -44,6 +44,8 @@ 34C1BA512A5A607D00423D64 /* DomesticDart.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C1BA502A5A607D00423D64 /* DomesticDart.swift */; }; 34C1BA532A5A683D00423D64 /* DomesticDartBusinessReport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C1BA522A5A683D00423D64 /* DomesticDartBusinessReport.swift */; }; 34C1BA552A5B033E00423D64 /* DomesticDartListedCompany.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C1BA542A5B033E00423D64 /* DomesticDartListedCompany.swift */; }; + 34C1BA882A5D9A4A00423D64 /* DomesticDartDisclosureInterests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C1BA872A5D9A4A00423D64 /* DomesticDartDisclosureInterests.swift */; }; + 34C1BA8A2A5DA00A00423D64 /* DomesticDartMajorReport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C1BA892A5DA00A00423D64 /* DomesticDartMajorReport.swift */; }; 34D3680F2A2AA0BE005E6756 /* PropertyIterable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D3680E2A2AA0BE005E6756 /* PropertyIterable.swift */; }; 34E7B9112A49BD2800B3AB9F /* DomesticIndex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E7B9102A49BD2800B3AB9F /* DomesticIndex.swift */; }; 34F1900C2A41982A0068C697 /* KissIndexResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F1900B2A41982A0068C697 /* KissIndexResult.swift */; }; @@ -100,6 +102,8 @@ 34C1BA502A5A607D00423D64 /* DomesticDart.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticDart.swift; sourceTree = ""; }; 34C1BA522A5A683D00423D64 /* DomesticDartBusinessReport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticDartBusinessReport.swift; sourceTree = ""; }; 34C1BA542A5B033E00423D64 /* DomesticDartListedCompany.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticDartListedCompany.swift; sourceTree = ""; }; + 34C1BA872A5D9A4A00423D64 /* DomesticDartDisclosureInterests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticDartDisclosureInterests.swift; sourceTree = ""; }; + 34C1BA892A5DA00A00423D64 /* DomesticDartMajorReport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticDartMajorReport.swift; sourceTree = ""; }; 34D3680E2A2AA0BE005E6756 /* PropertyIterable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PropertyIterable.swift; sourceTree = ""; }; 34E7B9102A49BD2800B3AB9F /* DomesticIndex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomesticIndex.swift; sourceTree = ""; }; 34F1900B2A41982A0068C697 /* KissIndexResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KissIndexResult.swift; sourceTree = ""; }; @@ -240,6 +244,8 @@ 34C1BA4C2A59CD3400423D64 /* DomesticDartNotice.swift */, 34C1BA522A5A683D00423D64 /* DomesticDartBusinessReport.swift */, 34C1BA542A5B033E00423D64 /* DomesticDartListedCompany.swift */, + 34C1BA872A5D9A4A00423D64 /* DomesticDartDisclosureInterests.swift */, + 34C1BA892A5DA00A00423D64 /* DomesticDartMajorReport.swift */, ); path = DART; sourceTree = ""; @@ -383,6 +389,7 @@ buildActionMask = 2147483647; files = ( 341F5EFB2A10909D00962D48 /* LoginResult.swift in Sources */, + 34C1BA882A5D9A4A00423D64 /* DomesticDartDisclosureInterests.swift in Sources */, 340A4DC42A4E4345005A1FBA /* ArrayDecodable.swift in Sources */, 34C1BA532A5A683D00423D64 /* DomesticDartBusinessReport.swift in Sources */, 34C1BA4F2A5A603F00423D64 /* DomesticExtra.swift in Sources */, @@ -407,6 +414,7 @@ 341F5EFF2A10955D00962D48 /* OrderRequest.swift in Sources */, 341F5EE92A0F87FB00962D48 /* DomesticStockPrice.swift in Sources */, 341F5EEE2A0F884300962D48 /* ForeignStockPrice.swift in Sources */, + 34C1BA8A2A5DA00A00423D64 /* DomesticDartMajorReport.swift in Sources */, 341F5EDE2A0F300100962D48 /* Request.swift in Sources */, 349C26AB2A1EAE2400F3EC91 /* KissProfile.swift in Sources */, 341F5F012A11155100962D48 /* DomesticStockSearchResult.swift in Sources */,