- Changed API by adding a field
emoji
to theConsumable
schema; this field can be used by frontend applications to show the same symbol to users - Added explicit refund labeling to its transactions
- New feature of a fully usable CLI to manage users and applications, which also solved the "first user problem" by being able to promote them manually
- New feature of the "auto mode", which can be used to bootstrap the MateBot core API in just a single command (mainly configured by environment variables)
- Breaking change by switching from SHA512-hashed passwords with multiple iterations to Argon2, which also fixed a GitHub security notice; however, this breaks the current login workflow for existing applications -- therefore, all applications must be re-created after this release has been applied (#122)
- Notable change by replacing the
GET /status
endpoint with the unauthenticatedGET /health
endpoint (#102) - Added support for Docker (#119)
- Allow overwriting almost all config settings environment variables
- Extended the unittest suite to perform load tests and CLI tests as well
- Fixed three failing unittests (#118)
Merry Christmas :)
- Notable change by not exposing shared secrets via the API
- Allow overwriting certain config options via environment variables
- Fixed a lot of inconsistencies and bugs
- Updated the documentation
- Added a migration script to convert from the old database to the core API schema which is expected to work as long as no further migrations are required
- Handle
RuntimeError
as a valid exception to produce HTTP400
responses - Added support for Python 3.11
- Updated minimal dependencies
alembic
to1.8
fastapi
to0.88
pydantic
to1.10
, adding the extra dependencydotenv
for.env
filesrequests
to2.27
uvicorn
to0.20
- Important change by adding a globally unique name attribute to the user
- Changed endpoint
POST /users
to require a unique username - New endpoint
POST /users/setName
to change the username, if available - Notable change by adding the user's name attribute to the
schemas
Vote
andCommunismUserBinding
- Added a filter
username
to the users endpoint - Updated the setup utility to accept a custom community name
- Changed project license from GLPv3 to AGPLv3
- Added pagination to all relevant GET endpoints
- Require the
ìssuer
for voucher update requests - Fixed logging and unittest bugs
- Added a filter
alias_application
to the users endpoint - Fixed bug in
POST /aliases/delete
endpoint
- Notable change by dropping the Python version from
/status
endpoint - Notable change by dropping defaults and optionals of the
APIError
model - Added two new subcommands to the CLI for better application management
- Update FastAPI to version 0.78.0
- Fixed logging problems due to updates in
uvicorn
and updated it to v0.18 - Fixed warnings for endpoints not having explicit version annotations
- Added a logging filter to suppress multipart DEBUG logs by default
- Rebuild the callback functionality with event posting using
POST
including various useful details for the callback server with optional authentication, together with an event buffer to cache the most recent events for more speed - Breaking change of various endpoints e.g. for the updates of the participation in communisms, sending money and consuming goods, dropping privileges or disabling users to make it more intuitive
- Rewrite the handling of membership polls with a new
variant
field to determine the type of poll, with the current options beingget_internal
,get_permission
,loose_internal
andloose_permission
- Breaking change by removed the unused endpoints
GET /ballots
,GET /multitransactions
,PUT /callbacks
,PUT /aliases
,DELETE /aliases
,POST /users/setFlags
andPOST /users/setName
- Replaced all
404
HTTP responses with400
responses - Accept user aliases combined with the application ID from the auth token as valid user specification
- Added an
issuer
field for various operations to enforce user permission checks on the API server instead of client applications - Rewrote the API unittests to use subprocesses instead of threads to run the API server for better end-to-end tests and fixed various smaller issues
- Fixed a bug preventing general consumption
- Dropped the user's name attribute and its handling functionality
- Implemented the limitations of the config options
max_parallel_debtors
,max_transaction_amount
andmax_simultaneous_consumption
- Rewrote and extended some bigger parts of the sphinx documentation
- Fixed some problems with the database migrations on SQLite databases
- Cleaned up some modules
- Fixed problems of occupied ports in unittests
Security release updating the ujson
dependency to >5.0
.
This release can be considered stable and almost feature-complete.
- Changed the API design from a pure REST-like to a verb-based API for
most functionality, the only exceptions being
aliases
andcallbacks
- Implemented a filter-like search functionality on almost all GET endpoints
- Consumables are now set up in the config and not in the database, manipulation isn't possible via the API anymore
- Applications can't be changed via the API now (use the CLI instead)
- Improved the request validation error handling & dropped HTTP
422
responses - Alembic was added to the project to store future database migrations
- Reworked the ballot and vote handling with new database models
- Improved the CLI functionality of the module
- Fixed various problems with unittests and GitHub CI
Re-implementation as FastAPI-based
HTTP microservice as a full REST API. This release included the use of
SQLAlchemy as database ORM, authentication using JWT and versioned
endpoints starting with /v1
. The API as well as the database models
are also checked using Python unittests that are run using GitHub CI.
Re-implementation as new Telegram bot with some more commands, a vouching system cross-chat message synchronization and distinguishing internal from external users for a simple permission system. This bot used an SQL database as its data backend with a hand-made SQL wrapper (SQLite and MySQL are supported). This release also included a full sphinx documentation of the bot.
First implementation as a rudimentary Telegram bot that provides the core
commands (balance
, send
, pay
, communism
, history
, zwegat
and
those for consumptions) with a JSON-file as storage backend.