Sure, have a search on “Custom Fields” here on Meta.
There are broadly two ways to do it:
- Custom Fields (see e.g. How to add custom fields to models)
- New database tables (via migrations)
You need to extent the relevant serializer in both cases.
You can only do this in a plugin (not a Theme or Theme Component)