39 #define LIBOFX_MAJOR_VERSION 0 40 #define LIBOFX_MINOR_VERSION 10 41 #define LIBOFX_MICRO_VERSION 0 42 #define LIBOFX_BUILD_VERSION 0 43 #define LIBOFX_VERSION_RELEASE_STRING "0.10.0" 47 # ifdef HAVE_GCC_VISIBILITY_EXTS 48 # pragma GCC visibility push(default) 59 #define OFX_ELEMENT_NAME_LENGTH 100 60 #define OFX_SVRTID2_LENGTH (36 + 1) 61 #define OFX_CHECK_NUMBER_LENGTH (12 + 1) 62 #define OFX_REFERENCE_NUMBER_LENGTH (32 + 1) 63 #define OFX_FITID_LENGTH (255 + 1) 64 #define OFX_TOKEN2_LENGTH (36 + 1) 65 #define OFX_MEMO_LENGTH (255 + 1) 66 #define OFX_FIID_LENGTH (32 + 1) 67 #define OFX_MEMO2_LENGTH (390 + 1) 68 #define OFX_BALANCE_NAME_LENGTH (32 + 1) 69 #define OFX_BALANCE_DESCRIPTION_LENGTH (80 + 1) 70 #define OFX_CURRENCY_LENGTH (3 + 1) 71 #define OFX_BANKID_LENGTH (9 + 1) 72 #define OFX_BRANCHID_LENGTH (22 + 1) 73 #define OFX_ACCTID_LENGTH (22 + 1) 74 #define OFX_ACCTKEY_LENGTH (22 + 1) 75 #define OFX_BROKERID_LENGTH (22 + 1) 77 #define OFX_ACCOUNT_ID_LENGTH (OFX_BANKID_LENGTH + OFX_BRANCHID_LENGTH + OFX_ACCTID_LENGTH + 1) 78 #define OFX_ACCOUNT_NAME_LENGTH 255 79 #define OFX_MARKETING_INFO_LENGTH (360 + 1) 80 #define OFX_TRANSACTION_NAME_LENGTH (96 + 1) 81 #define OFX_UNIQUE_ID_LENGTH (32 + 1) 82 #define OFX_UNIQUE_ID_TYPE_LENGTH (10 + 1) 83 #define OFX_SECNAME_LENGTH (120 + 1) 84 #define OFX_TICKER_LENGTH (32 + 1) 85 #define OFX_ORG_LENGTH (32 + 1) 86 #define OFX_FID_LENGTH (32 + 1) 87 #define OFX_USERID_LENGTH (32 + 1) 88 #define OFX_USERPASS_LENGTH (32 + 1) 89 #define OFX_URL_LENGTH (500 + 1) 90 #define OFX_APPID_LENGTH (32) 91 #define OFX_APPVER_LENGTH (32) 92 #define OFX_HEADERVERSION_LENGTH (32) 93 #define OFX_CLIENTUID_LENGTH (36 + 1) 94 #define OFX_SECURITY_RATING_LENGTH (32 + 1) 95 #define OFX_FIASSET_CLASS_LENGTH (32 + 1) 96 #define OFX_LOANID_LENGTH (32 + 1) 106 typedef void * LibofxContextPtr;
122 void libofx_set_dtd_dir(LibofxContextPtr libofx_context,
144 #ifndef OFX_AQUAMANIAC_UGLY_HACK1 148 {
AUTODETECT,
"AUTODETECT",
"AUTODETECT (File format will be automatically detected later)"},
149 {
OFX,
"OFX",
"OFX (Open Financial eXchange (OFX or QFX))"},
150 {
OFC,
"OFC",
"OFC (Microsoft Open Financial Connectivity)"},
151 {
QIF,
"QIF",
"QIF (Intuit Quicken Interchange Format) NOT IMPLEMENTED"},
152 {
LAST,
"LAST",
"Not a file format, meant as a loop breaking condition"}
157 {
QIF,
"QIF",
"QIF (Intuit Quicken Interchange Format) NOT IMPLEMENTED"},
158 {
LAST,
"LAST",
"Not a file format, meant as a loop breaking condition"}
198 const char * p_filename,
220 char ofx_element_name[OFX_ELEMENT_NAME_LENGTH];
249 int server_message_valid;
290 char account_id[OFX_ACCOUNT_ID_LENGTH];
297 char account_name[OFX_ACCOUNT_NAME_LENGTH];
298 int account_id_valid;
313 int account_type_valid;
316 char currency[OFX_CURRENCY_LENGTH];
320 char account_number[OFX_ACCTID_LENGTH];
321 int account_number_valid;
324 char bank_id[OFX_BANKID_LENGTH];
327 char broker_id[OFX_BROKERID_LENGTH];
330 char branch_id[OFX_BRANCHID_LENGTH];
370 int security_type_valid;
379 char unique_id[OFX_UNIQUE_ID_LENGTH];
382 char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH];
384 int unique_id_type_valid;
386 char secname[OFX_SECNAME_LENGTH];
394 char ticker[OFX_TICKER_LENGTH];
401 char rating[OFX_SECURITY_RATING_LENGTH];
405 int date_unitprice_valid;
409 char currency[OFX_CURRENCY_LENGTH];
414 int currency_ratio_valid;
420 int amounts_are_foreign_currency_valid;
422 char memo[OFX_MEMO2_LENGTH];
427 char fiid[OFX_FIID_LENGTH];
438 OFX_ASSET_CLASS_DOMESTICBOND,
439 OFX_ASSET_CLASS_INTLBOND,
440 OFX_ASSET_CLASS_LARGESTOCK,
441 OFX_ASSET_CLASS_SMALLSTOCK,
442 OFX_ASSET_CLASS_INTLSTOCK,
443 OFX_ASSET_CLASS_MONEYMRKT,
444 OFX_ASSET_CLASS_OTHER
446 int asset_class_valid;
449 char fiasset_class[OFX_FIASSET_CLASS_LENGTH];
450 int fiasset_class_valid;
464 int mutual_fund_type_valid;
469 OFX_STOCKTYPE_COMMON,
470 OFX_STOCKTYPE_PREFERRED,
471 OFX_STOCKTYPE_CONVERTIBLE,
474 int stock_type_valid;
482 int yield_asof_date_valid;
496 OFX_DEBT_TYPE_COUPON,
509 OFX_DEBTCLASS_TREASURY,
510 OFX_DEBTCLASS_MUNICIPAL,
511 OFX_DEBTCLASS_CORPORATE,
514 int debt_class_valid;
518 int coupon_rate_valid;
522 int date_coupon_valid;
527 OFX_COUPON_FREQ_MONTHLY,
528 OFX_COUPON_FREQ_QUARTERLY,
529 OFX_COUPON_FREQ_SEMIANNUAL,
530 OFX_COUPON_FREQ_ANNUAL,
531 OFX_COUPON_FREQ_OTHER
533 int coupon_freq_valid;
537 int call_price_valid;
541 int yield_to_call_valid;
552 OFX_CALL_TYPE_PREFUND,
553 OFX_CALL_TYPE_MATURITY
559 int yield_to_maturity_valid;
563 int maturity_date_valid;
573 OFX_OPTION_TYPE_CALL,
576 int option_type_valid;
580 int strike_price_valid;
584 int date_expire_valid;
588 int shares_per_cont_valid;
597 char unique_id2[OFX_UNIQUE_ID_LENGTH];
598 int unique_id2_valid;
602 char unique_id2_type[OFX_UNIQUE_ID_TYPE_LENGTH];
603 int unique_id2_type_valid;
690 char account_id[OFX_ACCOUNT_ID_LENGTH];
695 int account_id_valid;
697 TransactionType transactiontype;
703 InvTransactionType invtransactiontype;
704 int invtransactiontype_valid;
726 char fi_id[OFX_FITID_LENGTH];
738 char unique_id[OFX_UNIQUE_ID_LENGTH];
740 char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH];
742 int unique_id_type_valid;
752 int date_posted_valid;
760 int date_initiated_valid;
765 int date_funds_available_valid;
770 char fi_id_corrected[OFX_FITID_LENGTH];
771 int fi_id_corrected_valid;
776 int fi_id_correction_action_valid;
780 char server_transaction_id[OFX_SVRTID2_LENGTH];
781 int server_transaction_id_valid;
786 char check_number[OFX_CHECK_NUMBER_LENGTH];
787 int check_number_valid;
791 char reference_number[OFX_REFERENCE_NUMBER_LENGTH];
792 int reference_number_valid;
796 int standard_industrial_code_valid;
798 char payee_id[OFX_SVRTID2_LENGTH];
801 char name[OFX_TRANSACTION_NAME_LENGTH];
809 int commission_valid;
822 int market_value_valid;
830 int currency_ratio_valid;
836 int amounts_are_foreign_currency_valid;
843 int accrued_interest_valid;
846 int avg_cost_basis_valid;
853 OFX_BUY_TYPE_BUYTOCOVER,
854 OFX_BUY_TYPE_BUYTOOPEN,
855 OFX_BUY_TYPE_BUYTOCLOSE
860 int denominator_valid;
863 int date_payroll_valid;
866 int date_purchase_valid;
872 int cash_for_fractional_valid;
883 int income_type_valid;
888 OFX_401K_SOURCE_PRETAX,
889 OFX_401K_SOURCE_AFTERTAX,
890 OFX_401K_SOURCE_MATCH,
891 OFX_401K_SOURCE_PROFITSHARING,
892 OFX_401K_SOURCE_ROLLOVER,
893 OFX_401K_SOURCE_OTHERVEST,
894 OFX_401K_SOURCE_OTHERNONVEST
896 int inv_401k_source_valid;
901 char loan_id[OFX_LOANID_LENGTH];
905 int loan_interest_valid;
908 int loan_principal_valid;
922 OFX_OPTACTION_EXERCISE,
923 OFX_OPTACTION_ASSIGN,
926 int opt_action_valid;
941 int prior_year_contrib_valid;
944 char related_fi_tid[OFX_FITID_LENGTH];
945 int related_fi_tid_valid;
951 OFX_RELTYPE_STRADDLE,
955 int related_type_valid;
963 int option_secured_valid;
970 OFX_SELLREASON_MATURITY
972 int sell_reason_valid;
979 OFX_SELL_TYPE_SELLSHORT,
980 OFX_SELL_TYPE_SELLTOOPEN,
981 OFX_SELL_TYPE_SELLTOCLOSE
987 int shares_per_cont_valid;
991 int state_withholding_valid;
1000 } subacct_from, subacct_funding, subacct_security, subacct_to;
1012 int tax_exempt_valid;
1020 int transfer_action_valid;
1025 OFX_UNITTYPE_SHARES,
1026 OFX_UNITTYPE_CURRENCY
1028 int unit_type_valid;
1032 int withholding_valid;
1069 char currency[OFX_CURRENCY_LENGTH];
1072 char account_id[OFX_ACCOUNT_ID_LENGTH];
1076 int account_id_valid;
1081 int ledger_balance_valid;
1084 int ledger_balance_date_valid;
1088 int date_asof_valid;
1098 int available_balance_valid;
1101 int available_balance_date_valid;
1105 int margin_balance_valid;
1109 int short_balance_valid;
1113 int buying_power_valid;
1120 int date_start_valid;
1131 char marketing_info[OFX_MARKETING_INFO_LENGTH];
1132 int marketing_info_valid;
1149 char currency[OFX_CURRENCY_LENGTH];
1164 char account_id[OFX_ACCOUNT_ID_LENGTH];
1169 int account_id_valid;
1179 char unique_id[OFX_UNIQUE_ID_LENGTH];
1180 int unique_id_valid;
1181 char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH];
1183 int unique_id_type_valid;
1192 OFX_HELDINACCT_OTHER
1193 } heldinaccount_type;
1194 int heldinaccount_type_valid;
1202 int position_type_valid;
1210 int unit_price_valid;
1214 int market_value_valid;
1218 int date_unit_price_valid;
1227 char memo[OFX_MEMO_LENGTH];
1233 OFX_401K_POSN_SOURCE_PRETAX,
1234 OFX_401K_POSN_SOURCE_AFTERTAX,
1235 OFX_401K_POSN_SOURCE_MATCH,
1236 OFX_401K_POSN_SOURCE_PROFITSHARING,
1237 OFX_401K_POSN_SOURCE_ROLLOVER,
1238 OFX_401K_POSN_SOURCE_OTHERVEST,
1239 OFX_401K_POSN_SOURCE_OTHERNONVEST
1241 int inv_401k_source_valid;
1249 int currency_ratio_valid;
1255 int amounts_are_foreign_currency_valid;
1259 int security_data_valid;
1354 char fid[OFX_FID_LENGTH];
1355 char org[OFX_ORG_LENGTH];
1356 char url[OFX_URL_LENGTH];
1374 char fid[OFX_FID_LENGTH];
1375 char org[OFX_ORG_LENGTH];
1376 char userid[OFX_USERID_LENGTH];
1377 char userpass[OFX_USERPASS_LENGTH];
1378 char header_version[OFX_HEADERVERSION_LENGTH];
1379 char appid[OFX_APPID_LENGTH];
1380 char appver[OFX_APPVER_LENGTH];
1381 char clientuid[OFX_CLIENTUID_LENGTH];
1384 #define OFX_AMOUNT_LENGTH (32 + 1) 1385 #define OFX_PAYACCT_LENGTH (32 + 1) 1386 #define OFX_STATE_LENGTH (5 + 1) 1387 #define OFX_POSTALCODE_LENGTH (11 + 1) 1388 #define OFX_NAME_LENGTH (32 + 1) 1392 char amount[OFX_AMOUNT_LENGTH];
1393 char account[OFX_PAYACCT_LENGTH];
1395 char memo[OFX_MEMO_LENGTH];
1400 char name[OFX_NAME_LENGTH];
1401 char address1[OFX_NAME_LENGTH];
1402 char city[OFX_NAME_LENGTH];
1403 char state[OFX_STATE_LENGTH];
1404 char postalcode[OFX_POSTALCODE_LENGTH];
1405 char phone[OFX_NAME_LENGTH];
1435 char* libofx_request_payment_status(
const struct OfxFiLogin* login,
const char* transactionid );
1456 #if defined(HAVE_GCC_VISIBILITY_EXTS) && defined(IN_LIBOFX) 1457 # pragma GCC visibility pop 1460 #endif // end of LIBOFX_H
time_t ledger_balance_date
An abstraction of an account.
enum LibofxFileFormat libofx_get_file_format_from_str(const struct LibofxFileFormatInfo format_list[], const char *file_type_string)
libofx_get_file_type returns a proper enum from a file type string.
void ofx_set_position_cb(LibofxContextPtr ctx, LibofxProcPositionCallback cb, void *user_data)
char * libofx_request_statement(const struct OfxFiLogin *fi, const struct OfxAccountData *account, time_t date_from)
Creates an OFX statement request in string form.
int amounts_are_foreign_currency
An abstraction of a security position held in an account.
char currency[OFX_CURRENCY_LENGTH]
int transactiontype_valid
FiIdCorrectionAction fi_id_correction_action
char currency[OFX_CURRENCY_LENGTH]
char * libofx_request_accountinfo(const struct OfxFiLogin *login)
Creates an OFX account info (list) request in string form.
int(* LibofxProcAccountCallback)(const struct OfxAccountData data, void *account_data)
The callback function for the OfxAccountData stucture.
LibofxContextPtr libofx_get_new_context()
Initialise the library and return a new context.
const char * libofx_get_file_format_description(const struct LibofxFileFormatInfo format_list[], enum LibofxFileFormat file_format)
get_file_format_description returns a string description of a LibofxFileType.
int amounts_are_foreign_currency
long int standard_industrial_code
char memo[OFX_MEMO2_LENGTH]
int(* LibofxProcStatementCallback)(const struct OfxStatementData data, void *statement_data)
The callback function for the OfxStatementData stucture.
void ofx_set_statement_cb(LibofxContextPtr ctx, LibofxProcStatementCallback cb, void *user_data)
struct OfxSecurityData * security_data_ptr
void ofx_set_status_cb(LibofxContextPtr ctx, LibofxProcStatusCallback cb, void *user_data)
double cash_for_fractional
void ofx_set_account_cb(LibofxContextPtr ctx, LibofxProcAccountCallback cb, void *user_data)
int subacct_funding_valid
time_t available_balance_date
int(* LibofxProcTransactionCallback)(const struct OfxTransactionData data, void *transaction_data)
The callback function for the OfxTransactionData stucture.
struct OfxAccountData * account_ptr
struct OfxAccountData * account_ptr
int(* LibofxProcPositionCallback)(const struct OfxPositionData data, void *position_data)
The callback function for the OfxPositionData stucture.
An abstraction of an OFX STATUS element.
void ofx_set_security_cb(LibofxContextPtr ctx, LibofxProcSecurityCallback cb, void *user_data)
int amounts_are_foreign_currency
int subacct_security_valid
Information returned by the OFX Partner Server about a financial institution.
An abstraction of a security, such as a stock, mutual fund, etc.
int ofx_element_name_valid
void ofx_set_transaction_cb(LibofxContextPtr ctx, LibofxProcTransactionCallback cb, void *user_data)
struct OfxAccountData * account_ptr
int(* LibofxProcSecurityCallback)(const struct OfxSecurityData data, void *security_data)
The callback function for the OfxSecurityData stucture.
int(* LibofxProcStatusCallback)(const struct OfxStatusData data, void *status_data)
The callback function for the OfxStatusData stucture.
An abstraction of a transaction in an account.
time_t date_funds_available
int libofx_proc_file(LibofxContextPtr libofx_context, const char *p_filename, enum LibofxFileFormat ftype)
libofx_proc_file is the entry point of the library.
int libofx_free_context(LibofxContextPtr)
Free all ressources used by this context.
An abstraction of an account statement.
Information sufficient to log into an financial institution.