Difference between revisions of "List of external software interfaces"

From GnuCash
Jump to: navigation, search
(more information)
(({{WebURL}} -> {{URL:www}}; http -> https; …)
 
(18 intermediate revisions by 7 users not shown)
Line 1: Line 1:
:Note: The main place for submitting enhancement requests is the bugzilla database, see [[Bugzilla]]. Feel free to collect anything you want here on this page, especially any kind of overview, but please keep in mind that single issues are followed by the developers in Bugzilla much more closely.
+
This article lists past and present external software interfaces of [[GnuCash]], and suggests possible additional interfaces. It was started to figure out how one can "plug in" to gnucash.
  
:Also: Can you please state the purpose of this page a bit more clearly? Should this be a status report of the currently existing interfaces? Or do you want to collect all interfaces that someone could imagine? In the latter case, I'd strongly suggest that you make it really totally obvious whether these 1. are currently existing and working, 2. used to exist and might be reactivated with moderate effort, or 3. are totally new features which would require really a lot of work. If you add descriptions like these as far as you know then, I'd gladly fill in the rest. --[[User:Cstim|Cstim]] 04:33, 23 February 2006 (EST)
+
'''This article is just ''descriptive'', and neither ''normative'' nor ''authoritative.'''''
 +
;Warning: Most of this page is still from 2006.
  
This article lists past and present external software interfaces of [[GnuCash]], and suggests possible additional interfaces.  In-process extensibility features are not listed (e.g. custom Scheme reports).
+
==Current interfaces==
 
+
* [[Wikipedia:Quicken Interchange Format|QIF]]/[[Wikipedia:Open Financial Exchange|OFX]]/[[Wikipedia:HBCI|HBCI]] import ([{{URL:GH}}Gnucash/gnucash/tree/zzzoldreleases/1.8/src/import-export src/import-export (1.8)]; [{{URL:GH}}Gnucash/gnucash/tree/stable/gnucash/import-export src/import-export (current)])
* [[Wikipedia:remote procedure call|RPC]] (bitrotted [http://lwn.net/Articles/43856/])
+
** From files: There are two different implementations of importing possibilities in gnucash. One is for QIF, the other for OFX and HBCI/AqBanking.
* [[Wikipedia:Perl|Perl]] bindings (bitrotted [http://lwn.net/Articles/43856/])
 
* [[Wikipedia:Quicken Interchange Format|QIF]]/[[Wikipedia:Open Financial Exchange|OFX]] import
 
** from files
 
 
*** CSV/TSV/[[Wikipedia:Microsoft Excel|XLS]]/[[Wikipedia:OpenDocument|ODS]] → QIF conversion (see [[FAQ#Q: How do I convert from CSV, TSV, XLS (Excel), or SXC (!OpenOffice.org Calc) to a QIF?]])
 
*** CSV/TSV/[[Wikipedia:Microsoft Excel|XLS]]/[[Wikipedia:OpenDocument|ODS]] → QIF conversion (see [[FAQ#Q: How do I convert from CSV, TSV, XLS (Excel), or SXC (!OpenOffice.org Calc) to a QIF?]])
*** OFX
+
*** See bugs for QIF import: [{{URL:Bugs}}buglist.cgi?product=GnuCash&component=Import - QIF&resolution=---]
**** [http://libofx.sourceforge.net/ libofx]
+
*** OFX import from file
** [[FAQ#Q:_My_bank_offers_OFX_Direct_Connect.__How_do_I_use_that.3F|OFX Direct Connect]] via AqBanking library http://www.aquamaniac.de/aqbanking. Aqbanking has also additional import/export facilities which are currently not yet implemented in gnucash.
+
**** bugs for OFX import: [{{URL:Bugs}}buglist.cgi?product=GnuCash&component=Import - OFX&resolution=---]
 +
**** [{{URL:GH}}libofx/libofx libofx]
 +
** [[FAQ#Q:_My_bank_offers_OFX_Direct_Connect.__How_do_I_use_that.3F|OFX Direct Connect]] via AqBanking library {{URL:AB}}aqbanking. Aqbanking has also additional import/export facilities which are currently not yet implemented in gnucash, but are almost finished for a MT940 file import. (Note: HBCI and Aqbanking are used interchangeably because the predecessor of Aqbanking only supported the German online banking protocol HBCI, but Aqbanking now supports not only this but additionally other means of online banking protocols plus file importing.)
 +
** [[HBCI]]
 +
** Bugs for general import, including HBCI/AqBanking import issues [{{URL:Bugs}}buglist.cgi?product=GnuCash&component=Import - AqBanking&resolution=---]
 
* direct data manipulation
 
* direct data manipulation
** XML, "risky and not recommended" (see [[FAQ#Q: Is there a way to merge two accounts into one? That is, move all transactions from one account into another? That would save a lot of time compaired to moving each transaction!|FAQ]])
+
** XML ([[GnuCash XML format]])
** PostgreSQL
+
*** "The new <nowiki>[1.6]</nowiki> version uses XML (making it much easier to write independent tools to manipulate GnuCash files) …" [[{{URL:www}}/docs/v1.6/C/t2780.html#AEN2783 GnuCash 1.6 User Manual]]
* QOF access to the data file. I hope http://qof.sourceforge.net does offer some documentation about how this is intended to work, but I don't understand it so far.
+
*** "[''modifying'' the XML is] risky and not recommended" (see [[FAQ#Q: Is there a way to merge two accounts into one? That is, move all transactions from one account into another? That would save a lot of time compaired to moving each transaction!|FAQ]])
 
+
** [[SQL]]: A generalized backend that supports [https://www.sqlite.org/ SQLite3], [https://www.mysql.com/ MySQL], and [https://www.postgresql.org/ PostgresQL]. This still has some issues with not saving all data in a few corner cases, largely due to flaws in GnuCash's data layer design. Directly querying the database is difficult for anything but the simplest queries, and correctly updating the database without using the GnuCash API is nearly impossible.
==Wish list==
+
* custom reports (in the programming language [[Wikipedia:Scheme|Scheme]])
* [[Wikipedia:CORBA|CORBA]], to communicate with a running GnuCash instance. E.g., a running GnuCash incarnates a CORBA object of type:
+
* <code>Finance::Quote</code> <!-- maybe this doesn't belong in this list.. is it intended to be extensible? Yes it is -->
<pre>interface GnuCash // simplified
+
* [http://www.parit.ca/projects/pythongnucash/ python-gnucash], a set of Python bindings to the GnuCash libraries
{
+
* [{{URL:GH}}goblin/gnucash-perl gnucash-perl], experimental Perl modules to interface the GnuCash file
  exception GnuCashException
+
* [{{URL:GH}}DenissLarka/jgnucashlib jgnucashlib], Java library for manipulating the GnuCash file
 
+
* [{{URL:GH}}tdf/pygnclib PyGncLib], python xml bindings and scripts for manipulating the GnuCash xml file
  typedef string Guid;
 
 
 
  struct Split
 
  {
 
    Guid id;
 
    boolean reconciledState;
 
    string value;
 
    string quantity;
 
    Guid account;
 
  };
 
 
 
  typedef sequence<Split> SplitSeq;
 
 
 
  struct Transaction
 
  {
 
    Guid id;
 
    string datePosted;
 
    string dateEntered;
 
    string description;
 
    SplitSeq splits;
 
  };
 
  
  void submitTransaction(in Transaction t)
+
==Legacy/unsupported interfaces==
    raises (GnuCashException);
+
These interfaces were supported in prior versions of GnuCash.
};</pre>
 
* linkable [[Wikipedia:library (computer science)|library]]
 
** for communicating with a running GnuCash instance
 
** for manipulation of GnuCash database or XML file directly
 
  
==See also==
+
* [{{URL:SF}}projects/jgnucashlib/ jgnucashlib], Original version of jgnucashlib by Marcus Wolschon, last update in 2013
* [[WishList#Connecting with PalmOS]]
+
* [[Wikipedia:remote procedure call|RPC]] ([{{URL:GH}}Gnucash/gnucash/tree/zzzoldreleases/1.8/src/backend/rpc back-end source (1.8)]) - bitrotted [https://lwn.net/Articles/43856/]
 +
* [[Wikipedia:Perl|Perl]] bindings (bitrotted [https://lwn.net/Articles/43856/])

Latest revision as of 13:27, 28 January 2024

This article lists past and present external software interfaces of GnuCash, and suggests possible additional interfaces. It was started to figure out how one can "plug in" to gnucash.

This article is just descriptive, and neither normative nor authoritative.

Warning
Most of this page is still from 2006.

Current interfaces

  • QIF/OFX/HBCI import (src/import-export (1.8); src/import-export (current))
  • direct data manipulation
    • XML (GnuCash XML format)
      • "The new [1.6] version uses XML (making it much easier to write independent tools to manipulate GnuCash files) …" [GnuCash 1.6 User Manual]
      • "[modifying the XML is] risky and not recommended" (see FAQ)
    • SQL: A generalized backend that supports SQLite3, MySQL, and PostgresQL. This still has some issues with not saving all data in a few corner cases, largely due to flaws in GnuCash's data layer design. Directly querying the database is difficult for anything but the simplest queries, and correctly updating the database without using the GnuCash API is nearly impossible.
  • custom reports (in the programming language Scheme)
  • Finance::Quote
  • python-gnucash, a set of Python bindings to the GnuCash libraries
  • gnucash-perl, experimental Perl modules to interface the GnuCash file
  • jgnucashlib, Java library for manipulating the GnuCash file
  • PyGncLib, python xml bindings and scripts for manipulating the GnuCash xml file

Legacy/unsupported interfaces

These interfaces were supported in prior versions of GnuCash.