/wallet-api

Wallet API

Primary LanguageRustMIT LicenseMIT

Finance Wallet Rust

This is a small project for learning more Rust. It is a rewrite of this project started in Go by my friend Marcelo metal Jorge Vieira.

Building and running

This package uses Rocket, which currently only builds with Rust nightly. This is about to change but, for now, if you are using rustup make sure you have the nightly toolchain installed and run this on the project's directory:

rustup override set nightly

Otherwise make sure you always add +nightly when calling cargo. The following command will build and run the HTTP server:

cargo +nightly run

Doc

If all goes well you should now be able to look at the Swagger UI nicely provided by rocket-okapi:

http://localhost:8000/swagger-ui/

Examples

Adding broker

curl 'http://localhost:8000/api/v1/brokers' \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{"name":"CLEAR"}'

Adding portfolio

curl 'http://localhost:8000/api/v1/portfolios' \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{"name":"default"}'

Adding stock events

curl 'http://localhost:8000/api/v1/events' \
  -X POST \
  -H 'Content-Type: application/json' \
  -d '{
      "eventType": "stock-operation",
      "time": "2020-10-05T00:00:00.000Z",
      "symbol": "BMGB4",
      "detail":{
          "price": 4,
          "quantity": 500,
          "fees": 0,
          "type": "purchase",
          "portfolios": ["PORTFOLIO-ID"],
          "broker": "BROKER-ID"
      }
  }'

Obtaining the current position for a stock

curl http://localhost:8000/api/v1/stocks/position/PETR4