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 9
42#define LIBOFX_BUILD_VERSION 0
43#define LIBOFX_VERSION_RELEASE_STRING "0.10.9"
44
45#ifdef IN_LIBOFX
46# include "config.h"
47# ifdef __GNUC__
48# pragma GCC visibility push(default)
49# endif
50#endif
51
52#ifdef LIBOFX_DLL
53# ifdef IN_LIBOFX
54# define LIBOFX_API __declspec(dllexport)
55# else
56# define LIBOFX_API __declspec(dllimport)
57# endif
58#else
59#define LIBOFX_API
60#endif
61
62
63#ifdef __cplusplus
64extern "C" {
65#else
66#define true 1
67#define false 0
68#endif
69
70#define OFX_ELEMENT_NAME_LENGTH 100
71#define OFX_SVRTID2_LENGTH (36 + 1)
72#define OFX_CHECK_NUMBER_LENGTH (12 + 1)
73#define OFX_REFERENCE_NUMBER_LENGTH (32 + 1)
74#define OFX_FITID_LENGTH (255 + 1)
75#define OFX_TOKEN2_LENGTH (36 + 1)
76#define OFX_MEMO_LENGTH (255 + 1)
77#define OFX_FIID_LENGTH (32 + 1)
78#define OFX_MEMO2_LENGTH (390 + 1)
79#define OFX_BALANCE_NAME_LENGTH (32 + 1)
80#define OFX_BALANCE_DESCRIPTION_LENGTH (80 + 1)
81#define OFX_CURRENCY_LENGTH (3 + 1) /* In ISO-4217 format */
82#define OFX_BANKID_LENGTH (9 + 1)
83#define OFX_BRANCHID_LENGTH (22 + 1)
84#define OFX_ACCTID_LENGTH (22 + 1)
85#define OFX_ACCTKEY_LENGTH (22 + 1)
86#define OFX_BROKERID_LENGTH (22 + 1)
87 /* Must be MAX of <BANKID>+<BRANCHID>+<ACCTID>, <ACCTID>+<ACCTKEY> and <ACCTID>+<BROKERID> */
88#define OFX_ACCOUNT_ID_LENGTH (OFX_BANKID_LENGTH + OFX_BRANCHID_LENGTH + OFX_ACCTID_LENGTH + 1)
89#define OFX_ACCOUNT_NAME_LENGTH 255
90#define OFX_MARKETING_INFO_LENGTH (360 + 1)
91#define OFX_TRANSACTION_NAME_LENGTH (96 + 1)
92#define OFX_UNIQUE_ID_LENGTH (32 + 1)
93#define OFX_UNIQUE_ID_TYPE_LENGTH (10 + 1)
94#define OFX_SECNAME_LENGTH (120 + 1)
95#define OFX_TICKER_LENGTH (32 + 1)
96#define OFX_ORG_LENGTH (32 + 1)
97#define OFX_FID_LENGTH (32 + 1)
98#define OFX_USERID_LENGTH (32 + 1)
99#define OFX_USERPASS_LENGTH (32 + 1)
100#define OFX_URL_LENGTH (500 + 1)
101#define OFX_APPID_LENGTH (32)
102#define OFX_APPVER_LENGTH (32)
103#define OFX_HEADERVERSION_LENGTH (32)
104#define OFX_CLIENTUID_LENGTH (36 + 1)
105#define OFX_SECURITY_RATING_LENGTH (32 + 1)
106#define OFX_FIASSET_CLASS_LENGTH (32 + 1)
107#define OFX_LOANID_LENGTH (32 + 1)
108
109 /*
110 #define OFX_STATEMENT_CB 0;
111 #define OFX_ACCOUNT_CB 1;
112 #define OFX_TRACSACTION_CB 2;
113 #define OFX_SECURITY_CB 3;
114 #define OFX_STATUS_CB 4;
115 */
116
117 typedef void * LibofxContextPtr;
118
124 LibofxContextPtr libofx_get_new_context();
125
131 int libofx_free_context( LibofxContextPtr );
132
133 void libofx_set_dtd_dir(LibofxContextPtr libofx_context,
134 const char *s);
135
146
148 {
150 const char * format_name;
151 const char * description;
152 };
153
154
155#ifndef OFX_AQUAMANIAC_UGLY_HACK1
156
157 const struct LibofxFileFormatInfo LibofxImportFormatList[] =
158 {
159 {AUTODETECT, "AUTODETECT", "AUTODETECT (File format will be automatically detected later)"},
160 {OFX, "OFX", "OFX (Open Financial eXchange (OFX or QFX))"},
161 {OFC, "OFC", "OFC (Microsoft Open Financial Connectivity)"},
162 {QIF, "QIF", "QIF (Intuit Quicken Interchange Format) NOT IMPLEMENTED"},
163 {LAST, "LAST", "Not a file format, meant as a loop breaking condition"}
164 };
165
166 const struct LibofxFileFormatInfo LibofxExportFormatList[] =
167 {
168 {QIF, "QIF", "QIF (Intuit Quicken Interchange Format) NOT IMPLEMENTED"},
169 {LAST, "LAST", "Not a file format, meant as a loop breaking condition"}
170 };
171
183 enum LibofxFileFormat libofx_get_file_format_from_str(const struct LibofxFileFormatInfo format_list[], const char * file_type_string);
184
196 const char * libofx_get_file_format_description(const struct LibofxFileFormatInfo format_list[], enum LibofxFileFormat file_format);
197
198#endif
199
208 int libofx_proc_file(LibofxContextPtr libofx_context,
209 const char * p_filename,
210 enum LibofxFileFormat ftype);
211
212
226 {
231 char ofx_element_name[OFX_ELEMENT_NAME_LENGTH];
234
239 int code;
240 const char* name;
241 const char* description;
246 {
249 ERROR
250 } severity;
251 int severity_valid;
252
260 int server_message_valid;
262 };
263
264
274 typedef int (*LibofxProcStatusCallback)(const struct OfxStatusData data, void * status_data);
275
288 {
289
301 char account_id[OFX_ACCOUNT_ID_LENGTH];
302
308 char account_name[OFX_ACCOUNT_NAME_LENGTH];
309 int account_id_valid;/* Use for both account_id and account_name */
310
324 int account_type_valid;
325
327 char currency[OFX_CURRENCY_LENGTH];
328 int currency_valid;
329
331 char account_number[OFX_ACCTID_LENGTH];
332 int account_number_valid;
333
335 char bank_id[OFX_BANKID_LENGTH];
336 int bank_id_valid;
337
338 char broker_id[OFX_BROKERID_LENGTH];
339 int broker_id_valid;
340
341 char branch_id[OFX_BRANCHID_LENGTH];
342 int branch_id_valid;
343
344 };
345
360 typedef int (*LibofxProcAccountCallback)(const struct OfxAccountData data, void * account_data);
361
370 {
381 int security_type_valid;
382
390 char unique_id[OFX_UNIQUE_ID_LENGTH];
391 int unique_id_valid;
392
393 char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH];
395 int unique_id_type_valid;
396
397 char secname[OFX_SECNAME_LENGTH];
398 int secname_valid;
399
405 char ticker[OFX_TICKER_LENGTH];
406 int ticker_valid;
407
408 double unitprice;
410 int unitprice_valid;
411
412 char rating[OFX_SECURITY_RATING_LENGTH];
413 int rating_valid;
414
416 int date_unitprice_valid;
417
420 char currency[OFX_CURRENCY_LENGTH];
421 int currency_valid;
422
425 int currency_ratio_valid;
426
431 int amounts_are_foreign_currency_valid;
432
433 char memo[OFX_MEMO2_LENGTH];
434 int memo_valid;
435
438 char fiid[OFX_FIID_LENGTH];
439 int fiid_valid;
440
448 {
449 OFX_ASSET_CLASS_DOMESTICBOND,
450 OFX_ASSET_CLASS_INTLBOND,
451 OFX_ASSET_CLASS_LARGESTOCK,
452 OFX_ASSET_CLASS_SMALLSTOCK,
453 OFX_ASSET_CLASS_INTLSTOCK,
454 OFX_ASSET_CLASS_MONEYMRKT,
455 OFX_ASSET_CLASS_OTHER
456 } asset_class;
457 int asset_class_valid;
458
460 char fiasset_class[OFX_FIASSET_CLASS_LENGTH];
461 int fiasset_class_valid;
462
470 {
471 OFX_MFTYPE_OPENEND,
472 OFX_MFTYPE_CLOSEEND,
473 OFX_MFTYPE_OTHER
474 } mutual_fund_type;
475 int mutual_fund_type_valid;
476
479 {
480 OFX_STOCKTYPE_COMMON,
481 OFX_STOCKTYPE_PREFERRED,
482 OFX_STOCKTYPE_CONVERTIBLE,
483 OFX_STOCKTYPE_OTHER
484 } stock_type;
485 int stock_type_valid;
486
489 double yield;
490 int yield_valid;
491
493 int yield_asof_date_valid;
494
501 double par_value;
502 int par_value_valid;
503
506 {
507 OFX_DEBT_TYPE_COUPON,
508 OFX_DEBT_TYPE_ZERO
509 } debt_type;
510 int debt_type_valid;
511
519 {
520 OFX_DEBTCLASS_TREASURY,
521 OFX_DEBTCLASS_MUNICIPAL,
522 OFX_DEBTCLASS_CORPORATE,
523 OFX_DEBTCLASS_OTHER
524 } debt_class;
525 int debt_class_valid;
526
529 int coupon_rate_valid;
530
533 int date_coupon_valid;
534
537 {
538 OFX_COUPON_FREQ_MONTHLY,
539 OFX_COUPON_FREQ_QUARTERLY,
540 OFX_COUPON_FREQ_SEMIANNUAL,
541 OFX_COUPON_FREQ_ANNUAL,
542 OFX_COUPON_FREQ_OTHER
543 } coupon_freq;
544 int coupon_freq_valid;
545
548 int call_price_valid;
549
552 int yield_to_call_valid;
553
555 time_t call_date;
556 int call_date_valid;
557
560 {
561 OFX_CALL_TYPE_CALL,
562 OFX_CALL_TYPE_PUT,
563 OFX_CALL_TYPE_PREFUND,
564 OFX_CALL_TYPE_MATURITY
565 } call_type;
566 int call_type_valid;
567
570 int yield_to_maturity_valid;
571
574 int maturity_date_valid;
575
583 {
584 OFX_OPTION_TYPE_CALL,
585 OFX_OPTION_TYPE_PUT
586 } option_type;
587 int option_type_valid;
588
591 int strike_price_valid;
592
595 int date_expire_valid;
596
599 int shares_per_cont_valid;
600
608 char unique_id2[OFX_UNIQUE_ID_LENGTH];
609 int unique_id2_valid;
610
613 char unique_id2_type[OFX_UNIQUE_ID_TYPE_LENGTH];
614 int unique_id2_type_valid;
615
616 };/* end struct OfxSecurityData */
617
631 typedef int (*LibofxProcSecurityCallback)(const struct OfxSecurityData data, void * security_data);
632
653
678
679 typedef enum
680 {
681 DELETE,
683 REPLACE
686
694 {
695
701 char account_id[OFX_ACCOUNT_ID_LENGTH];
706 int account_id_valid;
707
708 TransactionType transactiontype;
710
714 InvTransactionType invtransactiontype;
715 int invtransactiontype_valid;
716
724 double units;
725 int units_valid;
726
727 double unitprice;
729 int unitprice_valid;
730
731 double amount;
735 int amount_valid;
736
737 char fi_id[OFX_FITID_LENGTH];
740 int fi_id_valid;
741
749 char unique_id[OFX_UNIQUE_ID_LENGTH];
750 int unique_id_valid;
751 char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH];
753 int unique_id_type_valid;
754
755 struct OfxSecurityData *security_data_ptr;
757
763 int date_posted_valid;
764
771 int date_initiated_valid;
772
776 int date_funds_available_valid;
777
781 char fi_id_corrected[OFX_FITID_LENGTH];
782 int fi_id_corrected_valid;
783
787 int fi_id_correction_action_valid;
788
791 char server_transaction_id[OFX_SVRTID2_LENGTH];
792 int server_transaction_id_valid;
793
797 char check_number[OFX_CHECK_NUMBER_LENGTH];
798 int check_number_valid;
799
802 char reference_number[OFX_REFERENCE_NUMBER_LENGTH];
803 int reference_number_valid;
804
807 int standard_industrial_code_valid;
808
809 char payee_id[OFX_SVRTID2_LENGTH];
810 int payee_id_valid;
811
812 char name[OFX_TRANSACTION_NAME_LENGTH];
814 int name_valid;
815
816 char memo[OFX_MEMO2_LENGTH];
817 int memo_valid;
818
820 int commission_valid;
821
822 double fees;
823 int fees_valid;
824
825 double oldunits;
826 int oldunits_valid;
827
828 double newunits;
829 int newunits_valid;
830
833 int market_value_valid;
834
836 char currency[OFX_CURRENCY_LENGTH];
837 int currency_valid;
838
841 int currency_ratio_valid;
842
847 int amounts_are_foreign_currency_valid;
848
854 int accrued_interest_valid;
855
857 int avg_cost_basis_valid;
858
862 {
863 OFX_BUY_TYPE_BUY,
864 OFX_BUY_TYPE_BUYTOCOVER,
865 OFX_BUY_TYPE_BUYTOOPEN,
866 OFX_BUY_TYPE_BUYTOCLOSE
867 } buy_type;
868 int buy_type_valid;
869
870 double denominator;
871 int denominator_valid;
872
874 int date_payroll_valid;
875
877 int date_purchase_valid;
878
879 double gain;
880 int gain_valid;
881
883 int cash_for_fractional_valid;
884
894 int income_type_valid;
895
898 {
899 OFX_401K_SOURCE_PRETAX,
900 OFX_401K_SOURCE_AFTERTAX,
901 OFX_401K_SOURCE_MATCH,
902 OFX_401K_SOURCE_PROFITSHARING,
903 OFX_401K_SOURCE_ROLLOVER,
904 OFX_401K_SOURCE_OTHERVEST,
905 OFX_401K_SOURCE_OTHERNONVEST
906 } inv_401k_source;
907 int inv_401k_source_valid;
908
909 double load;
910 int load_valid;
911
912 char loan_id[OFX_LOANID_LENGTH];
913 int loan_id_valid;
914
916 int loan_interest_valid;
917
919 int loan_principal_valid;
920
921 double markdown;
922 int markdown_valid;
923
924 double markup;
925 int markup_valid;
926
927 double numerator;
928 int numerator_valid;
929
932 {
933 OFX_OPTACTION_EXERCISE,
934 OFX_OPTACTION_ASSIGN,
935 OFX_OPTACTION_EXPIRE
936 } opt_action;
937 int opt_action_valid;
938
939 double penalty;
940 int penalty_valid;
941
944 {
945 OFX_POSTYPE_LONG,
946 OFX_POSTYPE_SHORT
947 } pos_type;
948 int pos_type_valid;
949
952 int prior_year_contrib_valid;
953
955 char related_fi_tid[OFX_FITID_LENGTH];
956 int related_fi_tid_valid;
957
960 {
961 OFX_RELTYPE_SPREAD,
962 OFX_RELTYPE_STRADDLE,
963 OFX_RELTYPE_NONE,
964 OFX_RELTYPE_OTHER
965 } related_type;
966 int related_type_valid;
967
970 {
971 OFX_SECURED_NAKED,
972 OFX_SECURED_COVERED
973 } option_secured;
974 int option_secured_valid;
975
983 int sell_reason_valid;
984
988 {
989 OFX_SELL_TYPE_SELL,
990 OFX_SELL_TYPE_SELLSHORT,
991 OFX_SELL_TYPE_SELLTOOPEN,
992 OFX_SELL_TYPE_SELLTOCLOSE
993 } sell_type;
994 int sell_type_valid;
995
998 int shares_per_cont_valid;
999
1002 int state_withholding_valid;
1003
1006 {
1007 OFX_SUBACCT_CASH,
1008 OFX_SUBACCT_MARGIN,
1009 OFX_SUBACCT_SHORT,
1010 OFX_SUBACCT_OTHER
1011 } subacct_from, subacct_funding, subacct_security, subacct_to;
1018 double taxes;
1019 int taxes_valid;
1020
1023 int tax_exempt_valid;
1024
1027 {
1028 OFX_TFERACTION_IN,
1029 OFX_TFERACTION_OUT
1030 } transfer_action;
1031 int transfer_action_valid;
1032
1035 {
1036 OFX_UNITTYPE_SHARES,
1037 OFX_UNITTYPE_CURRENCY
1038 } unit_type;
1039 int unit_type_valid;
1040
1043 int withholding_valid;
1044
1045 /*********** NOT YET COMPLETE!!! *********************/
1046 };
1047
1057 typedef int (*LibofxProcTransactionCallback)(const struct OfxTransactionData data, void * transaction_data);
1058
1069 {
1070
1080 char currency[OFX_CURRENCY_LENGTH];
1081 int currency_valid;
1082
1083 char account_id[OFX_ACCOUNT_ID_LENGTH];
1087 int account_id_valid;
1088
1092 int ledger_balance_valid;
1093
1095 int ledger_balance_date_valid;
1096
1099 int date_asof_valid;
1100
1109 int available_balance_valid;
1110
1112 int available_balance_date_valid;
1113
1116 int margin_balance_valid;
1117
1120 int short_balance_valid;
1121
1124 int buying_power_valid;
1125
1131 int date_start_valid;
1132
1137 time_t date_end;
1138 int date_end_valid;
1139
1142 char marketing_info[OFX_MARKETING_INFO_LENGTH];
1143 int marketing_info_valid;
1144 };
1145
1153 typedef int (*LibofxProcStatementCallback)(const struct OfxStatementData data, void * statement_data);
1154
1159 {
1160 char currency[OFX_CURRENCY_LENGTH];
1163 };
1164
1173 {
1175 char account_id[OFX_ACCOUNT_ID_LENGTH];
1180 int account_id_valid;
1181
1190 char unique_id[OFX_UNIQUE_ID_LENGTH];
1191 int unique_id_valid;
1192 char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH];
1194 int unique_id_type_valid;
1195
1205 int heldinaccount_type_valid;
1206
1209 {
1210 OFX_POSITION_SHORT,
1211 OFX_POSITION_LONG
1212 } position_type;
1213 int position_type_valid;
1214
1216 double units;
1217 int units_valid;
1218
1221 int unit_price_valid;
1222
1225 int market_value_valid;
1226
1229 int date_unit_price_valid;
1230
1238 char memo[OFX_MEMO_LENGTH];
1239 int memo_valid;
1240
1243 {
1244 OFX_401K_POSN_SOURCE_PRETAX,
1245 OFX_401K_POSN_SOURCE_AFTERTAX,
1246 OFX_401K_POSN_SOURCE_MATCH,
1247 OFX_401K_POSN_SOURCE_PROFITSHARING,
1248 OFX_401K_POSN_SOURCE_ROLLOVER,
1249 OFX_401K_POSN_SOURCE_OTHERVEST,
1250 OFX_401K_POSN_SOURCE_OTHERNONVEST
1251 } inv_401k_source;
1252 int inv_401k_source_valid;
1253
1255 char currency[OFX_CURRENCY_LENGTH];
1256 int currency_valid;
1257
1260 int currency_ratio_valid;
1261
1266 int amounts_are_foreign_currency_valid;
1267
1270 int security_data_valid;
1271
1272 };
1273
1281 typedef int (*LibofxProcPositionCallback)(const struct OfxPositionData data, void * position_data);
1282
1283
1290 void ofx_set_status_cb(LibofxContextPtr ctx,
1292 void *user_data);
1293
1300 void ofx_set_account_cb(LibofxContextPtr ctx,
1302 void *user_data);
1303
1310 void ofx_set_security_cb(LibofxContextPtr ctx,
1312 void *user_data);
1313
1320 void ofx_set_transaction_cb(LibofxContextPtr ctx,
1322 void *user_data);
1323
1330 void ofx_set_statement_cb(LibofxContextPtr ctx,
1332 void *user_data);
1333
1340 void ofx_set_position_cb(LibofxContextPtr ctx,
1342 void *user_data);
1343
1344
1348 /*int libofx_proc_buffer(LibofxContextPtr ctx,
1349 const char *s, unsigned int size);*/
1350
1351
1352 /* **************************************** */
1353
1359
1364 {
1365 char fid[OFX_FID_LENGTH];
1366 char org[OFX_ORG_LENGTH];
1367 char url[OFX_URL_LENGTH];
1372 };
1373
1384 {
1385 char fid[OFX_FID_LENGTH];
1386 char org[OFX_ORG_LENGTH];
1387 char userid[OFX_USERID_LENGTH];
1388 char userpass[OFX_USERPASS_LENGTH];
1389 char header_version[OFX_HEADERVERSION_LENGTH];
1390 char appid[OFX_APPID_LENGTH];
1391 char appver[OFX_APPVER_LENGTH];
1392 char clientuid[OFX_CLIENTUID_LENGTH];
1393 };
1394
1395#define OFX_AMOUNT_LENGTH (32 + 1)
1396#define OFX_PAYACCT_LENGTH (32 + 1)
1397#define OFX_STATE_LENGTH (5 + 1)
1398#define OFX_POSTALCODE_LENGTH (11 + 1)
1399#define OFX_NAME_LENGTH (32 + 1)
1400
1402 {
1403 char amount[OFX_AMOUNT_LENGTH];
1404 char account[OFX_PAYACCT_LENGTH];
1405 char datedue[9];
1406 char memo[OFX_MEMO_LENGTH];
1407 };
1408
1410 {
1411 char name[OFX_NAME_LENGTH];
1412 char address1[OFX_NAME_LENGTH];
1413 char city[OFX_NAME_LENGTH];
1414 char state[OFX_STATE_LENGTH];
1415 char postalcode[OFX_POSTALCODE_LENGTH];
1416 char phone[OFX_NAME_LENGTH];
1417 };
1418
1430 char* libofx_request_statement( const struct OfxFiLogin* fi, const struct OfxAccountData* account, time_t date_from );
1431
1442 char* libofx_request_accountinfo( const struct OfxFiLogin* login );
1443
1444 char* libofx_request_payment( const struct OfxFiLogin* login, const struct OfxAccountData* account, const struct OfxPayee* payee, const struct OfxPayment* payment );
1445
1446 char* libofx_request_payment_status( const struct OfxFiLogin* login, const char* transactionid );
1447
1449
1450extern LIBOFX_API int ofx_PARSER_msg;
1451extern LIBOFX_API int ofx_DEBUG_msg;
1452extern LIBOFX_API int ofx_DEBUG1_msg;
1453extern LIBOFX_API int ofx_DEBUG2_msg;
1454extern LIBOFX_API int ofx_DEBUG3_msg;
1455extern LIBOFX_API int ofx_DEBUG4_msg;
1456extern LIBOFX_API int ofx_DEBUG5_msg;
1457extern LIBOFX_API int ofx_STATUS_msg;
1458extern LIBOFX_API int ofx_INFO_msg;
1459extern LIBOFX_API int ofx_WARNING_msg;
1460extern LIBOFX_API int ofx_ERROR_msg;
1461extern LIBOFX_API int ofx_show_position;
1463#ifdef __cplusplus
1464} // end of extern "C"
1465#endif
1466
1467#if __GNUC__ && defined(IN_LIBOFX)
1468# pragma GCC visibility pop
1469#endif
1470
1471#endif // end of LIBOFX_H
int(* LibofxProcTransactionCallback)(const struct OfxTransactionData data, void *transaction_data)
The callback function for the OfxTransactionData structure.
Definition libofx.h:1057
void ofx_set_transaction_cb(LibofxContextPtr ctx, LibofxProcTransactionCallback cb, void *user_data)
Definition context.cpp:216
LIBOFX_API int ofx_DEBUG1_msg
Definition messages.cpp:38
LibofxContextPtr libofx_get_new_context()
Initialise the library and return a new context.
Definition context.cpp:165
void ofx_set_account_cb(LibofxContextPtr ctx, LibofxProcAccountCallback cb, void *user_data)
Definition context.cpp:198
int libofx_free_context(LibofxContextPtr)
Free all resources used by this context.
Definition context.cpp:170
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:360
char * libofx_request_accountinfo(const struct OfxFiLogin *login)
Creates an OFX account info (list) request in string form.
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:680
@ REPLACE
Definition libofx.h:683
@ DELETE
Definition libofx.h:681
LIBOFX_API int ofx_DEBUG2_msg
Definition messages.cpp:39
LIBOFX_API int ofx_STATUS_msg
Definition messages.cpp:43
int(* LibofxProcPositionCallback)(const struct OfxPositionData data, void *position_data)
The callback function for the OfxPositionData structure.
Definition libofx.h:1281
int libofx_proc_file(LibofxContextPtr libofx_context, const char *p_filename, enum LibofxFileFormat ftype)
libofx_proc_file is the entry point of the library.
LIBOFX_API int ofx_DEBUG_msg
Definition messages.cpp:37
int(* LibofxProcStatementCallback)(const struct OfxStatementData data, void *statement_data)
The callback function for the OfxStatementData structure.
Definition libofx.h:1153
LIBOFX_API int ofx_show_position
Definition messages.cpp:47
LIBOFX_API int ofx_DEBUG5_msg
Definition messages.cpp:42
LIBOFX_API int ofx_INFO_msg
Definition messages.cpp:44
LibofxFileFormat
Definition libofx.h:138
@ OFX
Definition libofx.h:140
@ QIF
Definition libofx.h:142
@ UNKNOWN
Definition libofx.h:143
@ LAST
Definition libofx.h:144
@ AUTODETECT
Definition libofx.h:139
@ OFC
Definition libofx.h:141
void ofx_set_position_cb(LibofxContextPtr ctx, LibofxProcPositionCallback cb, void *user_data)
Definition context.cpp:233
TransactionType
Definition libofx.h:634
@ OFX_XFER
Definition libofx.h:644
@ OFX_POS
Definition libofx.h:643
@ OFX_DIRECTDEP
Definition libofx.h:648
@ OFX_PAYMENT
Definition libofx.h:646
@ OFX_CASH
Definition libofx.h:647
@ OFX_CREDIT
Definition libofx.h:635
@ OFX_ATM
Definition libofx.h:642
@ OFX_OTHER
Definition libofx.h:651
@ OFX_INT
Definition libofx.h:637
@ OFX_CHECK
Definition libofx.h:645
@ OFX_SRVCHG
Definition libofx.h:640
@ OFX_DEBIT
Definition libofx.h:636
@ OFX_DIRECTDEBIT
Definition libofx.h:649
@ OFX_FEE
Definition libofx.h:639
@ OFX_DEP
Definition libofx.h:641
@ OFX_DIV
Definition libofx.h:638
@ OFX_REPEATPMT
Definition libofx.h:650
InvTransactionType
Definition libofx.h:655
@ OFX_SELLOTHER
Definition libofx.h:672
@ OFX_MARGININTEREST
Definition libofx.h:666
@ OFX_BUYOPT
Definition libofx.h:658
@ OFX_CLOSUREOPT
Definition libofx.h:661
@ OFX_JRNLSEC
Definition libofx.h:665
@ OFX_JRNLFUND
Definition libofx.h:664
@ OFX_INVBANKTRAN
Definition libofx.h:676
@ OFX_BUYMF
Definition libofx.h:657
@ OFX_SPLIT
Definition libofx.h:674
@ OFX_REINVEST
Definition libofx.h:667
@ OFX_INVEXPENSE
Definition libofx.h:663
@ OFX_SELLSTOCK
Definition libofx.h:673
@ OFX_RETOFCAP
Definition libofx.h:668
@ OFX_BUYSTOCK
Definition libofx.h:660
@ OFX_BUYOTHER
Definition libofx.h:659
@ OFX_SELLDEBT
Definition libofx.h:669
@ OFX_BUYDEBT
Definition libofx.h:656
@ OFX_INCOME
Definition libofx.h:662
@ OFX_TRANSFER
Definition libofx.h:675
@ OFX_SELLMF
Definition libofx.h:670
@ OFX_SELLOPT
Definition libofx.h:671
int(* LibofxProcSecurityCallback)(const struct OfxSecurityData data, void *security_data)
The callback function for the OfxSecurityData structure.
Definition libofx.h:631
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(* LibofxProcStatusCallback)(const struct OfxStatusData data, void *status_data)
The callback function for the OfxStatusData structure.
Definition libofx.h:274
void ofx_set_security_cb(LibofxContextPtr ctx, LibofxProcSecurityCallback cb, void *user_data)
Definition context.cpp:207
LIBOFX_API int ofx_WARNING_msg
Definition messages.cpp:45
void ofx_set_statement_cb(LibofxContextPtr ctx, LibofxProcStatementCallback cb, void *user_data)
Definition context.cpp:225
LIBOFX_API int ofx_DEBUG4_msg
Definition messages.cpp:41
LIBOFX_API int ofx_DEBUG3_msg
Definition messages.cpp:40
LIBOFX_API int ofx_PARSER_msg
Definition messages.cpp:36
LIBOFX_API int ofx_ERROR_msg
Definition messages.cpp:46
void ofx_set_status_cb(LibofxContextPtr ctx, LibofxProcStatusCallback cb, void *user_data)
Definition context.cpp:190
const char * format_name
Definition libofx.h:150
const char * description
Definition libofx.h:151
enum LibofxFileFormat format
Definition libofx.h:149
An abstraction of an account.
Definition libofx.h:288
char bank_id[OFX_BANKID_LENGTH]
Definition libofx.h:335
char account_name[OFX_ACCOUNT_NAME_LENGTH]
Definition libofx.h:308
char account_number[OFX_ACCTID_LENGTH]
Definition libofx.h:331
char account_id[OFX_ACCOUNT_ID_LENGTH]
Definition libofx.h:301
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:327
NOT YET SUPPORTED.
Definition libofx.h:1159
int must_convert
Definition libofx.h:1162
double exchange_rate
Definition libofx.h:1161
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:1160
Information sufficient to log into an financial institution.
Definition libofx.h:1384
Information returned by the OFX Partner Server about a financial institution.
Definition libofx.h:1364
An abstraction of a security position held in an account.
Definition libofx.h:1173
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:1255
char memo[OFX_MEMO_LENGTH]
Definition libofx.h:1238
@ OFX_HELDINACCT_MARGIN
Definition libofx.h:1201
struct OfxSecurityData * security_data_ptr
Definition libofx.h:1269
struct OfxAccountData * account_ptr
Definition libofx.h:1178
char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH]
Definition libofx.h:1192
int amounts_are_foreign_currency
Definition libofx.h:1265
char account_id[OFX_ACCOUNT_ID_LENGTH]
Definition libofx.h:1175
double currency_ratio
Definition libofx.h:1259
time_t date_unit_price
Definition libofx.h:1228
char unique_id[OFX_UNIQUE_ID_LENGTH]
Definition libofx.h:1190
double unit_price
Definition libofx.h:1220
double market_value
Definition libofx.h:1224
An abstraction of a security, such as a stock, mutual fund, etc.
Definition libofx.h:370
time_t maturity_date
Definition libofx.h:573
time_t yield_asof_date
Definition libofx.h:492
char unique_id[OFX_UNIQUE_ID_LENGTH]
Definition libofx.h:390
char fiid[OFX_FIID_LENGTH]
Definition libofx.h:438
double currency_ratio
Definition libofx.h:424
char unique_id2[OFX_UNIQUE_ID_LENGTH]
Definition libofx.h:608
time_t call_date
Definition libofx.h:555
time_t date_unitprice
Definition libofx.h:415
double strike_price
Definition libofx.h:590
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:420
char fiasset_class[OFX_FIASSET_CLASS_LENGTH]
Definition libofx.h:460
double yield_to_call
Definition libofx.h:551
char secname[OFX_SECNAME_LENGTH]
Definition libofx.h:397
int amounts_are_foreign_currency
Definition libofx.h:430
double yield
Definition libofx.h:489
char rating[OFX_SECURITY_RATING_LENGTH]
Definition libofx.h:412
double call_price
Definition libofx.h:547
char unique_id2_type[OFX_UNIQUE_ID_TYPE_LENGTH]
Definition libofx.h:613
time_t date_coupon
Definition libofx.h:532
@ OFX_OPTION_SECURITY
Definition libofx.h:377
double yield_to_maturity
Definition libofx.h:569
time_t date_expire
Definition libofx.h:594
double par_value
Definition libofx.h:501
char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH]
Definition libofx.h:393
double unitprice
Definition libofx.h:408
double shares_per_cont
Definition libofx.h:598
char memo[OFX_MEMO2_LENGTH]
Definition libofx.h:433
double coupon_rate
Definition libofx.h:528
char ticker[OFX_TICKER_LENGTH]
Definition libofx.h:405
An abstraction of an account statement.
Definition libofx.h:1069
double margin_balance
Definition libofx.h:1115
double ledger_balance
Definition libofx.h:1091
time_t date_asof
Definition libofx.h:1098
double buying_power
Definition libofx.h:1123
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:1080
time_t available_balance_date
Definition libofx.h:1111
time_t ledger_balance_date
Definition libofx.h:1094
struct OfxAccountData * account_ptr
Definition libofx.h:1085
double short_balance
Definition libofx.h:1119
time_t date_end
Definition libofx.h:1137
char account_id[OFX_ACCOUNT_ID_LENGTH]
Definition libofx.h:1083
time_t date_start
Definition libofx.h:1130
double available_balance
Definition libofx.h:1106
char marketing_info[OFX_MARKETING_INFO_LENGTH]
Definition libofx.h:1142
An abstraction of an OFX STATUS element.
Definition libofx.h:226
int ofx_element_name_valid
Definition libofx.h:233
char * server_message
Definition libofx.h:258
const char * description
Definition libofx.h:241
const char * name
Definition libofx.h:240
int code_valid
Definition libofx.h:242
An abstraction of a transaction in an account.
Definition libofx.h:694
double market_value
Definition libofx.h:832
char fi_id[OFX_FITID_LENGTH]
Definition libofx.h:737
char unique_id_type[OFX_UNIQUE_ID_TYPE_LENGTH]
Definition libofx.h:751
time_t date_funds_available
Definition libofx.h:773
int subacct_security_valid
Definition libofx.h:1014
FiIdCorrectionAction fi_id_correction_action
Definition libofx.h:786
long int standard_industrial_code
Definition libofx.h:805
char currency[OFX_CURRENCY_LENGTH]
Definition libofx.h:836
char unique_id[OFX_UNIQUE_ID_LENGTH]
Definition libofx.h:749
char memo[OFX_MEMO2_LENGTH]
Definition libofx.h:816
int security_data_valid
Definition libofx.h:756
int amounts_are_foreign_currency
Definition libofx.h:846
char related_fi_tid[OFX_FITID_LENGTH]
Definition libofx.h:955
double denominator
Definition libofx.h:870
char account_id[OFX_ACCOUNT_ID_LENGTH]
Definition libofx.h:701
time_t date_purchase
Definition libofx.h:876
double state_withholding
Definition libofx.h:1001
int subacct_funding_valid
Definition libofx.h:1013
double commission
Definition libofx.h:819
char name[OFX_TRANSACTION_NAME_LENGTH]
Definition libofx.h:812
time_t date_posted
Definition libofx.h:758
double currency_ratio
Definition libofx.h:840
int transactiontype_valid
Definition libofx.h:709
time_t date_payroll
Definition libofx.h:873
char fi_id_corrected[OFX_FITID_LENGTH]
Definition libofx.h:781
time_t date_initiated
Definition libofx.h:765
double cash_for_fractional
Definition libofx.h:882
char loan_id[OFX_LOANID_LENGTH]
Definition libofx.h:912
double loan_principal
Definition libofx.h:918
char payee_id[OFX_SVRTID2_LENGTH]
Definition libofx.h:809
char server_transaction_id[OFX_SVRTID2_LENGTH]
Definition libofx.h:791
double accrued_interest
Definition libofx.h:853
double shares_per_cont
Definition libofx.h:997
double loan_interest
Definition libofx.h:915
char check_number[OFX_CHECK_NUMBER_LENGTH]
Definition libofx.h:797
char reference_number[OFX_REFERENCE_NUMBER_LENGTH]
Definition libofx.h:802
double avg_cost_basis
Definition libofx.h:856
struct OfxAccountData * account_ptr
Definition libofx.h:704