2020-12-21 04:19:02 +03:00
|
|
|
% hledger-web(1)
|
2016-05-29 09:31:44 +03:00
|
|
|
% _author_
|
|
|
|
% _monthyear_
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2022-12-12 04:44:09 +03:00
|
|
|
_notinfo_({{
|
2015-10-20 16:26:09 +03:00
|
|
|
# NAME
|
2020-01-26 03:57:51 +03:00
|
|
|
}})
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2024-05-30 06:00:11 +03:00
|
|
|
hledger-web - web interface and API for `hledger`, a robust, friendly plain text accounting app.
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2022-12-12 04:44:09 +03:00
|
|
|
_notinfo_({{
|
2015-10-20 16:26:09 +03:00
|
|
|
# SYNOPSIS
|
2020-01-26 03:57:51 +03:00
|
|
|
}})
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2024-06-01 07:17:04 +03:00
|
|
|
`hledger-web [OPTS] [QUERY]`\
|
|
|
|
or\
|
|
|
|
`hledger web -- [OPTS] [QUERY]`
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2022-12-12 04:44:09 +03:00
|
|
|
_notinfo_({{
|
2017-01-26 20:02:46 +03:00
|
|
|
# DESCRIPTION
|
2020-01-26 03:57:51 +03:00
|
|
|
}})
|
2017-01-26 20:02:46 +03:00
|
|
|
|
2022-12-12 04:44:09 +03:00
|
|
|
This manual is for hledger's web interface, version _version_.
|
|
|
|
See also the hledger manual for common concepts and file formats.
|
|
|
|
|
2017-01-26 20:02:46 +03:00
|
|
|
_hledgerdescription_
|
|
|
|
|
2017-01-26 19:41:06 +03:00
|
|
|
_web_({{
|
2021-07-29 11:24:25 +03:00
|
|
|
<div class="screenshots-right">
|
2022-11-09 00:55:09 +03:00
|
|
|
<a href="/images/hledger-web/normal/register.png" class="highslide" onclick="return hs.expand(this)"><img src="/images/hledger-web/normal/register.png" title="Account register view with accounts sidebar" height="180" /></a>
|
|
|
|
<a href="/images/hledger-web/normal/journal.png" class="highslide" onclick="return hs.expand(this)"><img src="/images/hledger-web/normal/journal.png" title="Journal view" height="180" /></a>
|
|
|
|
<a href="/images/hledger-web/normal/help.png" class="highslide" onclick="return hs.expand(this)"><img src="/images/hledger-web/normal/help.png" title="Help dialog" height="180" /></a>
|
|
|
|
<a href="/images/hledger-web/normal/add.png" class="highslide" onclick="return hs.expand(this)"><img src="/images/hledger-web/normal/add.png" title="Add form" height="180" /></a>
|
2017-01-26 20:02:46 +03:00
|
|
|
</div>
|
2016-04-16 20:09:51 +03:00
|
|
|
}})
|
2016-02-21 13:32:40 +03:00
|
|
|
|
2022-11-03 20:43:53 +03:00
|
|
|
hledger-web is a simple web application for browsing and adding transactions.
|
2015-10-26 16:46:29 +03:00
|
|
|
It provides a more user-friendly UI than the hledger CLI or
|
2022-11-03 20:43:53 +03:00
|
|
|
hledger-ui TUI, showing more at once (accounts, the current account register,
|
|
|
|
balance charts) and allowing history-aware data entry, interactive searching,
|
|
|
|
and bookmarking.
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2022-11-03 20:43:53 +03:00
|
|
|
hledger-web also lets you share a journal with multiple users, or even the public web.
|
2015-10-20 16:26:09 +03:00
|
|
|
There is no access control, so if you need that you should put it
|
|
|
|
behind a suitable web proxy. As a small protection against data loss
|
|
|
|
when running an unprotected instance, it writes a numbered backup of
|
2022-11-03 20:43:53 +03:00
|
|
|
the main journal file (only) on every edit.
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2023-05-26 01:23:43 +03:00
|
|
|
Like hledger, it _inputfileswithptr_
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2022-11-03 20:43:53 +03:00
|
|
|
hledger-web can be run in three modes:
|
|
|
|
|
|
|
|
- Transient mode (the default):
|
|
|
|
your default web browser will be opened to show the app if possible,
|
|
|
|
and the app exits automatically after two minutes of inactivity
|
|
|
|
(no requests received and no open browser windows viewing it).
|
|
|
|
|
|
|
|
- With `--serve`: the app runs without stopping, and without opening a browser.
|
|
|
|
|
|
|
|
- With `--serve-api`: only the JSON API is served.
|
|
|
|
|
|
|
|
In all cases hledger-web runs as a foreground process, logging requests to stdout.
|
|
|
|
|
2019-02-19 10:59:46 +03:00
|
|
|
# OPTIONS
|
|
|
|
|
2023-05-31 11:35:01 +03:00
|
|
|
hledger-web provides the following options:
|
2019-02-19 10:59:46 +03:00
|
|
|
|
2024-06-01 07:17:04 +03:00
|
|
|
```
|
|
|
|
Flags:
|
|
|
|
--serve --server serve and log requests, don't browse or auto-exit
|
|
|
|
--serve-api like --serve, but serve only the JSON web API,
|
|
|
|
not the web UI
|
|
|
|
--allow=view|add|edit set the user's access level for changing data
|
|
|
|
(default: `add`). It also accepts `sandstorm` for
|
|
|
|
use on that platform (reads permissions from the
|
|
|
|
`X-Sandstorm-Permissions` request header).
|
|
|
|
--cors=ORIGIN allow cross-origin requests from the specified
|
|
|
|
origin; setting ORIGIN to "*" allows requests from
|
|
|
|
any origin
|
|
|
|
--host=IPADDR listen on this IP address (default: 127.0.0.1)
|
|
|
|
--port=PORT listen on this TCP port (default: 5000)
|
|
|
|
--socket=SOCKET listen on the given unix socket instead of an IP
|
|
|
|
address and port (unix only; implies --serve)
|
|
|
|
--base-url=BASEURL set the base url (default: http://IPADDR:PORT)
|
|
|
|
--test run hledger-web's tests and exit. hspec test
|
|
|
|
runner args may follow a --, eg: hledger-web --test
|
|
|
|
-- --help
|
|
|
|
```
|
|
|
|
|
|
|
|
By default hledger-web listens only on IP address `127.0.0.1`,
|
|
|
|
which be accessed only from the local machine.
|
|
|
|
|
|
|
|
To allow access from elsewhere, use `--host` to specify an externally accessible address configured on this machine,
|
|
|
|
The special address `0.0.0.0` causes it to listen on all of this machine's addresses.
|
2019-02-19 10:59:46 +03:00
|
|
|
|
2023-12-15 04:22:54 +03:00
|
|
|
Similarly, you can use `--port` to listen on a TCP port other than 5000.
|
|
|
|
This is useful if you want to run multiple hledger-web instances on a machine.
|
|
|
|
|
|
|
|
When `--socket` is used, hledger-web creates and communicates via a socket file instead of a TCP port.
|
|
|
|
This can be more secure, respects unix file permissions, and makes certain use cases easier,
|
|
|
|
such as running per-user instances behind an nginx reverse proxy. (Eg:
|
|
|
|
`proxy_pass http://unix:/tmp/hledger/${remote_user}.socket;`.)
|
2019-07-18 02:58:33 +03:00
|
|
|
|
2024-06-01 07:17:04 +03:00
|
|
|
You can use `--base-url` to change the protocol, hostname, port and path that appear in
|
2023-12-15 04:22:54 +03:00
|
|
|
hledger-web's hyperlinks. This is useful eg when integrating hledger-web within a larger website.
|
|
|
|
The default is `http://HOST:PORT/` using the server's configured host address and TCP port
|
|
|
|
(or `http://HOST` if PORT is 80).
|
|
|
|
Note this affects url generation but not route parsing.
|
2019-02-19 10:59:46 +03:00
|
|
|
|
2023-12-16 02:57:25 +03:00
|
|
|
<!-- #2139
|
2019-02-19 10:59:46 +03:00
|
|
|
`--file-url=URL`
|
2023-12-15 04:22:54 +03:00
|
|
|
: set a different base url for static files (default: `BASEURL/static/`)
|
2019-02-19 10:59:46 +03:00
|
|
|
|
2023-12-15 04:22:54 +03:00
|
|
|
hledger-web normally serves static files itself,
|
|
|
|
but if you wanted to serve them from another server,
|
|
|
|
eg for better caching or cookie-less serving on high performance websites,
|
|
|
|
you can customise their urls with this.
|
2023-12-16 02:57:25 +03:00
|
|
|
-->
|
2019-02-19 10:59:46 +03:00
|
|
|
|
2024-06-01 07:17:04 +03:00
|
|
|
hledger-web also supports many of hledger's [general options](hledger.md#options):
|
2016-11-21 18:38:58 +03:00
|
|
|
|
2024-06-01 07:17:04 +03:00
|
|
|
_generaloptions_
|
2023-05-31 11:35:01 +03:00
|
|
|
|
2024-06-01 07:17:04 +03:00
|
|
|
hledger-web shows accounts with zero balances by default (like `hledger-ui`, and unlike `hledger`).
|
|
|
|
Using the `-E/--empty` flag will reverse this behaviour.
|
|
|
|
If you see accounts which appear to have a zero balance, but cannot be hidden with `-E`,
|
|
|
|
it's because they have a mixed-cost balance, which looks like zero when costs are hidden.
|
|
|
|
(hledger-web does not show costs.)
|
2023-05-31 11:35:01 +03:00
|
|
|
|
2024-06-01 07:17:04 +03:00
|
|
|
Reporting options and/or query arguments can be used to set an initial query,
|
|
|
|
which although not shown in the UI, will restrict the data shown
|
|
|
|
(in addition to any search query entered in the UI).
|
2023-05-31 11:35:01 +03:00
|
|
|
|
2019-02-19 01:40:14 +03:00
|
|
|
# PERMISSIONS
|
2015-10-26 16:46:29 +03:00
|
|
|
|
2020-02-08 23:08:47 +03:00
|
|
|
By default, hledger-web allows anyone who can reach it to view the journal
|
2019-02-19 01:40:14 +03:00
|
|
|
and to add new transactions, but not to change existing data.
|
|
|
|
|
|
|
|
You can restrict who can reach it by
|
|
|
|
|
2020-02-08 23:08:47 +03:00
|
|
|
- setting the IP address it listens on (see `--host` above).
|
|
|
|
By default it listens on 127.0.0.1, accessible to all users on the local machine.
|
2019-02-19 01:40:14 +03:00
|
|
|
- putting it behind an authenticating proxy, using eg apache or nginx
|
|
|
|
- custom firewall rules
|
|
|
|
|
|
|
|
You can restrict what the users who reach it can do, by
|
|
|
|
|
2020-02-08 23:08:47 +03:00
|
|
|
- using the `--capabilities=CAP[,CAP..]` flag when you start it,
|
2019-02-19 01:40:14 +03:00
|
|
|
enabling one or more of the following capabilities. The default value is `view,add`:
|
|
|
|
- `view` - allows viewing the journal file and all included files
|
2020-02-08 23:08:47 +03:00
|
|
|
- `add` - allows adding new transactions to the main journal file
|
|
|
|
- `manage` - allows editing, uploading or downloading the main or included files
|
2019-02-19 01:40:14 +03:00
|
|
|
|
|
|
|
- using the `--capabilities-header=HTTPHEADER` flag to specify a HTTP header
|
|
|
|
from which it will read capabilities to enable. hledger-web on Sandstorm
|
2020-02-08 23:08:47 +03:00
|
|
|
uses the X-Sandstorm-Permissions header to integrate with Sandstorm's permissions.
|
2019-02-19 01:40:14 +03:00
|
|
|
This is disabled by default.
|
|
|
|
|
2019-02-19 02:01:36 +03:00
|
|
|
# EDITING, UPLOADING, DOWNLOADING
|
2019-02-19 01:40:14 +03:00
|
|
|
|
2019-02-19 02:01:36 +03:00
|
|
|
If you enable the `manage` capability mentioned above,
|
|
|
|
you'll see a new "spanner" button to the right of the search form.
|
|
|
|
Clicking this will let you edit, upload, or download the journal
|
2020-02-08 23:08:47 +03:00
|
|
|
file or any files it includes.
|
2019-02-19 02:01:36 +03:00
|
|
|
|
|
|
|
Note, unlike any other hledger command, in this mode you (or any visitor)
|
2020-02-08 23:08:47 +03:00
|
|
|
can alter or wipe the data files.
|
2019-02-19 01:40:14 +03:00
|
|
|
|
|
|
|
Normally whenever a file is changed in this way, hledger-web saves a numbered backup
|
|
|
|
(assuming file permissions allow it, the disk is not full, etc.)
|
2019-02-19 02:01:36 +03:00
|
|
|
hledger-web is not aware of version control systems, currently; if you use one,
|
2019-02-19 01:40:14 +03:00
|
|
|
you'll have to arrange to commit the changes yourself (eg with a cron job
|
|
|
|
or a file watcher like entr).
|
|
|
|
|
2020-02-08 23:08:47 +03:00
|
|
|
Changes which would leave the journal file(s) unparseable or non-valid
|
2019-02-19 02:01:36 +03:00
|
|
|
(eg with failing balance assertions) are prevented.
|
|
|
|
(Probably. This needs re-testing.)
|
2019-02-19 01:40:14 +03:00
|
|
|
|
|
|
|
# RELOADING
|
|
|
|
|
|
|
|
hledger-web detects changes made to the files by other means (eg if you edit
|
|
|
|
it directly, outside of hledger-web), and it will show the new data
|
2020-02-08 23:08:47 +03:00
|
|
|
when you reload the page or navigate to a new page.
|
2019-02-19 01:40:14 +03:00
|
|
|
If a change makes a file unparseable,
|
|
|
|
hledger-web will display an error message until the file has been fixed.
|
2016-04-10 22:12:12 +03:00
|
|
|
|
2019-06-11 20:20:45 +03:00
|
|
|
(Note: if you are viewing files mounted from another machine, make
|
|
|
|
sure that both machine clocks are roughly in step.)
|
|
|
|
|
2019-02-19 10:57:58 +03:00
|
|
|
# JSON API
|
|
|
|
|
2020-05-21 20:48:04 +03:00
|
|
|
In addition to the web UI, hledger-web also serves a JSON API that can be
|
|
|
|
used to get data or add new transactions.
|
2020-05-21 22:51:29 +03:00
|
|
|
If you want the JSON API only, you can use the `--serve-api` flag. Eg:
|
2020-05-21 20:48:04 +03:00
|
|
|
|
2023-11-26 21:30:04 +03:00
|
|
|
```cli
|
2020-05-21 22:51:29 +03:00
|
|
|
$ hledger-web -f examples/sample.journal --serve-api
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
You can get JSON data from these routes:
|
2020-05-21 20:48:04 +03:00
|
|
|
|
2019-02-19 10:57:58 +03:00
|
|
|
```
|
2020-09-30 03:27:21 +03:00
|
|
|
/version
|
2019-02-19 10:57:58 +03:00
|
|
|
/accountnames
|
|
|
|
/transactions
|
|
|
|
/prices
|
|
|
|
/commodities
|
|
|
|
/accounts
|
2020-05-21 22:51:29 +03:00
|
|
|
/accounttransactions/ACCOUNTNAME
|
2019-02-19 10:57:58 +03:00
|
|
|
```
|
|
|
|
|
2020-06-06 22:54:38 +03:00
|
|
|
Eg, all account names in the journal (similar to the [accounts](hledger.html#accounts) command).
|
|
|
|
(hledger-web's JSON does not include newlines, here we use python to prettify it):
|
2020-05-21 22:51:29 +03:00
|
|
|
|
2023-11-26 21:30:04 +03:00
|
|
|
```cli
|
2020-05-21 22:51:29 +03:00
|
|
|
$ curl -s http://127.0.0.1:5000/accountnames | python -m json.tool
|
|
|
|
[
|
|
|
|
"assets",
|
|
|
|
"assets:bank",
|
|
|
|
"assets:bank:checking",
|
|
|
|
"assets:bank:saving",
|
|
|
|
"assets:cash",
|
|
|
|
"expenses",
|
|
|
|
"expenses:food",
|
|
|
|
"expenses:supplies",
|
|
|
|
"income",
|
|
|
|
"income:gifts",
|
|
|
|
"income:salary",
|
|
|
|
"liabilities",
|
|
|
|
"liabilities:debts"
|
|
|
|
]
|
|
|
|
```
|
|
|
|
|
|
|
|
Or all transactions:
|
2019-05-14 19:22:50 +03:00
|
|
|
|
2023-11-26 21:30:04 +03:00
|
|
|
```cli
|
2020-05-21 22:51:29 +03:00
|
|
|
$ curl -s http://127.0.0.1:5000/transactions | python -m json.tool
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"tcode": "",
|
|
|
|
"tcomment": "",
|
|
|
|
"tdate": "2008-01-01",
|
|
|
|
"tdate2": null,
|
|
|
|
"tdescription": "income",
|
|
|
|
"tindex": 1,
|
|
|
|
"tpostings": [
|
|
|
|
{
|
|
|
|
"paccount": "assets:bank:checking",
|
|
|
|
"pamount": [
|
|
|
|
{
|
|
|
|
"acommodity": "$",
|
|
|
|
"aismultiplier": false,
|
|
|
|
"aprice": null,
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
Most of the JSON corresponds to hledger's data types; for details of what the fields mean, see the
|
2022-12-12 04:22:46 +03:00
|
|
|
[Hledger.Data.Json haddock docs](https://hackage.haskell.org/package/hledger-lib-1.17.1/docs/Hledger-Data-Json.html)
|
2020-05-21 22:51:29 +03:00
|
|
|
and click on the various data types, eg
|
2022-12-12 04:22:46 +03:00
|
|
|
[Transaction](https://hackage.haskell.org/package/hledger-lib-1.17.1/docs/Hledger-Data-Types.html#t:Transaction).
|
|
|
|
And for a higher level understanding, see the [journal docs](hledger.html#journal).
|
2024-06-01 08:41:23 +03:00
|
|
|
There is also a basic [OpenAPI specification][openapi.yaml].
|
|
|
|
|
|
|
|
[openapi.yaml]: https://github.com/simonmichael/hledger/blob/master/hledger-web/config/openapi.yaml
|
2020-05-21 22:51:29 +03:00
|
|
|
|
|
|
|
In some cases there is outer JSON corresponding to a "Report" type.
|
|
|
|
To understand that, go to the
|
2022-12-12 04:22:46 +03:00
|
|
|
[Hledger.Web.Handler.MiscR haddock](https://hackage.haskell.org/package/hledger-web-1.17.1/docs/Hledger-Web-Handler-MiscR.html)
|
2020-05-21 22:51:29 +03:00
|
|
|
and look at the source for the appropriate handler to see what it returns.
|
|
|
|
Eg for `/accounttransactions` it's
|
2022-12-12 04:22:46 +03:00
|
|
|
[getAccounttransactionsR](https://hackage.haskell.org/package/hledger-web-1.17.1/docs/src/Hledger.Web.Handler.MiscR.html#getAccounttransactionsR),
|
2020-05-21 22:51:29 +03:00
|
|
|
returning a "`accountTransactionsReport ...`".
|
|
|
|
[Looking up](https://hoogle.haskell.org/?hoogle=accountTransactionsReport) the haddock for that
|
|
|
|
we can see that /accounttransactions returns an
|
|
|
|
[AccountTransactionsReport](https://hackage.haskell.org/package/hledger-lib-1.17.1/docs/Hledger-Reports-AccountTransactionsReport.html#t:AccountTransactionsReport),
|
|
|
|
which consists of a report title and a list of AccountTransactionsReportItem (etc).
|
|
|
|
|
|
|
|
You can add a new transaction to the journal with a PUT request to `/add`,
|
|
|
|
if hledger-web was started with the `add` capability (enabled by default).
|
2020-05-21 20:48:04 +03:00
|
|
|
The payload must be the full, exact JSON representation of a hledger transaction
|
|
|
|
(partial data won't do).
|
2020-06-06 22:54:38 +03:00
|
|
|
You can get sample JSON from hledger-web's `/transactions` or `/accounttransactions`,
|
|
|
|
or you can export it with hledger-lib, eg like so:
|
2019-05-14 19:22:50 +03:00
|
|
|
|
2023-11-26 21:30:04 +03:00
|
|
|
```cli
|
2020-06-06 22:54:38 +03:00
|
|
|
.../hledger$ stack ghci hledger-lib
|
|
|
|
>>> writeJsonFile "txn.json" (head $ jtxns samplejournal)
|
2019-05-14 19:22:50 +03:00
|
|
|
>>> :q
|
|
|
|
```
|
|
|
|
|
2020-05-21 22:51:29 +03:00
|
|
|
Here's how it looks as of hledger-1.17
|
|
|
|
(remember, this JSON corresponds to hledger's
|
|
|
|
[Transaction](http://hackage.haskell.org/package/hledger-lib-1.17.1/docs/Hledger-Data-Types.html#t:Transaction)
|
|
|
|
and related data types):
|
2020-05-21 19:57:27 +03:00
|
|
|
|
2020-05-21 19:50:50 +03:00
|
|
|
```json
|
|
|
|
{
|
|
|
|
"tcomment": "",
|
|
|
|
"tpostings": [
|
|
|
|
{
|
2020-06-06 22:54:38 +03:00
|
|
|
"pbalanceassertion": null,
|
|
|
|
"pstatus": "Unmarked",
|
2020-05-21 19:50:50 +03:00
|
|
|
"pamount": [
|
|
|
|
{
|
|
|
|
"aprice": null,
|
2020-06-06 22:54:38 +03:00
|
|
|
"acommodity": "$",
|
2020-05-21 19:50:50 +03:00
|
|
|
"aquantity": {
|
2020-06-06 22:54:38 +03:00
|
|
|
"floatingPoint": 1,
|
2020-05-21 19:50:50 +03:00
|
|
|
"decimalPlaces": 10,
|
2020-06-06 22:54:38 +03:00
|
|
|
"decimalMantissa": 10000000000
|
2020-05-21 19:50:50 +03:00
|
|
|
},
|
2020-06-06 22:54:38 +03:00
|
|
|
"aismultiplier": false,
|
2020-05-21 19:50:50 +03:00
|
|
|
"astyle": {
|
|
|
|
"ascommodityside": "L",
|
|
|
|
"asdigitgroups": null,
|
2020-06-06 22:54:38 +03:00
|
|
|
"ascommodityspaced": false,
|
|
|
|
"asprecision": 2,
|
|
|
|
"asdecimalpoint": "."
|
2020-05-21 19:50:50 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
2020-06-06 22:54:38 +03:00
|
|
|
"ptransaction_": "1",
|
|
|
|
"paccount": "assets:bank:checking",
|
2020-05-21 19:50:50 +03:00
|
|
|
"pdate": null,
|
2020-06-06 22:54:38 +03:00
|
|
|
"ptype": "RegularPosting",
|
|
|
|
"pcomment": "",
|
2020-05-21 19:50:50 +03:00
|
|
|
"pdate2": null,
|
|
|
|
"ptags": [],
|
2020-06-06 22:54:38 +03:00
|
|
|
"poriginal": null
|
2020-05-21 19:50:50 +03:00
|
|
|
},
|
|
|
|
{
|
2020-06-06 22:54:38 +03:00
|
|
|
"pbalanceassertion": null,
|
|
|
|
"pstatus": "Unmarked",
|
2020-05-21 19:50:50 +03:00
|
|
|
"pamount": [
|
|
|
|
{
|
|
|
|
"aprice": null,
|
2020-06-06 22:54:38 +03:00
|
|
|
"acommodity": "$",
|
2020-05-21 19:50:50 +03:00
|
|
|
"aquantity": {
|
2020-06-06 22:54:38 +03:00
|
|
|
"floatingPoint": -1,
|
2020-05-21 19:50:50 +03:00
|
|
|
"decimalPlaces": 10,
|
2020-06-06 22:54:38 +03:00
|
|
|
"decimalMantissa": -10000000000
|
2020-05-21 19:50:50 +03:00
|
|
|
},
|
2020-06-06 22:54:38 +03:00
|
|
|
"aismultiplier": false,
|
2020-05-21 19:50:50 +03:00
|
|
|
"astyle": {
|
|
|
|
"ascommodityside": "L",
|
|
|
|
"asdigitgroups": null,
|
2020-06-06 22:54:38 +03:00
|
|
|
"ascommodityspaced": false,
|
|
|
|
"asprecision": 2,
|
|
|
|
"asdecimalpoint": "."
|
2020-05-21 19:50:50 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
2020-06-06 22:54:38 +03:00
|
|
|
"ptransaction_": "1",
|
|
|
|
"paccount": "income:salary",
|
2020-05-21 19:50:50 +03:00
|
|
|
"pdate": null,
|
2020-06-06 22:54:38 +03:00
|
|
|
"ptype": "RegularPosting",
|
|
|
|
"pcomment": "",
|
2020-05-21 19:50:50 +03:00
|
|
|
"pdate2": null,
|
|
|
|
"ptags": [],
|
2020-06-06 22:54:38 +03:00
|
|
|
"poriginal": null
|
2020-05-21 19:50:50 +03:00
|
|
|
}
|
|
|
|
],
|
2020-06-06 22:54:38 +03:00
|
|
|
"ttags": [],
|
2020-05-21 19:50:50 +03:00
|
|
|
"tsourcepos": {
|
2020-06-06 22:54:38 +03:00
|
|
|
"tag": "JournalSourcePos",
|
2020-05-21 19:50:50 +03:00
|
|
|
"contents": [
|
|
|
|
"",
|
|
|
|
[
|
|
|
|
1,
|
|
|
|
1
|
|
|
|
]
|
2020-06-06 22:54:38 +03:00
|
|
|
]
|
2020-05-21 19:50:50 +03:00
|
|
|
},
|
2020-06-06 22:54:38 +03:00
|
|
|
"tdate": "2008-01-01",
|
|
|
|
"tcode": "",
|
|
|
|
"tindex": 1,
|
|
|
|
"tprecedingcomment": "",
|
|
|
|
"tdate2": null,
|
|
|
|
"tdescription": "income",
|
|
|
|
"tstatus": "Unmarked"
|
2020-05-21 19:50:50 +03:00
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
And here's how to test adding it with curl. This should add a new entry to your journal:
|
|
|
|
|
2023-11-26 21:30:04 +03:00
|
|
|
```cli
|
2020-05-21 19:50:50 +03:00
|
|
|
$ curl http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.json
|
2019-05-14 19:22:50 +03:00
|
|
|
```
|
|
|
|
|
2022-11-04 06:16:55 +03:00
|
|
|
# DEBUG OUTPUT
|
|
|
|
|
|
|
|
## Debug output
|
|
|
|
|
|
|
|
You can add `--debug[=N]` to the command line to log debug output.
|
|
|
|
N ranges from 1 (least output, the default) to 9 (maximum output).
|
|
|
|
Typically you would start with 1 and increase until you are seeing enough.
|
|
|
|
Debug output goes to stderr, interleaved with the requests logged on stdout.
|
|
|
|
To capture debug output in a log file instead, you can usually redirect stderr, eg:\
|
|
|
|
`hledger-web --debug=3 2>hledger-web.log`.
|
|
|
|
|
2015-10-20 16:26:09 +03:00
|
|
|
# ENVIRONMENT
|
|
|
|
|
2023-05-26 22:00:22 +03:00
|
|
|
**LEDGER_FILE**
|
|
|
|
The main journal file to use when not specified with `-f/--file`.
|
|
|
|
Default: `$HOME/.hledger.journal`.
|
2015-10-20 16:26:09 +03:00
|
|
|
|
|
|
|
# BUGS
|
|
|
|
|
2023-05-26 03:45:07 +03:00
|
|
|
_reportbugs_
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2023-05-26 03:45:07 +03:00
|
|
|
Some known issues:
|
2015-10-20 16:26:09 +03:00
|
|
|
|
2023-05-26 03:45:07 +03:00
|
|
|
Does not work well on small screens, or in text-mode browsers.
|