sodago
sodago is an implementation of a subset of the soda4LCA
API. It is not intended to be used in
production but only for testing purposes. However, it comes with a very fast
server and is trivial to set up which makes it a fun tool when
developing/testing against the soda4LCA service API in
openLCA or the EPD
Editor.
Usage
sodago is written in Go and compiles to a single binary:
cd sodago
go build # compile it
./sodago # run it
Data storage
All data are stored as plain files in the data folder. Within this folder
the content of each data stock is stored in a sub-folder. The name of the
data stock is the name of this sub-folder and the UUID of the data stock is
stored in a file .stock in that folder. Additionally, the content of a
data stock is stored in the index.json file. The data sets are stored under
their respective paths in the data folder (flows in flows, processes in
processes etc.). The file name of a data set is simply <uuid>_<version>.xml.
External documents of sources are stored under external_docs/<source uuid>/<file>.
Profiles are stored in the sub-folder profiles of the data directory. Thus,
you should not name a data stock profiles. Each profile is stored in a
separate JSON file where the name has the following pattern: <profile ID>.json
Implemented service routes
The prefix /resource is always added to all service routes (as in soda4LCA):
GET /datastocks
GET /profiles
GET /profiles/{id}
/authenticate/login (returns always OK!)
GET [/datastocks/{datastock}]/{path}
GET [/datastocks/{datastock}]/{path}/{id}[?version={version}]
GET [/datastocks/{datastock}]/sources/{id}/{file}
POST /{path}
POST /sources/withBinaries
TODO:
- implement: GET /sources/{uuid}/digitalfile
- put types to lower case (e.g. Version)
- normalize versions (1 == 1.00 == 1.00.000)
- simple search
- LCIA methods