logo

#Version 3.1.0-d4d383b

Released 2021-09-23

Add account balances endpoint

  • Rework deposit/withdraw admin api
    • Add TLS support

Add P2P module

  • Introduce kli to merge all commands into one binary
    • Ability to debit balance over grpc
    • Add admin authorization base on abilities
    • Update Dockerfile
    • Add Event API
    • Add Multisig jwt

Co-authored-by: Maksym Naichuk <mnaichuk@openware.com> Co-authored-by: denisfd <fedorchenko999@gmail.com> Co-authored-by: Alireza Bashiri <al3rez@gmail.com>

Avoid zero division in Binance reconcile

Bump master branch to 3.1

Discard messages from quick market

do not use binance time (#407)

Expose orders fees in REST & WS API (#389)

  • Expose orders fees in REST & Websocket API
  • Keep parsing compatible with version without fees

Co-authored-by: denisfd <fedorchenko999@gmail.com>

Feature: Add filtering for Markets endpoint (#387)

  • Feature: Add filtering for Markets endpoint

Fix p2p tests

  • Fix segfault in p2p handler
    • Update gorm and sqlite driver

Fix user loading when there are no accounts

Fix: Delete accounts model register and delete ID column

Update private abilities endpoint

Update gin, pkg and jwt version

Update global versions with master push

#Version 3.0.39

Released 2021-09-20

Fix double trade execution on binance and opendax

#Version 3.0.38

Released 2021-09-20

Expose enabled order types per market

#Version 3.0.37

Released 2021-09-17

Add docs about Quick engine

#Version 3.0.36

Released 2021-09-16

Support QuoteAmount in order creation (#391)

  • Add market order estimation
  • Add quote_amount to order params
  • Disable engine users from trading
  • Require quote_amount for specified roles
  • Unlock order if it is done with 0 trades
  • Increase origin amount if amount goes negative

#Version 3.0.35

Released 2021-09-15

feat: add updated_at in orderResponseAdmin

#Version 3.0.34

Released 2021-09-14

Fix routing key parameter in session.Stream

#Version 3.0.33

Released 2021-09-09

Update rango version

#Version 3.0.32

Released 2021-09-09

Update jwt-go and gin packages

#Version 3.0.31

Released 2021-09-07

Enhancement: Remove restrictions from Admin abilities endpoint

#Version 3.0.30

Released 2021-09-06

Fix opendax-cnx race condition on shutdown

#Version 3.0.29

Released 2021-08-26

Fix orderbook handling in binance engine (#385)

  • Fix orderbook handling in binance engine
  • Update assert spreads in ws_check script

#Version 3.0.28

Released 2021-08-24

Record time of the last trade

Update Kaigara to 0.1.29

#Version 3.0.27

Released 2021-08-05

Add trade sampling by market

#Version 3.0.26

Released 2021-08-02

Fix Binance reconnection

#Version 3.0.25

Released 2021-07-28

Improve srtartup time

#Version 3.0.24

Released 2021-07-16

Cancel triggers by side

#Version 3.0.23

Released 2021-07-14

Fix nil error in opendax client connect

#Version 3.0.22

Released 2021-07-09

Fix double canceling orders in opendax engine

  • Mute publisher and aggegater logs by default
    • Change messages log levels

#Version 3.0.21

Released 2021-07-02

Advanced order types (#22)

  • Feature: Advanced orders

    • Stop-loss, stop-limit, take-profit and take-limit orders
    • Admin API to get orders with filtering
    • User API to get orders with filtering
    • Update database schema

Co-authored-by: denisfd <fedorchenko999@gmail.com>

Fix: OpenDAX connection stuck on req sending

#Version 3.0.20

Released 2021-06-25

Exclude hedger members from finex_engine_business_accounts_balance metrics

#Version 3.0.19

Released 2021-06-22

Add orderbook increments squasher

  • Move sampler to publisher package

#Version 3.0.18

Released 2021-06-21

Read abilities from yaml

#Version 3.0.17

Released 2021-06-18

Return more specific error detials

#Version 3.0.16

Released 2021-06-17

Add a metric with the sum of account balance per currency

Add ability to disable raw orderbook publishing

Add disabling wash trading feature

Add hybrid support for deprecated actions config

Add sonar analysis

Add Quick engine driver

  • Add market type
    • Add grpc
    • Add abilities endpoints

Add order type limit FOK

Feature: add type fill or kill to Bitforex Feature: local fill or kill order (#280) Feature: Opendax driver for fill or kill (#283) add order type fill or kill

Add opendax.cloud and local license scope (#275)

  • Add opendax.cloud and local license scope

    • Check for license version 3 and allow uat.opendax.app domain
    • Add unit test and update license package
    • Update dev license key
    • Add unit test for license version

Co-authored-by: denisfd <fedorchenko999@gmail.com> Co-authored-by: Keng Suppaseth <kengio@gmail.com>

Add aggreagted dirver

  • Extract orderboook updating logic
    • Clear old orders on snapshot
    • Add resync feature
    • Publish raw orderbook in admin scope
    • Add optional probes
    • Fix race condition
    • Prevent orderbook emptying
    • Add tests for bitfinex and aggregated_change_price
    • Add period config for mockserver
    • Disable ticker check in bitfinex

Add ability to transfer taker fees to maker

Add CrytpoCom driver

  • Upstream connection interface
    • Generic Upstream driver
    • Add cryptocom client

Co-authored-by: Danylo Patsora <dpatsora@heliostech.fr> Co-authored-by: Tee <tee@yelllow.com>

Add websocket mockserver to functional framework

  • Add script to check websocket
  • Add websocket recorder
  • Example with binance
  • Add engine seed
  • Add 'verbose' flag

Add spread overlapping assertion

Add ability to configure bitfinex ws and rest URL from engine data

Admin Websocket API

  • Add prefixed RBAC websocket channels
    • Admin API to create & cancel orders
    • Record deposits and withdrawals
    • Skip balance check based on role
    • Add config deprecation warning
    • Move rate and action config to top-level scope
    • Publish balance update on peatio liabilities
    • Simplify id package

Co-authored-by: josadcha <josadcha@heliostech.fr>

Bump version to 3.0.0

Bump master branch to 2.7

Connect to opendax in goroutine to prevent engine stucking

Create separate goroutine for engines

Enhancement: Update Kaigara version (#322)

Enhancement: update Kaigara version (#301)

Enhancement: Add public image build to the CI (#282)

Feature: Trade sampler

Feature: Add Publish to Gitolite CI step (#368)

Feature: Add ability to read public key from string (#294)

Fix 25th order publishing for buy side

Fix websocket auth error

Improve cancel request

Make orderbook assertions optional

Remove canceled orders in binance handle execution report

Remove sonar step from drone.yml

Return JSON errors for cancel order endpoint

Track orderbook sequence in opendax driver

  • Reset sequence & reconnect if sequence mismatch
    • Remove snapshot broadcasting in API

Update goci version

#Version 2.6.41

Released 2021-06-17

Connect to opendax in goroutine to prevent engine stucking

Feature: Add Publish to Gitolite CI step (#369)

Fix 25th order publishing for buy side

#Version 3.0.15

Released 2021-06-17

Feature: Add Publish to Gitolite CI step (#368)

#Version 3.0.14

Released 2021-06-14

Remove canceled orders in binance handle execution report

#Version 3.0.13

Released 2021-06-12

Add a metric with the sum of account balance per currency

#Version 3.0.12

Released 2021-06-11

#Version 3.0.11

Released 2021-06-11

Add ability to disable raw orderbook publishing

#Version 3.0.10

Released 2021-06-10

Add disabling wash trading feature

#Version 3.0.9

Released 2021-06-09

Add hybrid support for deprecated actions config

#Version 3.0.8

Released 2021-06-09

Make orderbook assertions optional

#Version 3.0.7

Released 2021-05-24

Admin Websocket API

  • Add prefixed RBAC websocket channels
    • Admin API to create & cancel orders
    • Record deposits and withdrawals
    • Skip balance check based on role
    • Add config deprecation warning
    • Move rate and action config to top-level scope
    • Publish balance update on peatio liabilities
    • Simplify id package

Co-authored-by: josadcha <josadcha@heliostech.fr>

#Version 3.0.6

Released 2021-05-21

Return JSON errors for cancel order endpoint

#Version 3.0.5

Released 2021-05-21

Improve cancel request

#Version 3.0.4

Released 2021-05-11

Remove sonar step from drone.yml

#Version 3.0.3

Released 2021-04-22

Connect to opendax in goroutine to prevent engine stucking

Fix 25th order publishing for buy side

#Version 3.0.2

Released 2021-04-19

Add sonar analysis

Add Quick engine driver

  • Add market type
    • Add grpc
    • Add abilities endpoints

Add order type limit FOK

Feature: add type fill or kill to Bitforex Feature: local fill or kill order (#280) Feature: Opendax driver for fill or kill (#283) add order type fill or kill

Add opendax.cloud and local license scope (#275)

  • Add opendax.cloud and local license scope

    • Check for license version 3 and allow uat.opendax.app domain
    • Add unit test and update license package
    • Update dev license key
    • Add unit test for license version

Co-authored-by: denisfd <fedorchenko999@gmail.com> Co-authored-by: Keng Suppaseth <kengio@gmail.com>

Add aggreagted dirver

  • Extract orderboook updating logic
    • Clear old orders on snapshot
    • Add resync feature
    • Publish raw orderbook in admin scope
    • Add optional probes
    • Fix race condition
    • Prevent orderbook emptying
    • Add tests for bitfinex and aggregated_change_price
    • Add period config for mockserver
    • Disable ticker check in bitfinex

Add ability to transfer taker fees to maker

Add CrytpoCom driver

  • Upstream connection interface
    • Generic Upstream driver
    • Add cryptocom client

Co-authored-by: Danylo Patsora <dpatsora@heliostech.fr> Co-authored-by: Tee <tee@yelllow.com>

Add websocket mockserver to functional framework

  • Add script to check websocket
  • Add websocket recorder
  • Example with binance
  • Add engine seed
  • Add 'verbose' flag

Add spread overlapping assertion

Add ability to configure bitfinex ws and rest URL from engine data

Bump version to 3.0.0

Bump master branch to 2.7

Create separate goroutine for engines

Enhancement: Update Kaigara version (#322)

Enhancement: update Kaigara version (#301)

Enhancement: Add public image build to the CI (#282)

Feature: Add ability to read public key from string (#294)

Fix websocket auth error

Track orderbook sequence in opendax driver

  • Reset sequence & reconnect if sequence mismatch
    • Remove snapshot broadcasting in API

Update goci version

#Version 2.6.40

Released 2021-04-16

Connect to opendax in goroutine to prevent engine stucking

Fix 25th order publishing for buy side

#Version 3.0.1

Released 2021-04-09

Update goci version

#Version 3.0.0

Released 2021-04-08

Add sonar analysis

Add Quick engine driver

  • Add market type
    • Add grpc
    • Add abilities endpoints

Add order type limit FOK

Feature: add type fill or kill to Bitforex Feature: local fill or kill order (#280) Feature: Opendax driver for fill or kill (#283) add order type fill or kill

Add opendax.cloud and local license scope (#275)

  • Add opendax.cloud and local license scope

    • Check for license version 3 and allow uat.opendax.app domain
    • Add unit test and update license package
    • Update dev license key
    • Add unit test for license version

Co-authored-by: denisfd <fedorchenko999@gmail.com> Co-authored-by: Keng Suppaseth <kengio@gmail.com>

Add aggreagted dirver

  • Extract orderboook updating logic
    • Clear old orders on snapshot
    • Add resync feature
    • Publish raw orderbook in admin scope
    • Add optional probes
    • Fix race condition
    • Prevent orderbook emptying
    • Add tests for bitfinex and aggregated_change_price
    • Add period config for mockserver
    • Disable ticker check in bitfinex

Add ability to transfer taker fees to maker

Add CrytpoCom driver

  • Upstream connection interface
    • Generic Upstream driver
    • Add cryptocom client

Co-authored-by: Danylo Patsora <dpatsora@heliostech.fr> Co-authored-by: Tee <tee@yelllow.com>

Add websocket mockserver to functional framework

  • Add script to check websocket
  • Add websocket recorder
  • Example with binance
  • Add engine seed
  • Add 'verbose' flag

Add spread overlapping assertion

Add ability to configure bitfinex ws and rest URL from engine data

Bump version to 3.0.0

Bump master branch to 2.7

Create separate goroutine for engines

Enhancement: update Kaigara version (#301)

Enhancement: Add public image build to the CI (#282)

Feature: Add ability to read public key from string (#294)

Fix websocket auth error

Track orderbook sequence in opendax driver

  • Reset sequence & reconnect if sequence mismatch
    • Remove snapshot broadcasting in API

#Version 2.6.39

Released 2021-04-08

Fix 25th order publishing for buy side

#Version 2.6.38

Released 2021-03-10

Add metric for amqp section duration for create orders

#Version 2.6.37

Released 2021-03-02

Fix: max market name length

Pull Requests

Merge pull request #279 from openware/feature/market_name

#Version 2.6.36

Released 2021-02-26

Edit API links in docs

#Version 2.6.35

Released 2021-02-17

Enhancement: Add Kaigara installation to the Dockerfile (#273)

#Version 2.6.34

Released 2021-02-12

Add the support of influx cleanup task to run after data rebalancing (#167)

  • Add the support of influx cleanup task to run after data rebalancing

Co-authored-by: denisfd <fedorchenko999@gmail.com>

#Version 2.6.33

Released 2021-02-12

Enhancement: Add health checks

#Version 2.6.32

Released 2021-02-08

Fix docker build

#Version 2.6.31

Released 2021-02-06

Improve slow tests

  • Add volume to skip module rebuild
    • Cache jwt token in orderapi tests
    • Reduce sleep in bitfinex tests
    • Reduce wait in functional tests
    • Add retry in functional tests

#Version 2.6.30

Released 2021-02-05

Define license and log as seperated pkg

Update go.mod

  • Update docker build

Update dependencies

#Version 2.6.29

Released 2021-02-05

Add go vet to CI checks

  • Check formatting in CI

#Version 2.6.28

Released 2021-02-04

Add default retries value

Add order by market position on plain market cache

Add documenation about functional testing framework

Add order by market position on market cache

Add a prometheus metric to monitor vault token TTL

  • Remove decrypt module dependency from the API
  • Display error in finex engine if the decrypt module init fails (not fatal)

Add blockchains height metrics to prometheus endpoint

Add grace time of 30 days for expired license

Add the support of multiple domains for one license

Add a general description of finex

Add retries to sql batcher

Add timeout to bitfinex websocket requests

Add order and trade response description for WS API

Add admin cancel bulk endpoint

Add Binance Driver

Add license

Allow admin to use bulk admin cancel endpoint regardless of the license scopes (#249)

Bump master to 2.6

Change way of hadling defaults in config package

Change WebSocket API URL to /api/v2/ws (#204)

Clear opendax book when receiving new snapshot

Do not reset sequence in opendax engine

Enhancement: Update SDK-citools version for Drone CI (#223)

Expose vault token period metric

Expose the build version and revision

  • Expose the build version and revision to the public endpoint /api/v2/public/version
  • Expose the build version and revision in metrics
  • Enable metrics by default (now you should disable it explicitly if needed)
  • Change license format to JWT

Expose wallets balance metrics

Feature: Use ika pkg to support configuration through environment (#261)

Support configuration through environment

  • Use openware/pkg/ika to load the config

Co-authored-by: Valentine Shatravenko <vshatravenko@heliostech.fr>

Feature: Add CI step to update the global version (#251)

Feature: Add the CI step to push to gitolite (#196)

Fix: Global version update CI (#262)

Fix to publish 25th order if PriceLevel was deleted.

  • Add test scenario
    • Replace constant with ObSizeLimit configuration variable

Fix overlapping spread bug

Fix: change finex_engine_business_payment_addresses metric query

Fix binance driver trade created_at

Fix Segfault in GetBitfinexConnection

Fix Trade created_at format in Bitfinex engine (#205)

Fix publishing of documentation

Fix master build

Handle ticker interval in bitifnex conection

Increase timeout time in tests

Move API docs to docs/api

Opendax upstream engine (#122)

Opendax upstream engine

  • Add websocket client
  • Update websocket server
  • Do not prevent limiter refresh in first period
  • Set max message size to 1MB
  • Fix a race condition in websocket server
  • Disconnect slow ws connections
  • Add tool for injecting amqp messages
  • Use rango amqp package

Improve logger

  • Add ability to set log level for logger observer
  • Add ability to attach labels to logger

Support bitfinex orderbook update

Public endpoint to expose markets orderbook (#216)

  • Public endpoint to expose markets orderbook

Co-authored-by: denisfd <fedorchenko999@gmail.com>

Publish pricelevels instead of removed one

Publish events in Open Finance Protocol format

Rebase on 2-5

Rebase on 2-5

Refactor license expiration check

Remove GetByID bitfinex-connection method

Remove 'Publish to git.openware' CI step

Remove PlainMarketCache

Restart engine and refresh API cache on new market

Scale Orderbook Publisher (#217)

  • Load-balance orderbook events published to AMQP
  • Bitfinex websocket timeout bases on tickers
  • Auto-reconnect publishers to AMQP

Support optional Vault in decrypt package

Update decrypt.EngineData type

Update postbuild step

Update upstream compose config

Update structure.sql from Peatio 2.6 schema

Update incremental orderbook in bitfinex and opendax drivers

Update bitfinex logs

Update market initialization

Update SQL Business metrics

Update Kline service to prevent segfault

Update bitfinex library with reconnect fix, add some metrics Add troubleshooting doc about rejected orders Add more logs to session flow Fix websocket metrics, refactor bitfinex reconnection functions Detect bitfinex websocket connection problems Bitfinex cnx: add different locks for rest and ws

Update influx config

Upgrade to go 1.14 and dependencies

Use json response insteead of ctx.Error

Use trace log level for bitfinex connection logs

Websocket API (#120)

Main changes:

  • Integrate Websocket into Finex API
  • Add Create, Cancel, Bulk Create, Bulk Cancel methods
  • Support Filters, Actions RBAC and Rate limiting in websocket

Minor changes:

  • Add http-like Hander type and router to routing.Hub
  • Add helpers for msg arguments type conversions
  • Remove jwt package
  • Add short websocket documentation

#Version 2.5.43

Released 2021-02-03

Add admin cancel bulk endpoint

Add timeout in markets queues

  • Add a queue with timeout for market
  • Timeout for remote markets is 5s
  • Timeout for local markets is 2s
  • Expose reject reason to websocket
  • Use buffered channels in observers
  • Add metric about orders in critical section timing

Add labeled logger with separate log level

Add support of influx username and password in config.yml

Add KLines REST API (#140)

  • Add KLines REST API with cache
  • Add a thread safe map type

Add metrics with websocket status

Add loader

  • Include binary tools in docker image

Add market label to order latency metric (#134)

  • Add market label to order latency metric
  • Increment trade metric

Add debug logs for bitfinex messages

Add Prometheus exporter

Add expenses message to builder observers

Add separate cache for API (no vault dependancy)

Add driver id filtering in ranger and incremental

  • Add test for incremental

Add data field to Market model (#101)

  • Add data field to Market model

Add test for decrypt pkg

Add vault documentation to create policy and application tokens (#91)

Add price filters for finex API (#89)

  • Add price filters for finex API
  • Fix unstable tests in session rate

Add avarage price calculation

Add API usage (JS)

Allow trading on hidden markets Improve error reporting during market initialization

Bitfinex upstream: Allow users to cancel an order without remote_id after 10 seconds

After 10 seconds if an order didn't receive a remote_id from the upstream this probably means that the order wasn't created. The order will be closed in the next reconcile process or if the user triggers a cancel through the API.

Bitfinex upstream reconcile process on connect (#103)

Bitfinex upstream improvements

  • Reconcile local orderbook with remote open orders from snapshot
  • Update order creation flow for bitfinex engine
  • Add many test cases
  • Use ParseInt to parse int64
  • Add Start to Engine interface
  • Check order status prefix only
  • Cancel order if we detect unexpected amount change

Finex changes

  • Shutdown finex on a new market
  • Clean markets response
  • Set locked to zero when order is fulfilled
  • Skip zero revenues

Bitfinex engine: Fix log level message in cancel order endpoint

Bitfinex engine: creates only one ws connection per engine

Bitfinex engine driver order create and reject trade events support * closing orders once fulfilled

Cancel All endpoint

  • Admin API to cancel orders

Configure the CI to redeploy on master.devkube.com (#83)

Create market driver interface Change market init to load orderbook Introduce pkg driver and orderbook Add blackhole driver

Disable colors in logs when stdout is not a terminal Do not enable vault token renew process for token not renewable

Do not publish internal trades messages for upstreams

Do periodic reconciling

  • Add reconcile metrics
    • Record upstream requests
    • Remove safemap

Do not reset Locked for Done orders

Enhancement: Redeploy master changes to finex.devkube.com (#87)

Ensure trades events are not processed twice in bitfinex upstream (#151)

Track trades to prevent processing one trade multiple times

Expose wallets balance metrics

Expose business metrics (#136)

  • Expose business metrics (deposits, withdrawals, payment_addresses)
  • Fetch and expose MySQL metrics

Fetch and decrypt engine config

Fix bitfinex trade execution event parsing error Use openware patched version of bitfinex library

Fix a crash in bitfinex get order API (#170)

Fix in bitfinex reconcile process (#165)

  • record missed trades before canceling order

Fix a crash in kline service (#159)

Fix bitfinex upstream do not add order to local orderbook if it's rejected

Fix nil pointer in findOrder helper

  • Change Kline log level to trace

Fix mixed business metrics

Fix average price calculation of orders partially filled (#149)

Do not set locked field to 0 when canceling orders

Fix bitfinex engine unlock calculation for buy orders

Fix remaining locked calculation for bitfinex upstream

Fix race conditions (#117)

  • Enable race detector in CI
  • Fix race condition in handleOrderSnapshot
  • Fix race condition in sessions

Fix unconsistent test

Fix gateway rate limits (#79)

  • Fix gateway rate limits
  • Change default api rate limits to 5 requests per second

Fix logging Empty operations (#75)

  • Improve logging of empty operations
    • Log UUID on order cancel
    • Add logs for actions filter in orderapi

Handle FOK cancel event with executed state in bitfinex engine (#192)

Handle Bitfinex reconnect

Handle periodic reconcile

Handle FOK canceled event (Bitfinex upstream) #148

Improve vault documentation

Improve Session logs

Improvements of bitfinex upstream

  • Shutdown finex-engine on unexpected end of ws messages
  • Do not use parallel calls in bitfinex upstream and use lock
  • Reject orders and ignore cancels if the websocket is not connected

Unify log message with the market id

Influx re-balance klines series

Influx sharding support (#160)

  • Add the support of influx sharding
  • Add a command line to rebalance influx shards
  • Add InfluxDB writer

Keep track of bitfinex fees in platform expenses

Limit size of orderbook in incremental snapshots

Listen to Peatio Liabilities

Metrics: Handle wallets balance as JSON

Move API docs to docs/api

Override docs name

Publish locked on balance updates

Rebalance by chunks in influxDB to avoid high memory usage

Reject orders when a market buffer is full

  • A slow market won't block others markets
  • Orders are rejected is a market buffer is full

Reject post only orders for bitfinex engine

Requalify some metrics error log into warning

Skip warmup for non local drivers in incremental

Stop API on AMQP connection exceptions

Submit fill or kill orders for market buy on bitfinex upstream

Update Kline service to prevent segfault

Update bitfinex library with reconnect fix, add some metrics Add troubleshooting doc about rejected orders Add more logs to session flow Fix websocket metrics, refactor bitfinex reconnection functions Detect bitfinex websocket connection problems Bitfinex cnx: add different locks for rest and ws

Update Market data field with json type

Update schema (#92)

  • Update schema with engines table

Update schema

  • Load null price as 0 from db

Update Average price calculation

Reverts

Handle FOK cancel event with executed state in bitfinex engine (#192)

#Version 2.4.5

Released 2021-02-03

Add avarage price calculation

Add API usage (JS)

Cancel All endpoint

  • Admin API to cancel orders

Configure the CI to redeploy on master.devkube.com (#83)

Fix gateway rate limits (#79)

  • Fix gateway rate limits
  • Change default api rate limits to 5 requests per second

Fix logging Empty operations (#75)

  • Improve logging of empty operations
    • Log UUID on order cancel
    • Add logs for actions filter in orderapi

Improve Session logs

Limit size of orderbook in incremental snapshots

Listen to Peatio Liabilities

Override docs name

Publish locked on balance updates

Release stable version

Shutdown finex on a new market

Stop API on AMQP connection exceptions

Update schema

  • Load null price as 0 from db

Update Average price calculation

#Version 2.6.27

Released 2021-02-03

Update postbuild step

#Version 2.6.26

Released 2021-02-01

Add default retries value

#Version 2.6.25

Released 2021-01-28

Fix: Global version update CI (#262)

#Version 2.6.24

Released 2021-01-28

Feature: Use ika pkg to support configuration through environment (#261)

Support configuration through environment

  • Use openware/pkg/ika to load the config

Co-authored-by: Valentine Shatravenko <vshatravenko@heliostech.fr>

#Version 2.6.23

Released 2021-01-25

Use json response insteead of ctx.Error

#Version 2.6.22

Released 2021-01-22

Expose vault token period metric

#Version 2.6.21

Released 2021-01-22

Feature: Add CI step to update the global version (#251)

#Version 2.6.20

Released 2021-01-20

Allow admin to use bulk admin cancel endpoint regardless of the license scopes (#249)

#Version 2.6.19

Released 2021-01-19

Remove GetByID bitfinex-connection method

#Version 2.6.18

Released 2021-01-19

Remove 'Publish to git.openware' CI step

#Version 2.6.17

Released 2021-01-19

Update upstream compose config

#Version 2.6.16

Released 2021-01-15

Remove PlainMarketCache

#Version 2.6.15

Released 2021-01-15

Support optional Vault in decrypt package

#Version 2.6.14

Released 2021-01-15

Change way of hadling defaults in config package

#Version 2.6.13

Released 2021-01-15

Fix to publish 25th order if PriceLevel was deleted.

  • Add test scenario
    • Replace constant with ObSizeLimit configuration variable

Refactor license expiration check

#Version 2.6.12

Released 2021-01-15

Do not reset sequence in opendax engine

#Version 2.6.11

Released 2021-01-15

Add order by market position on plain market cache

#Version 2.6.10

Released 2021-01-15

Add documenation about functional testing framework

#Version 2.6.9

Released 2021-01-14

Add order by market position on market cache

#Version 2.6.8

Released 2021-01-08

Clear opendax book when receiving new snapshot

#Version 2.6.7

Released 2021-01-06

Update structure.sql from Peatio 2.6 schema

#Version 2.6.6

Released 2021-01-06

Fix overlapping spread bug

#Version 2.6.5

Released 2020-12-29

Add a prometheus metric to monitor vault token TTL

  • Remove decrypt module dependency from the API
  • Display error in finex engine if the decrypt module init fails (not fatal)

#Version 2.6.4

Released 2020-12-24

Fix: change finex_engine_business_payment_addresses metric query

#Version 2.6.3

Released 2020-12-22

Enhancement: Update SDK-citools version for Drone CI (#223)

#Version 2.6.2

Released 2020-12-16

Add blockchains height metrics to prometheus endpoint

#Version 2.6.1

Released 2020-12-03

Add grace time of 30 days for expired license

Add the support of multiple domains for one license

#Version 2.6.0

Released 2020-12-02

Add a general description of finex

Add retries to sql batcher

Add timeout to bitfinex websocket requests

Add order and trade response description for WS API

Add admin cancel bulk endpoint

Add Binance Driver

Add license

Bump master to 2.6

Change WebSocket API URL to /api/v2/ws (#204)

Expose the build version and revision

  • Expose the build version and revision to the public endpoint /api/v2/public/version
  • Expose the build version and revision in metrics
  • Enable metrics by default (now you should disable it explicitly if needed)
  • Change license format to JWT

Expose wallets balance metrics

Feature: Add the CI step to push to gitolite (#196)

Fix binance driver trade created_at

Fix Segfault in GetBitfinexConnection

Fix Trade created_at format in Bitfinex engine (#205)

Fix publishing of documentation

Fix master build

Handle ticker interval in bitifnex conection

Increase timeout time in tests

Move API docs to docs/api

Opendax upstream engine (#122)

Opendax upstream engine

  • Add websocket client
  • Update websocket server
  • Do not prevent limiter refresh in first period
  • Set max message size to 1MB
  • Fix a race condition in websocket server
  • Disconnect slow ws connections
  • Add tool for injecting amqp messages
  • Use rango amqp package

Improve logger

  • Add ability to set log level for logger observer
  • Add ability to attach labels to logger

Support bitfinex orderbook update

Public endpoint to expose markets orderbook (#216)

  • Public endpoint to expose markets orderbook

Co-authored-by: denisfd <fedorchenko999@gmail.com>

Publish pricelevels instead of removed one

Publish events in Open Finance Protocol format

Rebase on 2-5

Rebase on 2-5

Restart engine and refresh API cache on new market

Scale Orderbook Publisher (#217)

  • Load-balance orderbook events published to AMQP
  • Bitfinex websocket timeout bases on tickers
  • Auto-reconnect publishers to AMQP

Update incremental orderbook in bitfinex and opendax drivers

Update bitfinex logs

Update market initialization

Update SQL Business metrics

Update Kline service to prevent segfault

Update bitfinex library with reconnect fix, add some metrics Add troubleshooting doc about rejected orders Add more logs to session flow Fix websocket metrics, refactor bitfinex reconnection functions Detect bitfinex websocket connection problems Bitfinex cnx: add different locks for rest and ws

Update influx config

Upgrade to go 1.14 and dependencies

Use trace log level for bitfinex connection logs

Websocket API (#120)

Main changes:

  • Integrate Websocket into Finex API
  • Add Create, Cancel, Bulk Create, Bulk Cancel methods
  • Support Filters, Actions RBAC and Rate limiting in websocket

Minor changes:

  • Add http-like Hander type and router to routing.Hub
  • Add helpers for msg arguments type conversions
  • Remove jwt package
  • Add short websocket documentation

#Version 2.5.42

Released 2020-09-23

Update Kline service to prevent segfault

#Version 2.5.41

Released 2020-09-14

Move API docs to docs/api

#Version 2.5.40

Released 2020-09-07

#Version 2.5.39

Released 2020-09-03

Fix bitfinex trade execution event parsing error Use openware patched version of bitfinex library

Reverts

Handle FOK cancel event with executed state in bitfinex engine (#192)

#Version 2.5.38

Released 2020-09-03

Handle FOK cancel event with executed state in bitfinex engine (#192)

#Version 2.5.37

Released 2020-08-20

Add admin cancel bulk endpoint

Requalify some metrics error log into warning

#Version 2.5.36

Released 2020-08-12

Metrics: Handle wallets balance as JSON

#Version 2.5.35

Released 2020-08-11

Expose wallets balance metrics

#Version 2.5.34

Released 2020-08-10

Update bitfinex library with reconnect fix, add some metrics Add troubleshooting doc about rejected orders Add more logs to session flow Fix websocket metrics, refactor bitfinex reconnection functions Detect bitfinex websocket connection problems Bitfinex cnx: add different locks for rest and ws

#Version 2.5.33

Released 2020-07-28

Add timeout in markets queues

  • Add a queue with timeout for market
  • Timeout for remote markets is 5s
  • Timeout for local markets is 2s
  • Expose reject reason to websocket
  • Use buffered channels in observers
  • Add metric about orders in critical section timing

#Version 2.5.32

Released 2020-07-28

Add labeled logger with separate log level

#Version 2.5.31

Released 2020-07-24

Handle Bitfinex reconnect

#Version 2.5.30

Released 2020-07-23

Fix a crash in bitfinex get order API (#170)

#Version 2.5.29

Released 2020-07-15

Fix in bitfinex reconcile process (#165)

  • record missed trades before canceling order

#Version 2.5.28

Released 2020-07-15

Reject orders when a market buffer is full

  • A slow market won't block others markets
  • Orders are rejected is a market buffer is full

#Version 2.5.27

Released 2020-07-13

Influx re-balance klines series

Rebalance by chunks in influxDB to avoid high memory usage

#Version 2.5.26

Released 2020-07-10

Influx sharding support (#160)

  • Add the support of influx sharding
  • Add a command line to rebalance influx shards
  • Add InfluxDB writer

#Version 2.5.25

Released 2020-07-09

Fix a crash in kline service (#159)

#Version 2.5.24

Released 2020-07-09

Handle periodic reconcile

#Version 2.5.23

Released 2020-07-08

Fix bitfinex upstream do not add order to local orderbook if it's rejected

#Version 2.5.22

Released 2020-07-08

Fix nil pointer in findOrder helper

  • Change Kline log level to trace

#Version 2.5.21

Released 2020-07-08

Fix mixed business metrics

#Version 2.5.20

Released 2020-07-07

Ensure trades events are not processed twice in bitfinex upstream (#151)

Track trades to prevent processing one trade multiple times

#Version 2.5.19

Released 2020-07-06

Bitfinex upstream: Allow users to cancel an order without remote_id after 10 seconds

After 10 seconds if an order didn't receive a remote_id from the upstream this probably means that the order wasn't created. The order will be closed in the next reconcile process or if the user triggers a cancel through the API.

#Version 2.5.18

Released 2020-07-06

Fix average price calculation of orders partially filled (#149)

Do not set locked field to 0 when canceling orders

#Version 2.5.17

Released 2020-07-06

Handle FOK canceled event (Bitfinex upstream) #148

#Version 2.5.16

Released 2020-07-02

Do not publish internal trades messages for upstreams

#Version 2.5.15

Released 2020-07-02

Add support of influx username and password in config.yml

#Version 2.5.14

Released 2020-07-02

Do periodic reconciling

  • Add reconcile metrics
    • Record upstream requests
    • Remove safemap

#Version 2.5.13

Released 2020-07-02

Add KLines REST API (#140)

  • Add KLines REST API with cache
  • Add a thread safe map type

#Version 2.5.12

Released 2020-07-02

Fix bitfinex engine unlock calculation for buy orders

#Version 2.5.11

Released 2020-06-26

Add metrics with websocket status

#Version 2.5.10

Released 2020-06-25

Expose business metrics (#136)

  • Expose business metrics (deposits, withdrawals, payment_addresses)
  • Fetch and expose MySQL metrics

#Version 2.5.9

Released 2020-06-25

Add loader

  • Include binary tools in docker image

#Version 2.5.8

Released 2020-06-23

Add market label to order latency metric (#134)

  • Add market label to order latency metric
  • Increment trade metric

#Version 2.5.7

Released 2020-06-23

Improvements of bitfinex upstream

  • Shutdown finex-engine on unexpected end of ws messages
  • Do not use parallel calls in bitfinex upstream and use lock
  • Reject orders and ignore cancels if the websocket is not connected

Unify log message with the market id

#Version 2.5.6

Released 2020-06-17

Fix remaining locked calculation for bitfinex upstream

#Version 2.5.5

Released 2020-06-16

Add debug logs for bitfinex messages

Add Prometheus exporter

Add expenses message to builder observers

Add separate cache for API (no vault dependancy)

Add driver id filtering in ranger and incremental

  • Add test for incremental

Add data field to Market model (#101)

  • Add data field to Market model

Add test for decrypt pkg

Add vault documentation to create policy and application tokens (#91)

Add price filters for finex API (#89)

  • Add price filters for finex API
  • Fix unstable tests in session rate

Add avarage price calculation

Add API usage (JS)

Allow trading on hidden markets Improve error reporting during market initialization

Bitfinex upstream reconcile process on connect (#103)

Bitfinex upstream improvements

  • Reconcile local orderbook with remote open orders from snapshot
  • Update order creation flow for bitfinex engine
  • Add many test cases
  • Use ParseInt to parse int64
  • Add Start to Engine interface
  • Check order status prefix only
  • Cancel order if we detect unexpected amount change

Finex changes

  • Shutdown finex on a new market
  • Clean markets response
  • Set locked to zero when order is fulfilled
  • Skip zero revenues

Bitfinex engine: Fix log level message in cancel order endpoint

Bitfinex engine: creates only one ws connection per engine

Bitfinex engine driver order create and reject trade events support * closing orders once fulfilled

Cancel All endpoint

  • Admin API to cancel orders

Configure the CI to redeploy on master.devkube.com (#83)

Create market driver interface Change market init to load orderbook Introduce pkg driver and orderbook Add blackhole driver

Disable colors in logs when stdout is not a terminal Do not enable vault token renew process for token not renewable

Do not reset Locked for Done orders

Enhancement: Redeploy master changes to finex.devkube.com (#87)

Fetch and decrypt engine config

Fix race conditions (#117)

  • Enable race detector in CI
  • Fix race condition in handleOrderSnapshot
  • Fix race condition in sessions

Fix unconsistent test

Fix gateway rate limits (#79)

  • Fix gateway rate limits
  • Change default api rate limits to 5 requests per second

Fix logging Empty operations (#75)

  • Improve logging of empty operations
    • Log UUID on order cancel
    • Add logs for actions filter in orderapi

Improve vault documentation

Improve Session logs

Keep track of bitfinex fees in platform expenses

Limit size of orderbook in incremental snapshots

Listen to Peatio Liabilities

Publish locked on balance updates

Reject post only orders for bitfinex engine

Skip warmup for non local drivers in incremental

Stop API on AMQP connection exceptions

Submit fill or kill orders for market buy on bitfinex upstream

Update Market data field with json type

Update schema (#92)

  • Update schema with engines table

Update schema

  • Load null price as 0 from db

Update Average price calculation

#Version 2.4.4

Released 2020-06-02

Add avarage price calculation

Add API usage (JS)

Cancel All endpoint

  • Admin API to cancel orders

Configure the CI to redeploy on master.devkube.com (#83)

Fix gateway rate limits (#79)

  • Fix gateway rate limits
  • Change default api rate limits to 5 requests per second

Fix logging Empty operations (#75)

  • Improve logging of empty operations
    • Log UUID on order cancel
    • Add logs for actions filter in orderapi

Improve Session logs

Limit size of orderbook in incremental snapshots

Listen to Peatio Liabilities

Publish locked on balance updates

Release stable version

Shutdown finex on a new market

Stop API on AMQP connection exceptions

Update schema

  • Load null price as 0 from db

Update Average price calculation

#Version 2.5.4

Released 2020-06-01

Disable colors in logs when stdout is not a terminal Do not enable vault token renew process for token not renewable

#Version 2.5.3

Released 2020-05-26

Do not reset Locked for Done orders

#Version 2.5.2

Released 2020-05-16

#Version 2.5.1

Released 2020-05-15

Add Prometheus exporter

Allow trading on hidden markets Improve error reporting during market initialization

Fix race conditions (#117)

  • Enable race detector in CI
  • Fix race condition in handleOrderSnapshot
  • Fix race condition in sessions

Improve vault documentation

Update Market data field with json type

#Version 2.5.0-55a07e9

Released 2020-04-29

Reject post only orders for bitfinex engine

Submit fill or kill orders for market buy on bitfinex upstream

#Version 2.5.0-8382376

Released 2020-04-24

Bitfinex upstream reconcile process on connect (#103)

Bitfinex upstream improvements

  • Reconcile local orderbook with remote open orders from snapshot
  • Update order creation flow for bitfinex engine
  • Add many test cases
  • Use ParseInt to parse int64
  • Add Start to Engine interface
  • Check order status prefix only
  • Cancel order if we detect unexpected amount change

Finex changes

  • Shutdown finex on a new market
  • Clean markets response
  • Set locked to zero when order is fulfilled
  • Skip zero revenues

#Version 2.5.0-a9c2562

Released 2020-04-22

Bitfinex engine: Fix log level message in cancel order endpoint

Bitfinex engine: creates only one ws connection per engine

Fix unconsistent test

#Version 2.5.0-3ff1ad3

Released 2020-04-22

Add expenses message to builder observers

Keep track of bitfinex fees in platform expenses

#Version 2.5.0-b253ea1

Released 2020-04-22

Add separate cache for API (no vault dependancy)

#Version 2.5.0-145e7c0

Released 2020-04-21

Skip warmup for non local drivers in incremental

#Version 2.5.0-e0a70df

Released 2020-04-21

Add driver id filtering in ranger and incremental

  • Add test for incremental

Add data field to Market model (#101)

  • Add data field to Market model

Add test for decrypt pkg

Bitfinex engine driver order create and reject trade events support * closing orders once fulfilled

Create market driver interface Change market init to load orderbook Introduce pkg driver and orderbook Add blackhole driver

Fetch and decrypt engine config

Update schema (#92)

  • Update schema with engines table

#Version 2.5.0-bc9d854

Released 2020-04-15

Add vault documentation to create policy and application tokens (#91)

#Version 2.5.0-344a95e

Released 2020-04-15

Add price filters for finex API (#89)

  • Add price filters for finex API
  • Fix unstable tests in session rate

Add avarage price calculation

Add API usage (JS)

Cancel All endpoint

  • Admin API to cancel orders

Configure the CI to redeploy on master.devkube.com (#83)

Enhancement: Redeploy master changes to finex.devkube.com (#87)

Fix gateway rate limits (#79)

  • Fix gateway rate limits
  • Change default api rate limits to 5 requests per second

Fix logging Empty operations (#75)

  • Improve logging of empty operations
    • Log UUID on order cancel
    • Add logs for actions filter in orderapi

Improve Session logs

Limit size of orderbook in incremental snapshots

Listen to Peatio Liabilities

Publish locked on balance updates

Stop API on AMQP connection exceptions

Update schema

  • Load null price as 0 from db

Update Average price calculation

#Version 2.4.3

Released 2020-04-14

Add avarage price calculation

Add API usage (JS)

Cancel All endpoint

  • Admin API to cancel orders

Configure the CI to redeploy on master.devkube.com (#83)

Fix gateway rate limits (#79)

  • Fix gateway rate limits
  • Change default api rate limits to 5 requests per second

Fix logging Empty operations (#75)

  • Improve logging of empty operations
    • Log UUID on order cancel
    • Add logs for actions filter in orderapi

Improve Session logs

Limit size of orderbook in incremental snapshots

Listen to Peatio Liabilities

Publish locked on balance updates

Release stable version

Stop API on AMQP connection exceptions

Update schema

  • Load null price as 0 from db

Update Average price calculation

#Version 2.4.0-ce2a8df

Released 2020-04-06

Enhancement: Redeploy master changes to finex.devkube.com (#87)

#Version 2.4.0-5334683

Released 2020-03-31

Update schema

  • Load null price as 0 from db

#Version 2.4.0-77e3487

Released 2020-03-26

Update Average price calculation

#Version 2.4.0-0eb09ee

Released 2020-03-26

Add avarage price calculation

Add API usage (JS)

Cancel All endpoint

  • Admin API to cancel orders

Configure the CI to redeploy on master.devkube.com (#83)

Fix gateway rate limits (#79)

  • Fix gateway rate limits
  • Change default api rate limits to 5 requests per second

Fix logging Empty operations (#75)

  • Improve logging of empty operations
    • Log UUID on order cancel
    • Add logs for actions filter in orderapi

Improve Session logs

Limit size of orderbook in incremental snapshots

Listen to Peatio Liabilities

Publish locked on balance updates

Stop API on AMQP connection exceptions

#Version 2.4.2

Released 2020-03-23

Add API usage (JS)

Cancel All endpoint

  • Admin API to cancel orders

Configure the CI to redeploy on master.devkube.com (#83)

Fix gateway rate limits (#79)

  • Fix gateway rate limits
  • Change default api rate limits to 5 requests per second

Fix logging Empty operations (#75)

  • Improve logging of empty operations
    • Log UUID on order cancel
    • Add logs for actions filter in orderapi

Improve Session logs

Limit size of orderbook in incremental snapshots

Listen to Peatio Liabilities

Publish locked on balance updates

Release stable version

Stop API on AMQP connection exceptions

#Version 2.4.0-5b71432

Released 2020-03-23

Add API usage (JS)

#Version 2.4.0-905757b

Released 2020-03-23

Configure the CI to redeploy on master.devkube.com (#83)

#Version 2.4.0-3905d93

Released 2020-03-23

Cancel All endpoint

  • Admin API to cancel orders

#Version 2.4.0-071000c

Released 2020-03-21

Limit size of orderbook in incremental snapshots

#Version 2.4.0-d196f4e

Released 2020-03-19

Improve Session logs

#Version 2.4.0-3df119a

Released 2020-03-18

Fix gateway rate limits (#79)

  • Fix gateway rate limits
  • Change default api rate limits to 5 requests per second

#Version 2.4.0-678d1d0

Released 2020-03-12

Stop API on AMQP connection exceptions

#Version 2.4.0-98718c7

Released 2020-03-05

Listen to Peatio Liabilities

#Version 2.4.0-a4aff06

Released 2020-03-04

Publish locked on balance updates

#Version 2.4.0-720b34f

Released 2020-03-04

Fix logging Empty operations (#75)

  • Improve logging of empty operations
    • Log UUID on order cancel
    • Add logs for actions filter in orderapi

#Version 2.4.1

Released 2020-03-03

Add docs about rate limiting (#68)

  • Add documentation of rate limits features
  • Add documentation of API error codes

Co-authored-by: Camille <cmeulien@heliostech.fr>

Add builds notification

Fix enabling too many requests in first period

Fix market order creation

Release stable version

Rework rate limits config (#70)

  • Change rate limits configuration

Co-authored-by: Camille <cmeulien@heliostech.fr>

Update order API

Use correct time format for trade publisher

#Version 2.4.0-fbd6faa

Released 2020-03-02

Acquire a SQL lock on finex-engine start to ensure only one instance is running at any given time

Add balance monitor observer

Add level/role filtering

Add rate limiting per role

  • Add rate limiting package
    • Fix session refetch on missing account

Add preventing overspending logic

  • Create overspending situation test

Add stage deployment hook and notification to slack

Add notes section to readme (#44)

Add a test scenario for fees with any market

Add specs for trading fees

Add Builder package

  • Add benchmark for builder
    • Add SQLBuffer
    • Add trades count
    • Update structure.sql
    • Update example, remove cleanUp
    • Add tests
    • Add injection protection

Add coverage report

Add structure.sql (#14)

Add uuid to fabricateOrder in orderbook_test

Add UUID and CreatedAt to order model

Add message, trade and market models (#10)

Remove unused transaction type

Add drone config to run tests

Add jwt package (#4)

Adding roadmap

Adding models

Adding development foundation

Build & Publish changelog to SDK

Bulk API for creating and canceling orders

  • Refactor orderapi
    • Move test actions to yaml format
    • Add short api description

Bump version to 2.4.0

Bump version using sdk-citools

Cancel order by uuid

Change order API fields to amount and type

Change decimal library to shopspring/decimal (#50)

  • Change decimal library to shopspring/decimal

Change keys loading logic (#34)

  • Load only the public key from the orderapi

Co-authored-by: Camille <cmeulien@heliostech.fr>

Create account if it doesn't exist

Drone to bump and build image

Drop precision decimal cannot hold in Scan

Enhancement: Switch the CI container registry to quay.io (#55)

Feature: Add JWT generator and improve Rate Limiter (#17)

  • Add JWT generator

  • Fetch limiter configs from ENV. Add ENV helpers to config

Feature: Run loop for matching component (#20)

Finex graceful shutdown

  • Fix logger initilizer

Finex integration

  • Add functional tests
    • Handle tradeId in builder
    • Fix currencies cache bug
    • Fix balance locking
    • Rework Order cancelation

Fix overlocking in session

Fix blocking on matching WarmUp step

  • Load disabled markets

Fix balance select in gateway

  • Fix order cancel bug
    • Improve debug logs
    • Do not publish empty operations
    • Fix order created_at
    • Insert origin_ locked and volume

Fix for Orderapi handlers (#18)

Graceful orderapi shutdown

Handle decimal precision limit gracefully

  • decimal.Floor failing testcase
    • Safeguard for maximum precision, set the default market precision to 8

Improve docker build

Incremental observer (#32)

  • Incremental observer

    • Fix ranger message format
    • Use binary uuid
    • Idle sql when there are no operations

Initial commit

Initialize markets with open orders

  • Add flexible precision to market
    • Load market precision from database
    • Update tests for matching
    • Do not insert wait orders

Insert order and trade ids

Matching component (#5)

  • Add matching pkg
  • OrderBook type contains btrees and matching engine
  • Market type contains market info and orderbook
  • Matching type keep the list of markets and dispatch messages to correct markets

Move api description to docs/api.md (#51)

Move pkg/cache

Move config & sql pkg. Add mq & transaction pkg (#8)

  • Move pkg/config

  • Move pkg/sql

  • Add pkg/mq

  • Add pkg/transcation

Notify about rejected orders through ranger (#45)

  • Scenario with a rejected market order because of not enough liquidity on market
  • Scenario with a rejected order being rejected because of not enough balance

Order API with create and cancel endpoints (#1)

Co-authored-by: Maksym <mnaichuk@heliostech.fr>

panic on Panic log level

Publish date as string for Influx

Publish UUID to Ranger

Publish snapshots for nonactive markets

Ranger observer

  • Add tests for ranger

Rework preciosion handling

  • Apply precision on matching input
    • Load precision from database
    • Handle precision in api

Stability improvements

  • Fix incorrect currency log
    • Load timestamp from database
    • Handle market state
    • Update Locked for order cancel

Support of post_only order type

Test selecting Id behaviour

Trade Publisher for Influx

Update README.md

Update order api params

Update cache package

Update pkg/config to handle new config.yml format

Pull Requests

Merge pull request #6 from openware/feature/model