LibOFX
libofx.h
Go to the documentation of this file.
1/*-*-c-*-*******************************************************************
2 libofx.h - Main header file for the libofx API
3 -------------------
4 copyright : (C) 2002-2011 by Benoit Grégoire
5 email : benoitg@coeus.ca
6***************************************************************************/
26/***************************************************************************
27 * *
28 * This program is free software; you can redistribute it and/or modify *
29 * it under the terms of the GNU General Public License as published by *
30 * the Free Software Foundation; either version 2 of the License, or *
31 * (at your option) any later version. *
32 * *
33 ***************************************************************************/
34
35#ifndef LIBOFX_H
36#define LIBOFX_H
37#include <time.h>
38
39#define LIBOFX_MAJOR_VERSION 0
40#define LIBOFX_MINOR_VERSION 10
41#define LIBOFX_MICRO_VERSION 3
42#define LIBOFX_BUILD_VERSION 0
43#define LIBOFX_VERSION_RELEASE_STRING "0.10.3"
44
45#ifdef IN_LIBOFX
46# include "config.h"
47# ifdef HAVE_GCC_VISIBILITY_EXTS
48# pragma GCC visibility push(default)
49# endif
50#endif
51
52#ifdef __cplusplus
53extern "C" {
54#else
55#define true 1
56#define false 0
57#endif
58
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) /* In ISO-4217 format */
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)
76 /* Must be MAX of <BANKID>+<BRANCHID>+<ACCTID>, <ACCTID>+<ACCTKEY> and <ACCTID>+<BROKERID> */
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)
97
98 /*
99 #define OFX_STATEMENT_CB 0;
100 #define OFX_ACCOUNT_CB 1;
101 #define OFX_TRACSACTION_CB 2;
102 #define OFX_SECURITY_CB 3;
103 #define OFX_STATUS_CB 4;
104 */
105
106 typedef void * LibofxContextPtr;
107
113 LibofxContextPtr libofx_get_new_context();
114
120 int libofx_free_context( LibofxContextPtr );
121
122 void libofx_set_dtd_dir(LibofxContextPtr libofx_context,
123 const char *s);
124
127 {
133 LAST
134 };
135
137 {
139 const char * format_name;
140 const char * description;
141 };
142
143
144#ifndef OFX_AQUAMANIAC_UGLY_HACK1
145
146 const struct LibofxFileFormatInfo LibofxImportFormatList[] =
147 {
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"}
153 };
154
155 const struct LibofxFileFormatInfo LibofxExportFormatList[] =
156 {
157 {QIF, "QIF", "QIF (Intuit Quicken Interchange Format) NOT IMPLEMENTED"},
158 {LAST, "LAST", "Not a file format, meant as a loop breaking condition"}
159 };
160
172 enum LibofxFileFormat libofx_get_file_format_from_str(const struct LibofxFileFormatInfo format_list[], const char * file_type_string);
173
185 const char * libofx_get_file_format_description(const struct LibofxFileFormatInfo format_list[], enum LibofxFileFormat file_format);
186
187#endif
188
197 int libofx_proc_file(LibofxContextPtr libofx_context,
198 const char * p_filename,
199 enum LibofxFileFormat ftype);
200
201
215 {
220 char ofx_element_name[OFX_ELEMENT_NAME_LENGTH];
223
228 int code;
229 const char* name;
230 const char* description;
235 {
238 ERROR
239 } severity;
240 int severity_valid;
241
249 int server_message_valid;
251 };
252
253
263 typedef int (*LibofxProcStatusCallback)(const struct OfxStatusData data, void * status_data);
264
277 {
278
290 char account_id[OFX_ACCOUNT_ID_LENGTH];
291
297 char account_name[OFX_ACCOUNT_NAME_LENGTH];
298 int account_id_valid;/* Use for both account_id and account_name */
299
303 {
311 OFX_401K
312 } account_type;
313 int account_type_valid;
314
316 char currency[OFX_CURRENCY_LENGTH];
317 int currency_valid;
318
320 char account_number[OFX_ACCTID_LENGTH];
321 int account_number_valid;
322
324 char bank_id[OFX_BANKID_LENGTH];
325 int bank_id_valid;
326
327 char broker_id[OFX_BROKERID_LENGTH];
328 int broker_id_valid;
329
330 char branch_id[OFX_BRANCHID_LENGTH];
331 int branch_id_valid;
332
333 };
334
349 typedef int (*LibofxProcAccountCallback)(const struct OfxAccountData data, void * account_data);
350
359 {
363 {
369 } security_type;
370 int security_type_valid;
371
379 char unique_id[OFX_UNIQUE_ID_LENGTH];
380 int unique_id_valid;
381
382 char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH];
384 int unique_id_type_valid;
385
386 char secname[OFX_SECNAME_LENGTH];
387 int secname_valid;
388
394 char ticker[OFX_TICKER_LENGTH];
395 int ticker_valid;
396
397 double unitprice;
399 int unitprice_valid;
400
401 char rating[OFX_SECURITY_RATING_LENGTH];
402 int rating_valid;
403
405 int date_unitprice_valid;
406
409 char currency[OFX_CURRENCY_LENGTH];
410 int currency_valid;
411
414 int currency_ratio_valid;
415
420 int amounts_are_foreign_currency_valid;
421
422 char memo[OFX_MEMO2_LENGTH];
423 int memo_valid;
424
427 char fiid[OFX_FIID_LENGTH];
428 int fiid_valid;
429
437 {
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
445 } asset_class;
446 int asset_class_valid;
447
449 char fiasset_class[OFX_FIASSET_CLASS_LENGTH];
450 int fiasset_class_valid;
451
459 {
460 OFX_MFTYPE_OPENEND,
461 OFX_MFTYPE_CLOSEEND,
462 OFX_MFTYPE_OTHER
463 } mutual_fund_type;
464 int mutual_fund_type_valid;
465
468 {
469 OFX_STOCKTYPE_COMMON,
470 OFX_STOCKTYPE_PREFERRED,
471 OFX_STOCKTYPE_CONVERTIBLE,
472 OFX_STOCKTYPE_OTHER
473 } stock_type;
474 int stock_type_valid;
475
478 double yield;
479 int yield_valid;
480
482 int yield_asof_date_valid;
483
490 double par_value;
491 int par_value_valid;
492
495 {
496 OFX_DEBT_TYPE_COUPON,
497 OFX_DEBT_TYPE_ZERO
498 } debt_type;
499 int debt_type_valid;
500
508 {
509 OFX_DEBTCLASS_TREASURY,
510 OFX_DEBTCLASS_MUNICIPAL,
511 OFX_DEBTCLASS_CORPORATE,
512 OFX_DEBTCLASS_OTHER
513 } debt_class;
514 int debt_class_valid;
515
518 int coupon_rate_valid;
519
522 int date_coupon_valid;
523
526 {
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
532 } coupon_freq;
533 int coupon_freq_valid;
534
537 int call_price_valid;
538
541 int yield_to_call_valid;
542
544 time_t call_date;
545 int call_date_valid;
546
549 {
550 OFX_CALL_TYPE_CALL,
551 OFX_CALL_TYPE_PUT,
552 OFX_CALL_TYPE_PREFUND,
553 OFX_CALL_TYPE_MATURITY
554 } call_type;
555 int call_type_valid;
556
559 int yield_to_maturity_valid;
560
563 int maturity_date_valid;
564
572 {
573 OFX_OPTION_TYPE_CALL,
574 OFX_OPTION_TYPE_PUT
575 } option_type;
576 int option_type_valid;
577
580 int strike_price_valid;
581
584 int date_expire_valid;
585
588 int shares_per_cont_valid;
589
597 char unique_id2[OFX_UNIQUE_ID_LENGTH];
598 int unique_id2_valid;
599
602 char unique_id2_type[OFX_UNIQUE_ID_TYPE_LENGTH];
603 int unique_id2_type_valid;
604
605 };/* end struct OfxSecurityData */
606
620 typedef int (*LibofxProcSecurityCallback)(const struct OfxSecurityData data, void * security_data);
621
622 typedef enum
623 {
640 OFX_OTHER
642
643 typedef enum
644 {
667
668 typedef enum
669 {
670 DELETE,
672 REPLACE
675
683 {
684
690 char account_id[OFX_ACCOUNT_ID_LENGTH];
695 int account_id_valid;
696
697 TransactionType transactiontype;
699
703 InvTransactionType invtransactiontype;
704 int invtransactiontype_valid;
705
713 double units;
714 int units_valid;
715
716 double unitprice;
718 int unitprice_valid;
719
720 double amount;
724 int amount_valid;
725
726 char fi_id[OFX_FITID_LENGTH];
729 int fi_id_valid;
730
738 char unique_id[OFX_UNIQUE_ID_LENGTH];
739 int unique_id_valid;
740 char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH];
742 int unique_id_type_valid;
743
744 struct OfxSecurityData *security_data_ptr;
746
752 int date_posted_valid;
753
760 int date_initiated_valid;
761
765 int date_funds_available_valid;
766
770 char fi_id_corrected[OFX_FITID_LENGTH];
771 int fi_id_corrected_valid;
772
776 int fi_id_correction_action_valid;
777
780 char server_transaction_id[OFX_SVRTID2_LENGTH];
781 int server_transaction_id_valid;
782
786 char check_number[OFX_CHECK_NUMBER_LENGTH];
787 int check_number_valid;
788
791 char reference_number[OFX_REFERENCE_NUMBER_LENGTH];
792 int reference_number_valid;
793
796 int standard_industrial_code_valid;
797
798 char payee_id[OFX_SVRTID2_LENGTH];
799 int payee_id_valid;
800
801 char name[OFX_TRANSACTION_NAME_LENGTH];
803 int name_valid;
804
805 char memo[OFX_MEMO2_LENGTH];
806 int memo_valid;
807
809 int commission_valid;
810
811 double fees;
812 int fees_valid;
813
814 double oldunits;
815 int oldunits_valid;
816
817 double newunits;
818 int newunits_valid;
819
822 int market_value_valid;
823
825 char currency[OFX_CURRENCY_LENGTH];
826 int currency_valid;
827
830 int currency_ratio_valid;
831
836 int amounts_are_foreign_currency_valid;
837
843 int accrued_interest_valid;
844
846 int avg_cost_basis_valid;
847
851 {
852 OFX_BUY_TYPE_BUY,
853 OFX_BUY_TYPE_BUYTOCOVER,
854 OFX_BUY_TYPE_BUYTOOPEN,
855 OFX_BUY_TYPE_BUYTOCLOSE
856 } buy_type;
857 int buy_type_valid;
858
859 double denominator;
860 int denominator_valid;
861
863 int date_payroll_valid;
864
866 int date_purchase_valid;
867
868 double gain;
869 int gain_valid;
870
872 int cash_for_fractional_valid;
873
876 {
881 OFX_MISC
882 } income_type;
883 int income_type_valid;
884
887 {
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
895 } inv_401k_source;
896 int inv_401k_source_valid;
897
898 double load;
899 int load_valid;
900
901 char loan_id[OFX_LOANID_LENGTH];
902 int loan_id_valid;
903
905 int loan_interest_valid;
906
908 int loan_principal_valid;
909
910 double markdown;
911 int markdown_valid;
912
913 double markup;
914 int markup_valid;
915
916 double numerator;
917 int numerator_valid;
918
921 {
922 OFX_OPTACTION_EXERCISE,
923 OFX_OPTACTION_ASSIGN,
924 OFX_OPTACTION_EXPIRE
925 } opt_action;
926 int opt_action_valid;
927
928 double penalty;
929 int penalty_valid;
930
933 {
934 OFX_POSTYPE_LONG,
935 OFX_POSTYPE_SHORT
936 } pos_type;
937 int pos_type_valid;
938
941 int prior_year_contrib_valid;
942
944 char related_fi_tid[OFX_FITID_LENGTH];
945 int related_fi_tid_valid;
946
949 {
950 OFX_RELTYPE_SPREAD,
951 OFX_RELTYPE_STRADDLE,
952 OFX_RELTYPE_NONE,
953 OFX_RELTYPE_OTHER
954 } related_type;
955 int related_type_valid;
956
959 {
960 OFX_SECURED_NAKED,
961 OFX_SECURED_COVERED
962 } option_secured;
963 int option_secured_valid;
964
967 {
971 } sell_reason;
972 int sell_reason_valid;
973
977 {
978 OFX_SELL_TYPE_SELL,
979 OFX_SELL_TYPE_SELLSHORT,
980 OFX_SELL_TYPE_SELLTOOPEN,
981 OFX_SELL_TYPE_SELLTOCLOSE
982 } sell_type;
983 int sell_type_valid;
984
987 int shares_per_cont_valid;
988
991 int state_withholding_valid;
992
995 {
996 OFX_SUBACCT_CASH,
997 OFX_SUBACCT_MARGIN,
998 OFX_SUBACCT_SHORT,
999 OFX_SUBACCT_OTHER
1000 } subacct_from, subacct_funding, subacct_security, subacct_to;
1007 double taxes;
1008 int taxes_valid;
1009
1012 int tax_exempt_valid;
1013
1016 {
1017 OFX_TFERACTION_IN,
1018 OFX_TFERACTION_OUT
1019 } transfer_action;
1020 int transfer_action_valid;
1021
1024 {
1025 OFX_UNITTYPE_SHARES,
1026 OFX_UNITTYPE_CURRENCY
1027 } unit_type;
1028 int unit_type_valid;
1029
1032 int withholding_valid;
1033
1034 /*********** NOT YET COMPLETE!!! *********************/
1035 };
1036
1046 typedef int (*LibofxProcTransactionCallback)(const struct OfxTransactionData data, void * transaction_data);
1047
1058 {
1059
1069 char currency[OFX_CURRENCY_LENGTH];
1070 int currency_valid;
1071
1072 char account_id[OFX_ACCOUNT_ID_LENGTH];
1076 int account_id_valid;
1077
1081 int ledger_balance_valid;
1082
1084 int ledger_balance_date_valid;
1085
1088 int date_asof_valid;
1089
1098 int available_balance_valid;
1099
1101 int available_balance_date_valid;
1102
1105 int margin_balance_valid;
1106
1109 int short_balance_valid;
1110
1113 int buying_power_valid;
1114
1120 int date_start_valid;
1121
1126 time_t date_end;
1127 int date_end_valid;
1128
1131 char marketing_info[OFX_MARKETING_INFO_LENGTH];
1132 int marketing_info_valid;
1133 };
1134
1142 typedef int (*LibofxProcStatementCallback)(const struct OfxStatementData data, void * statement_data);
1143
1148 {
1149 char currency[OFX_CURRENCY_LENGTH];
1152 };
1153
1162 {
1164 char account_id[OFX_ACCOUNT_ID_LENGTH];
1169 int account_id_valid;
1170
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;
1184
1188 {
1193 } heldinaccount_type;
1194 int heldinaccount_type_valid;
1195
1198 {
1199 OFX_POSITION_SHORT,
1200 OFX_POSITION_LONG
1201 } position_type;
1202 int position_type_valid;
1203
1205 double units;
1206 int units_valid;
1207
1210 int unit_price_valid;
1211
1214 int market_value_valid;
1215
1218 int date_unit_price_valid;
1219
1227 char memo[OFX_MEMO_LENGTH];
1228 int memo_valid;
1229
1232 {
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
1240 } inv_401k_source;
1241 int inv_401k_source_valid;
1242
1244 char currency[OFX_CURRENCY_LENGTH];
1245 int currency_valid;
1246
1249 int currency_ratio_valid;
1250
1255 int amounts_are_foreign_currency_valid;
1256
1259 int security_data_valid;
1260
1261 };
1262
1270 typedef int (*LibofxProcPositionCallback)(const struct OfxPositionData data, void * position_data);
1271
1272
1279 void ofx_set_status_cb(LibofxContextPtr ctx,
1281 void *user_data);
1282
1289 void ofx_set_account_cb(LibofxContextPtr ctx,
1291 void *user_data);
1292
1299 void ofx_set_security_cb(LibofxContextPtr ctx,
1301 void *user_data);
1302
1309 void ofx_set_transaction_cb(LibofxContextPtr ctx,
1311 void *user_data);
1312
1319 void ofx_set_statement_cb(LibofxContextPtr ctx,
1321 void *user_data);
1322
1329 void ofx_set_position_cb(LibofxContextPtr ctx,
1331 void *user_data);
1332
1333
1337 /*int libofx_proc_buffer(LibofxContextPtr ctx,
1338 const char *s, unsigned int size);*/
1339
1340
1341 /* **************************************** */
1342
1348
1353 {
1354 char fid[OFX_FID_LENGTH];
1355 char org[OFX_ORG_LENGTH];
1356 char url[OFX_URL_LENGTH];
1361 };
1362
1373 {
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];
1382 };
1383
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)
1389
1391 {
1392 char amount[OFX_AMOUNT_LENGTH];
1393 char account[OFX_PAYACCT_LENGTH];
1394 char datedue[9];
1395 char memo[OFX_MEMO_LENGTH];
1396 };
1397
1399 {
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];
1406 };
1407
1419 char* libofx_request_statement( const struct OfxFiLogin* fi, const struct OfxAccountData* account, time_t date_from );
1420
1431 char* libofx_request_accountinfo( const struct OfxFiLogin* login );
1432
1433 char* libofx_request_payment( const struct OfxFiLogin* login, const struct OfxAccountData* account, const struct OfxPayee* payee, const struct OfxPayment* payment );
1434
1435 char* libofx_request_payment_status( const struct OfxFiLogin* login, const char* transactionid );
1436
1438
1439extern int ofx_PARSER_msg;
1440extern int ofx_DEBUG_msg;
1441extern int ofx_DEBUG1_msg;
1442extern int ofx_DEBUG2_msg;
1443extern int ofx_DEBUG3_msg;
1444extern int ofx_DEBUG4_msg;
1445extern int ofx_DEBUG5_msg;
1446extern int ofx_STATUS_msg;
1447extern int ofx_INFO_msg;
1448extern int ofx_WARNING_msg;
1449extern int ofx_ERROR_msg;
1450extern int ofx_show_position;
1452#ifdef __cplusplus
1453} // end of extern "C"
1454#endif
1455
1456#if defined(HAVE_GCC_VISIBILITY_EXTS) && defined(IN_LIBOFX)
1457# pragma GCC visibility pop
1458#endif
1459
1460#endif // end of LIBOFX_H
int(* LibofxProcTransactionCallback)(const struct OfxTransactionData data, void *transaction_data)
The callback function for the OfxTransactionData structure.
Definition libofx.h:1046
void ofx_set_transaction_cb(LibofxContextPtr ctx, LibofxProcTransactionCallback cb, void *user_data)
Definition context.cpp:220
LibofxContextPtr libofx_get_new_context()
Initialise the library and return a new context.
Definition context.cpp:169
int ofx_WARNING_msg
Definition messages.cpp:39
void ofx_set_account_cb(LibofxContextPtr ctx, LibofxProcAccountCallback cb, void *user_data)
Definition context.cpp:202
int libofx_free_context(LibofxContextPtr)
Free all resources used by this context.
Definition context.cpp:174
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.
int(* LibofxProcAccountCallback)(const struct OfxAccountData data, void *account_data)
The callback function for the OfxAccountData structure.
Definition libofx.h:349
char * libofx_request_accountinfo(const struct OfxFiLogin *login)
Creates an OFX account info (list) request in string form.
int ofx_PARSER_msg
Definition messages.cpp:30
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.
FiIdCorrectionAction
Definition libofx.h:669
@ REPLACE
Definition libofx.h:672
@ DELETE
Definition libofx.h:670
int(* LibofxProcPositionCallback)(const struct OfxPositionData data, void *position_data)
The callback function for the OfxPositionData structure.
Definition libofx.h:1270
int ofx_DEBUG4_msg
Definition messages.cpp:35
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(* LibofxProcStatementCallback)(const struct OfxStatementData data, void *statement_data)
The callback function for the OfxStatementData structure.
Definition libofx.h:1142
int ofx_DEBUG3_msg
Definition messages.cpp:34
LibofxFileFormat
Definition libofx.h:127
@ OFX
Definition libofx.h:129
@ QIF
Definition libofx.h:131
@ UNKNOWN
Definition libofx.h:132
@ LAST
Definition libofx.h:133
@ AUTODETECT
Definition libofx.h:128
@ OFC
Definition libofx.h:130
int ofx_show_position
Definition messages.cpp:41
void ofx_set_position_cb(LibofxContextPtr ctx, LibofxProcPositionCallback cb, void *user_data)
Definition context.cpp:237
int ofx_ERROR_msg
Definition messages.cpp:40
TransactionType
Definition libofx.h:623
@ OFX_XFER
Definition libofx.h:633
@ OFX_POS
Definition libofx.h:632
@ OFX_DIRECTDEP
Definition libofx.h:637
@ OFX_PAYMENT
Definition libofx.h:635
@ OFX_CASH
Definition libofx.h:636
@ OFX_CREDIT
Definition libofx.h:624
@ OFX_ATM
Definition libofx.h:631
@ OFX_OTHER
Definition libofx.h:640
@ OFX_INT
Definition libofx.h:626
@ OFX_CHECK
Definition libofx.h:634
@ OFX_SRVCHG
Definition libofx.h:629
@ OFX_DEBIT
Definition libofx.h:625
@ OFX_DIRECTDEBIT
Definition libofx.h:638
@ OFX_FEE
Definition libofx.h:628
@ OFX_DEP
Definition libofx.h:630
@ OFX_DIV
Definition libofx.h:627
@ OFX_REPEATPMT
Definition libofx.h:639
InvTransactionType
Definition libofx.h:644
@ OFX_SELLOTHER
Definition libofx.h:661
@ OFX_MARGININTEREST
Definition libofx.h:655
@ OFX_BUYOPT
Definition libofx.h:647
@ OFX_CLOSUREOPT
Definition libofx.h:650
@ OFX_JRNLSEC
Definition libofx.h:654
@ OFX_JRNLFUND
Definition libofx.h:653
@ OFX_INVBANKTRAN
Definition libofx.h:665
@ OFX_BUYMF
Definition libofx.h:646
@ OFX_SPLIT
Definition libofx.h:663
@ OFX_REINVEST
Definition libofx.h:656
@ OFX_INVEXPENSE
Definition libofx.h:652
@ OFX_SELLSTOCK
Definition libofx.h:662
@ OFX_RETOFCAP
Definition libofx.h:657
@ OFX_BUYSTOCK
Definition libofx.h:649
@ OFX_BUYOTHER
Definition libofx.h:648
@ OFX_SELLDEBT
Definition libofx.h:658
@ OFX_BUYDEBT
Definition libofx.h:645
@ OFX_INCOME
Definition libofx.h:651
@ OFX_TRANSFER
Definition libofx.h:664
@ OFX_SELLMF
Definition libofx.h:659
@ OFX_SELLOPT
Definition libofx.h:660
int ofx_INFO_msg
Definition messages.cpp:38
int ofx_DEBUG5_msg
Definition messages.cpp:36
int(* LibofxProcSecurityCallback)(const struct OfxSecurityData data, void *security_data)
The callback function for the OfxSecurityData structure.
Definition libofx.h:620
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 ofx_DEBUG1_msg
Definition messages.cpp:32
int ofx_DEBUG_msg
Definition messages.cpp:31
int(* LibofxProcStatusCallback)(const struct OfxStatusData data, void *status_data)
The callback function for the OfxStatusData structure.
Definition libofx.h:263
void ofx_set_security_cb(LibofxContextPtr ctx, LibofxProcSecurityCallback cb, void *user_data)
Definition context.cpp:211
void ofx_set_statement_cb(LibofxContextPtr ctx, LibofxProcStatementCallback cb, void *user_data)
Definition context.cpp:229
int ofx_DEBUG2_msg
Definition messages.cpp:33
int ofx_STATUS_msg
Definition messages.cpp:37
void ofx_set_status_cb(LibofxContextPtr ctx, LibofxProcStatusCallback cb, void *user_data)
Definition context.cpp:194
const char * format_name
Definition libofx.h:139
const char * description
Definition libofx.h:140
enum LibofxFileFormat format
Definition libofx.h:138
An abstraction of an account.
Definition libofx.h:277
char bank_id[OFX_BANKID_LENGTH]
Definition libofx.h:324
char account_name[OFX_ACCOUNT_NAME_LENGTH]
Definition libofx.h:297
char account_number[OFX_ACCTID_LENGTH]
Definition libofx.h:320
char account_id[OFX_ACCOUNT_ID_LENGTH]
Definition libofx.h:290
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:316
NOT YET SUPPORTED.
Definition libofx.h:1148
int must_convert
Definition libofx.h:1151
double exchange_rate
Definition libofx.h:1150
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:1149
Information sufficient to log into an financial institution.
Definition libofx.h:1373
Information returned by the OFX Partner Server about a financial institution.
Definition libofx.h:1353
An abstraction of a security position held in an account.
Definition libofx.h:1162
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:1244
char memo[OFX_MEMO_LENGTH]
Definition libofx.h:1227
@ OFX_HELDINACCT_MARGIN
Definition libofx.h:1190
struct OfxSecurityData * security_data_ptr
Definition libofx.h:1258
struct OfxAccountData * account_ptr
Definition libofx.h:1167
char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH]
Definition libofx.h:1181
int amounts_are_foreign_currency
Definition libofx.h:1254
char account_id[OFX_ACCOUNT_ID_LENGTH]
Definition libofx.h:1164
double currency_ratio
Definition libofx.h:1248
time_t date_unit_price
Definition libofx.h:1217
char unique_id[OFX_UNIQUE_ID_LENGTH]
Definition libofx.h:1179
double unit_price
Definition libofx.h:1209
double market_value
Definition libofx.h:1213
An abstraction of a security, such as a stock, mutual fund, etc.
Definition libofx.h:359
time_t maturity_date
Definition libofx.h:562
time_t yield_asof_date
Definition libofx.h:481
char unique_id[OFX_UNIQUE_ID_LENGTH]
Definition libofx.h:379
char fiid[OFX_FIID_LENGTH]
Definition libofx.h:427
double currency_ratio
Definition libofx.h:413
char unique_id2[OFX_UNIQUE_ID_LENGTH]
Definition libofx.h:597
time_t call_date
Definition libofx.h:544
time_t date_unitprice
Definition libofx.h:404
double strike_price
Definition libofx.h:579
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:409
char fiasset_class[OFX_FIASSET_CLASS_LENGTH]
Definition libofx.h:449
double yield_to_call
Definition libofx.h:540
char secname[OFX_SECNAME_LENGTH]
Definition libofx.h:386
int amounts_are_foreign_currency
Definition libofx.h:419
double yield
Definition libofx.h:478
char rating[OFX_SECURITY_RATING_LENGTH]
Definition libofx.h:401
double call_price
Definition libofx.h:536
char unique_id2_type[OFX_UNIQUE_ID_TYPE_LENGTH]
Definition libofx.h:602
time_t date_coupon
Definition libofx.h:521
@ OFX_OPTION_SECURITY
Definition libofx.h:366
double yield_to_maturity
Definition libofx.h:558
time_t date_expire
Definition libofx.h:583
double par_value
Definition libofx.h:490
char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH]
Definition libofx.h:382
double unitprice
Definition libofx.h:397
double shares_per_cont
Definition libofx.h:587
char memo[OFX_MEMO2_LENGTH]
Definition libofx.h:422
double coupon_rate
Definition libofx.h:517
char ticker[OFX_TICKER_LENGTH]
Definition libofx.h:394
An abstraction of an account statement.
Definition libofx.h:1058
double margin_balance
Definition libofx.h:1104
double ledger_balance
Definition libofx.h:1080
time_t date_asof
Definition libofx.h:1087
double buying_power
Definition libofx.h:1112
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:1069
time_t available_balance_date
Definition libofx.h:1100
time_t ledger_balance_date
Definition libofx.h:1083
struct OfxAccountData * account_ptr
Definition libofx.h:1074
double short_balance
Definition libofx.h:1108
time_t date_end
Definition libofx.h:1126
char account_id[OFX_ACCOUNT_ID_LENGTH]
Definition libofx.h:1072
time_t date_start
Definition libofx.h:1119
double available_balance
Definition libofx.h:1095
char marketing_info[OFX_MARKETING_INFO_LENGTH]
Definition libofx.h:1131
An abstraction of an OFX STATUS element.
Definition libofx.h:215
int ofx_element_name_valid
Definition libofx.h:222
char * server_message
Definition libofx.h:247
const char * description
Definition libofx.h:230
const char * name
Definition libofx.h:229
int code_valid
Definition libofx.h:231
An abstraction of a transaction in an account.
Definition libofx.h:683
double market_value
Definition libofx.h:821
char fi_id[OFX_FITID_LENGTH]
Definition libofx.h:726
char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH]
Definition libofx.h:740
time_t date_funds_available
Definition libofx.h:762
int subacct_security_valid
Definition libofx.h:1003
FiIdCorrectionAction fi_id_correction_action
Definition libofx.h:775
long int standard_industrial_code
Definition libofx.h:794
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:825
char unique_id[OFX_UNIQUE_ID_LENGTH]
Definition libofx.h:738
char memo[OFX_MEMO2_LENGTH]
Definition libofx.h:805
int security_data_valid
Definition libofx.h:745
int amounts_are_foreign_currency
Definition libofx.h:835
char related_fi_tid[OFX_FITID_LENGTH]
Definition libofx.h:944
double denominator
Definition libofx.h:859
char account_id[OFX_ACCOUNT_ID_LENGTH]
Definition libofx.h:690
time_t date_purchase
Definition libofx.h:865
double state_withholding
Definition libofx.h:990
int subacct_funding_valid
Definition libofx.h:1002
double commission
Definition libofx.h:808
char name[OFX_TRANSACTION_NAME_LENGTH]
Definition libofx.h:801
time_t date_posted
Definition libofx.h:747
double currency_ratio
Definition libofx.h:829
int transactiontype_valid
Definition libofx.h:698
time_t date_payroll
Definition libofx.h:862
char fi_id_corrected[OFX_FITID_LENGTH]
Definition libofx.h:770
time_t date_initiated
Definition libofx.h:754
double cash_for_fractional
Definition libofx.h:871
char loan_id[OFX_LOANID_LENGTH]
Definition libofx.h:901
double loan_principal
Definition libofx.h:907
char payee_id[OFX_SVRTID2_LENGTH]
Definition libofx.h:798
char server_transaction_id[OFX_SVRTID2_LENGTH]
Definition libofx.h:780
double accrued_interest
Definition libofx.h:842
double shares_per_cont
Definition libofx.h:986
double loan_interest
Definition libofx.h:904
char check_number[OFX_CHECK_NUMBER_LENGTH]
Definition libofx.h:786
char reference_number[OFX_REFERENCE_NUMBER_LENGTH]
Definition libofx.h:791
double avg_cost_basis
Definition libofx.h:845
struct OfxAccountData * account_ptr
Definition libofx.h:693