An API to access Boavizta's methodologies and data
See the documentation for API usage and methodology.
π¬ Join us on our public chat
Boavizta aims to enhance the assessment of environmental impacts induced by ICTs in organisations by providing widespread access to our work in an automated and efficient manner.
Boavizta integrates various data and methodologies, which are combined and made accessible through this API.
Transparency and the popularisation of scientific knowledge are of utmost importance in this project, and key aspects include open-sourcing the code, versioning the impact factors, and thoroughly documenting the project.
The system follows a bottom-up approach in its development, organised into layers. The initial layer focuses on equipment. The second layer focuses on the impacts of digital services (e.g. cloud instances) or systems. However, assessing the overall global impact of ICT is currently beyond the project's scope.
BoaviztAPI estimates the environmental impacts of digital equipment or services. You describe a piece of hardware (a server, a cloud instance, a laptop, a single component such as a CPU or an SSD) and the API returns its impacts for two phases of its life:
- embedded: manufacturing, transport and end of life, spread over the equipment's lifetime
- use: the electricity it consumes, multiplied by the impact factors of the electricity mix where it runs
By default the results cover global warming potential (gwp, in kgCO2eq), abiotic resource depletion (adp, in kgSbeq) and primary energy (pe, in MJ). Other criteria can be requested.
For example, the impacts of an AWS m5.xlarge over 8,760 hours (one year) of use:
curl "https://api.boavizta.org/v1/cloud/instance?provider=aws&instance_type=m5.xlarge&duration=8760"-
See our pedagogical front-end app (using the API): https://datavizta.boavizta.org/serversimpact
-
See the OpenAPI specification: https://api.boavizta.org/docs
-
Access the demo API: https://api.boavizta.org
$ docker run -p 5000:5000 ghcr.io/boavizta/boaviztapi:latestAccess the API at http://localhost:5000.
$ pip3 install boaviztapiRun the server locally with:
$ uvicorn boaviztapi.main:app --host=localhost --port 5000- Python >=3.12
- Poetry (see the install instructions)
make
Install dependencies and check the environment is set up correctly:
$ make install
$ make test
$ make lintThe development server uses uvicorn and FastAPI. You can launch the development server with the uvicorn CLI.
# Using uvicorn
$ make run
# Using Python directly (adds watcher)
$ make run-pyYou can run the tests with pytest via:
make testto run all unit tests (using test data)make test-e2eto run end-to-end tests (using "real" data)
API documentation is build with mkdocs and maintained under the docs directory.
See how to work on documentation
Build Docker image:
# Using the makefile (recommended)
make docker-build-development
make docker-run-development
# Manual build
docker build . -t boavizta-test
docker run -p 5000:5000 boavizta-testYou can self-host BoaviztAPI as an AWS Lambda function using Serverless Framework.
You must first configure:
Once done, you can deploy the API with:
serverless deployWhen the deploy succeeds, it will show you the URLs for the deployed function, and you can call the API as normal, e.g.
# Replace the base URL with your own
curl -s "https://k9wllbzcc2.execute-api.eu-west-1.amazonaws.com/v1/server/?archetype=dellR740"You can check your Lambda URL at any time with:
serverless infoOnce API server is launched API swagger is available at httsp://localhost:5000/docs.
BoaviztAPI is used by several open-source projects and tools. See ADOPTERS.md for the full list.
Community client libraries exist for other languages (PHPβ¦). See SDKs.md for the list.
See contributing.md.
You can build a source distribution (installable with pip) with make build.
We use Semantic Versioning 2.0.0
| Type | Description | Command |
|---|---|---|
| MAJOR | version when you make incompatible API changes | make major |
| MINOR | version when you add functionality in a backwards compatible manner | make minor |
| PATCH | version when you make backwards compatible bug fixes | make patch |
See the Release Process wiki.
GNU Affero General Public License v3.0