;web: update JSON PUT example
This commit is contained in:
parent
f284e7a87b
commit
0f922b3850
@ -218,24 +218,117 @@ it provides only these routes.):
|
||||
Also, you can append a new transaction to the journal by sending a PUT request to `/add` (hledger-web only).
|
||||
As with the web UI's add form, hledger-web must be started with the `add` capability for this (enabled by default).
|
||||
|
||||
The payload should be a valid hledger transaction as JSON, similar to what you get from `/transactions` or `/accounttransactions`.
|
||||
Note the payload must be the full exact JSON representation of a hledger transaction.
|
||||
You can download some sample JSON from `/transactions` or `/accounttransactions`,
|
||||
or export it using hledger-lib's `writeJsonFile` helper (there's also `readJsonFile` for testing):
|
||||
|
||||
Another way to generate test data is with the `readJsonFile`/`writeJsonFile` helpers in Hledger.Web.Json,
|
||||
which can write or read most of hledger's [data types](https://github.com/simonmichael/hledger/blob/master/hledger-lib/Hledger/Data/Types.hs)
|
||||
to or from a file.
|
||||
Eg here we write the first transaction of a sample journal:
|
||||
```shell
|
||||
$ make ghci-web
|
||||
>>> :m +*Hledger.Web.Json
|
||||
>>> import Hledger
|
||||
>>> writeJsonFile "txn.json" (head $ jtxns samplejournal)
|
||||
>>> :q
|
||||
$ python -m json.tool <txn.json >txn.pretty.json # optional: make human-readable
|
||||
```
|
||||
([sample output & discussion](https://github.com/simonmichael/hledger/issues/316#issuecomment-465858507))
|
||||
|
||||
And here's how to test adding that with curl:
|
||||
If you like, reformat the json to make it human-readable:
|
||||
|
||||
```shell
|
||||
$ curl -s http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.pretty.json; echo
|
||||
$ python -m json.tool txn.json >pretty
|
||||
$ mv pretty txn.json
|
||||
```
|
||||
|
||||
Here's how it looks as of hledger-1.17:
|
||||
```json
|
||||
{
|
||||
"tcode": "",
|
||||
"tcomment": "",
|
||||
"tdate": "2008-01-01",
|
||||
"tdate2": null,
|
||||
"tdescription": "income",
|
||||
"tindex": 1,
|
||||
"tpostings": [
|
||||
{
|
||||
"paccount": "assets:bank:checking",
|
||||
"pamount": [
|
||||
{
|
||||
"acommodity": "$",
|
||||
"aismultiplier": false,
|
||||
"aprice": null,
|
||||
"aquantity": {
|
||||
"decimalMantissa": 10000000000,
|
||||
"decimalPlaces": 10,
|
||||
"floatingPoint": 1
|
||||
},
|
||||
"astyle": {
|
||||
"ascommodityside": "L",
|
||||
"ascommodityspaced": false,
|
||||
"asdecimalpoint": ".",
|
||||
"asdigitgroups": null,
|
||||
"asprecision": 2
|
||||
}
|
||||
}
|
||||
],
|
||||
"pbalanceassertion": null,
|
||||
"pcomment": "",
|
||||
"pdate": null,
|
||||
"pdate2": null,
|
||||
"poriginal": null,
|
||||
"pstatus": "Unmarked",
|
||||
"ptags": [],
|
||||
"ptransaction_": "1",
|
||||
"ptype": "RegularPosting"
|
||||
},
|
||||
{
|
||||
"paccount": "income:salary",
|
||||
"pamount": [
|
||||
{
|
||||
"acommodity": "$",
|
||||
"aismultiplier": false,
|
||||
"aprice": null,
|
||||
"aquantity": {
|
||||
"decimalMantissa": -10000000000,
|
||||
"decimalPlaces": 10,
|
||||
"floatingPoint": -1
|
||||
},
|
||||
"astyle": {
|
||||
"ascommodityside": "L",
|
||||
"ascommodityspaced": false,
|
||||
"asdecimalpoint": ".",
|
||||
"asdigitgroups": null,
|
||||
"asprecision": 2
|
||||
}
|
||||
}
|
||||
],
|
||||
"pbalanceassertion": null,
|
||||
"pcomment": "",
|
||||
"pdate": null,
|
||||
"pdate2": null,
|
||||
"poriginal": null,
|
||||
"pstatus": "Unmarked",
|
||||
"ptags": [],
|
||||
"ptransaction_": "1",
|
||||
"ptype": "RegularPosting"
|
||||
}
|
||||
],
|
||||
"tprecedingcomment": "",
|
||||
"tsourcepos": {
|
||||
"contents": [
|
||||
"",
|
||||
[
|
||||
1,
|
||||
1
|
||||
]
|
||||
],
|
||||
"tag": "JournalSourcePos"
|
||||
},
|
||||
"tstatus": "Unmarked",
|
||||
"ttags": []
|
||||
}
|
||||
```
|
||||
|
||||
And here's how to test adding it with curl. This should add a new entry to your journal:
|
||||
|
||||
```shell
|
||||
$ curl http://127.0.0.1:5000/add -X PUT -H 'Content-Type: application/json' --data-binary @txn.json
|
||||
```
|
||||
|
||||
By default, both the server-side HTML UI and the JSON API are served.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user