Files
zeekay 1df3ddf6bd Regenerate against the document the deployment answers for
The projection these were generated from predated the compute migration, so
they described /v1/visor — which the API serves at zero paths now.

No /v1/visor path survives here.
2026-09-05 18:55:38 -07:00

76 lines
3.8 KiB
Swift

//
// BankTxnRow.swift
//
// Generated by openapi-generator
// https://openapi-generator.tech
//
import Foundation
public struct BankTxnRow: Sendable, Codable, ParameterConvertible, Hashable {
/** AmountCents is the size of the movement in whole cents, always POSITIVE — direction carries the sign, so a caller must read both to know which way money went. */
public var amountCents: Int64?
/** Connector names the feed this row arrived on — which bank or processor connection it was synced from. With externalId it is the row's identity, so re-syncing the same statement never books a second copy. */
public var connector: String?
/** Currency is the ISO code the bank reported the line in. */
public var currency: String?
/** Description is the statement memo as the bank wrote it. */
public var description: String?
/** Direction is which way the money moved: an inflow into the account or an outflow from it, from the org's point of view. */
public var direction: String?
/** ExternalID is the bank's OWN id for the line, carried verbatim. It is unique only within its connector. */
public var externalId: String?
/** MatchedVoucher names the ledger voucher this line was reconciled against — the bill it paid, or the settlement it cleared. Absent when nothing matched, which for an inflow is what raises a question. */
public var matchedVoucher: String?
/** Merchant is the counterparty the feed identified, where it did. */
public var merchant: String?
/** PostedAt is the bank's posting date for the line, not when we synced it. */
public var postedAt: String?
/** Status is where the line got to: posted (an outflow booked straight to an expense), settled (an outflow that paid down a scanned bill), reconciled (an inflow that cleared a pending settlement), transfer (a move between the org's own accounts, recorded but with no effect on the books), or unmatched (an inflow nobody could place, which is waiting on a human answer). */
public var status: String?
public init(amountCents: Int64? = nil, connector: String? = nil, currency: String? = nil, description: String? = nil, direction: String? = nil, externalId: String? = nil, matchedVoucher: String? = nil, merchant: String? = nil, postedAt: String? = nil, status: String? = nil) {
self.amountCents = amountCents
self.connector = connector
self.currency = currency
self.description = description
self.direction = direction
self.externalId = externalId
self.matchedVoucher = matchedVoucher
self.merchant = merchant
self.postedAt = postedAt
self.status = status
}
public enum CodingKeys: String, CodingKey, CaseIterable {
case amountCents
case connector
case currency
case description
case direction
case externalId
case matchedVoucher
case merchant
case postedAt
case status
}
// Encodable protocol methods
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encodeIfPresent(amountCents, forKey: .amountCents)
try container.encodeIfPresent(connector, forKey: .connector)
try container.encodeIfPresent(currency, forKey: .currency)
try container.encodeIfPresent(description, forKey: .description)
try container.encodeIfPresent(direction, forKey: .direction)
try container.encodeIfPresent(externalId, forKey: .externalId)
try container.encodeIfPresent(matchedVoucher, forKey: .matchedVoucher)
try container.encodeIfPresent(merchant, forKey: .merchant)
try container.encodeIfPresent(postedAt, forKey: .postedAt)
try container.encodeIfPresent(status, forKey: .status)
}
}