https://github.com/paloaltonetworks/bahamut
Go library to build an API server based on an Elemental model
https://github.com/paloaltonetworks/bahamut
Last synced: 6 months ago
JSON representation
Go library to build an API server based on an Elemental model
- Host: GitHub
- URL: https://github.com/paloaltonetworks/bahamut
- Owner: PaloAltoNetworks
- License: apache-2.0
- Created: 2016-05-21T03:00:04.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2025-05-02T21:16:58.000Z (6 months ago)
- Last Synced: 2025-05-02T22:24:40.873Z (6 months ago)
- Language: Go
- Homepage:
- Size: 7.52 MB
- Stars: 25
- Watchers: 19
- Forks: 7
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Bahamut
[](https://www.codacy.com/gh/PaloAltoNetworks/bahamut/dashboard?utm_source=github.com&utm_medium=referral&utm_content=PaloAltoNetworks/bahamut&utm_campaign=Badge_Grade) [](https://www.codacy.com/gh/PaloAltoNetworks/bahamut/dashboard?utm_source=github.com&utm_medium=referral&utm_content=PaloAltoNetworks/bahamut&utm_campaign=Badge_Coverage)
> Note: this is a work in progress.
Bahamut is a Go library that provides everything you need to set up a full blown
API server based on an [Elemental](https://go.aporeto.io/elemental) model
generated from a [Regolithe Specification](https://go.aporeto.io/regolithe).
The main concept of Bahamut is to only write core business logic, and letting it
handle all the boring bookkeeping. You can implement various Processors
interfaces, and register them when you start a Bahamut Server.
A Bahamut Server is not directly responsible for storing an retrieving data from
a database. To do so, you can use any backend library you like in your
processors, but we recommend using
[Manipulate](https://go.aporeto.io/manipulate), which provides a common
interface for manipulating an Elemental model and multiple implementations for
MongoDB (manipmongo), MemDB (manipmemory) or can be used to issue ReST calls using
maniphttp.
It is usually used by clients to interact with the API of a Bahamut service, but
also used for Bahamut Services to talk together.