Difference between revisions of "List of external software interfaces"
From GnuCash
(→Current interfaces: remove outdated qof) |
(add links to jgnucashlib and pygnclib) |
||
Line 23: | Line 23: | ||
* [http://www.parit.ca/projects/pythongnucash/ python-gnucash], a set of Python bindings to the GnuCash libraries | * [http://www.parit.ca/projects/pythongnucash/ python-gnucash], a set of Python bindings to the GnuCash libraries | ||
* [https://github.com/goblin/gnucash-perl gnucash-perl], experimental Perl modules to interface the GnuCash file | * [https://github.com/goblin/gnucash-perl gnucash-perl], experimental Perl modules to interface the GnuCash file | ||
+ | * [http://sourceforge.net/projects/jgnucashlib/ jgnucashlib], Java library for manipulating the GnuCash file (also has database connectors) | ||
+ | * [https://github.com/tdf/pygnclib PyGncLib], python xml bindings and scripts for manipulating the GnuCash xml file | ||
==Legacy/unsupported interfaces== | ==Legacy/unsupported interfaces== |
Revision as of 18:22, 2 March 2013
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.
Current interfaces
- QIF/OFX/HBCI import (src/import-export (1.8); src/import-export (1.9))
- From files: There are two different implementations of importing possibilities in gnucash. One is for QIF, the other for OFX and HBCI/AqBanking.
- 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, 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 [3]
- 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)
- PostgreSQL (back-end source (1.8)) - the PostgreSQL backend is not actively maintained and has several serious issues [4]
- XML (GnuCash XML format)
- 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 (also has database connectors)
- PyGncLib, python xml bindings and scripts for manipulating the GnuCash xml file
Legacy/unsupported interfaces
These interfaces were supported in prior versions of GnuCash.
- RPC (back-end source (1.8)) - bitrotted [5]
- Perl bindings (bitrotted [6])
Prospective interfaces
The main place for submitting enhancement requests is the Bugzilla database. 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.
- CORBA, to communicate with a running GnuCash instance. E.g., a running GnuCash incarnates a CORBA object of type:
interface GnuCash // simplified { exception GnuCashException 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) raises (GnuCashException); };
- linkable library (see also WishList#Export an API)
- Note that the modular structure of gnucash "almost" already offers this -- the "engine" module is pretty much exactly this kind of API. Except that nobody recently tried to use it from anywhere outside of gnucash.
- for communicating with a running GnuCash instance
- for manipulation of GnuCash database or XML file directly