Open Budget Core v0.2.0

After 3 weeks, I’m happy to announce that Open Budget Core v0.2.0 has been officially released! Here are the changes that happened for this release:


  • A changelog doc.
  • Use GPL 3.0 as the license for this project.
  • Add Code of Conduct.
  • Add Contributing Guidelines.
  • Add Budget resource (schema/endpoint).
  • Add active budgets and allow users to switch between budgets.
  • Automatically create a default active budget and authenticate for users created through POST /users.


  • Convert authentication error responses to JSON API.
  • Require user authentication for User endpoints except create (POST /users).
  • Require user authentication for Budget endpoints.
  • Require user authentication for Account endpoints.
  • Include location (links key) inside API response body instead of header.
  • Change all Budget endpoints to only show budgets associated with the current logged-in user.
  • Change all Account endpoints to only show accounts associated with the current logged-in user’s active budget.
  • Improve all error responses to adhere to JSON API.


  • Fix clients being able to access DELETE /token without being authenticated.

I am so happy about this release. From a customer’s perspective, there aren’t a lot of actual changes that happened, but there were a lot of improvements that happened under the hood.

The 2 biggest changes that happened in this release are the addition of the Budget resource and adjusting all of the existing endpoints to take the current logged-in user into account.

The Budget resource is going to be the parent of all budget-related data and having this lays down the foundation for supporting multiple users. This means that users can add other users into their budget. Of course, this isn’t happening soon, but it’s definitely on the horizon!

As for the existing endpoints, in the initial release of Core, anyone who’s logged in can view anyone’s data. This means you can view the accounts that I made which is not really something that we want to happen to ourselves.

A bunch of other things got added to the project as well. For instance, we now have documents related to collaboration (like the CHANGELOG, CONTRIBUTING) which will definitely make things easier for new developers to get involved in this project.

Code coverage has also been increased to 100%. The project now has full test coverage which increases confidence in writing new code or refactoring existing ones. As for code quality, I’m not completely happy with what I’ve written so far. There are definitely parts that could use improvements so I encourage everyone to send a pull request or open an issue to discuss these things.