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
64 extern "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 
138  {
140  OFX,
141  OFC,
142  QIF,
144  LAST
145  };
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;
245  enum Severity
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 
314  {
322  OFX_401K
323  } account_type;
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  {
374  {
380  } security_type;
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 
505  enum DebtType
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 
528  double coupon_rate;
529  int coupon_rate_valid;
530 
532  time_t date_coupon;
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 
547  double call_price;
548  int call_price_valid;
549 
552  int yield_to_call_valid;
553 
555  time_t call_date;
556  int call_date_valid;
557 
559  enum CallType
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 
590  double strike_price;
591  int strike_price_valid;
592 
594  time_t date_expire;
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 
633  typedef enum
634  {
651  OFX_OTHER
653 
654  typedef enum
655  {
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 
758  time_t date_posted;
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 
819  double commission;
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 
832  double market_value;
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 
856  double avg_cost_basis;
857  int avg_cost_basis_valid;
858 
861  enum BuyType
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 
873  time_t date_payroll;
874  int date_payroll_valid;
875 
876  time_t date_purchase;
877  int date_purchase_valid;
878 
879  double gain;
880  int gain_valid;
881 
883  int cash_for_fractional_valid;
884 
887  {
892  OFX_MISC
893  } income_type;
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 
915  double loan_interest;
916  int loan_interest_valid;
917 
918  double loan_principal;
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 
943  enum PosType
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 
978  {
982  } sell_reason;
983  int sell_reason_valid;
984 
987  enum SellType
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 
1042  double withholding;
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 
1098  time_t date_asof;
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 
1130  time_t date_start;
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];
1161  double exchange_rate;
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 
1199  {
1204  } heldinaccount_type;
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 
1220  double unit_price;
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];
1370  int billpay;
1372  };
1373 
1383  struct OfxFiLogin
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 
1401  struct OfxPayment
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 
1409  struct OfxPayee
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 
1450 extern LIBOFX_API int ofx_PARSER_msg;
1451 extern LIBOFX_API int ofx_DEBUG_msg;
1452 extern LIBOFX_API int ofx_DEBUG1_msg;
1453 extern LIBOFX_API int ofx_DEBUG2_msg;
1454 extern LIBOFX_API int ofx_DEBUG3_msg;
1455 extern LIBOFX_API int ofx_DEBUG4_msg;
1456 extern LIBOFX_API int ofx_DEBUG5_msg;
1457 extern LIBOFX_API int ofx_STATUS_msg;
1458 extern LIBOFX_API int ofx_INFO_msg;
1459 extern LIBOFX_API int ofx_WARNING_msg;
1460 extern LIBOFX_API int ofx_ERROR_msg;
1461 extern 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
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(* 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
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
char * libofx_request_accountinfo(const struct OfxFiLogin *login)
Creates an OFX account info (list) request in string form.
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
char * libofx_request_statement(const struct OfxFiLogin *fi, const struct OfxAccountData *account, time_t date_from)
Creates an OFX statement request in string form.
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
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
@ OFX_CREDITCARD
Definition: libofx.h:320
@ OFX_CREDITLINE
Definition: libofx.h:318
@ OFX_INVESTMENT
Definition: libofx.h:321
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_OTHER
Definition: libofx.h:1203
@ OFX_HELDINACCT_CASH
Definition: libofx.h:1200
@ OFX_HELDINACCT_MARGIN
Definition: libofx.h:1201
@ OFX_HELDINACCT_SHORT
Definition: libofx.h:1202
struct OfxSecurityData * security_data_ptr
Definition: libofx.h:1269
double units
Definition: libofx.h:1216
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_OTHER_SECURITY
Definition: libofx.h:379
@ OFX_STOCK_SECURITY
Definition: libofx.h:378
@ OFX_DEBT_SECURITY
Definition: libofx.h:375
@ OFX_OPTION_SECURITY
Definition: libofx.h:377
@ OFX_FUND_SECURITY
Definition: libofx.h:376
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
@ OFX_SELLREASON_MATURITY
Definition: libofx.h:981
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
double oldunits
Definition: libofx.h:825
int subacct_funding_valid
Definition: libofx.h:1013
double withholding
Definition: libofx.h:1042
int subacct_from_valid
Definition: libofx.h:1012
double commission
Definition: libofx.h:819
int prior_year_contrib
Definition: libofx.h:951
double numerator
Definition: libofx.h:927
double newunits
Definition: libofx.h:828
char name[OFX_TRANSACTION_NAME_LENGTH]
Definition: libofx.h:812
time_t date_posted
Definition: libofx.h:758
double penalty
Definition: libofx.h:939
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
double unitprice
Definition: libofx.h:727
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 markdown
Definition: libofx.h:921
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