An open industry standard, a new Application Programming Interface specification for Cloud Infrastructure Management, paving the way for the EuroStack.
- Sovereignty, e.g. immunity from foreign government interference keeping API control with founding members
- Common standards reduces costs, e.g. less training, common tooling, faster adoption, …
- Broad provider support will incentivize ISVs to build profitable tools and software ecosystems
- Built-in alignment with EU regulations for resilience, data protection and privacy
- Long-term support of APIs provide reliability and maintainability
- Comparison of compliant providers and increased resources using multiple providers
- Directly address the demand of the public sector to have no vendor lock-in
Contains the automatically generated .yaml files, which are used to build the API documentation and website. These files are created using tools like gomplate, based on the resources, templates, and schemas.
Versioned API definition (added manually or using a template)
Includes JSON Schema definitions that structure the API's request and response data. These schemas ensure data consistency and validation.
Holds .tpl (template) files that define reusable components for generating OpenAPI specifications dynamically. Tools like gomplate process these templates to create .yaml files.
Contains all the resource definitions corresponding to different API endpoints, ensuring modular and maintainable API documentation.
Contains all the resources and tools to build the Website API
Contains Markdown documentation files for the API, used by Docusaurus to generate pages.
Utility scripts to help manage and deploy the documentation site.
The source code for the website, including React components and page layouts.
Stores static assets such as images, icons, and other resources.
Configuration file for the Docusaurus site, defining site structure, themes, and plugins.
Manages dependencies and scripts for building the website.
Automates the generation and validation of OpenAPI files, ensuring consistency in documentation and schema definitions.
Configuration of linter & quality analysis tool.
Enable an editorconfig on your Editor.
The OpenAPI files will be used in the website.
- Go > 1.24
# Clone the repository
git clone https://github.com/eu-sovereign-cloud/spec.git
cd spec/
# Check your Go version using `go version` and skip the instalation step if it is > 1.24
# Download the specified version of Go.
wget https://go.dev/dl/go1.24.1.linux-amd64.tar.gz
# Add Go binary to PATH
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
source ~/.bashrc
# Go Version
go version
expected: go version go1.24.1 linux/amd64
# Install gotemplate
go install github.com/hairyhenderson/gomplate/v4/cmd/gomplate@latest
echo 'export PATH="$HOME/go/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# Generate resources api files && Lint
make lint
# Run the Makefile to generate OpenAPI files
make
# Verify that the `dist/specs` directory contains the generated YAML files
ls dist/specs
# Result
extensions.activitylog.v1.yaml foundation.compute.v1.yaml foundation.network.v1.yaml foundation.region.v1.yaml foundation.workspace.v1.yaml
foundation.authorization.v1.yaml extensions.loadbalancer.v1.yaml extensions.objectstorage.v1.yaml foundation.storage.v1.yaml
# Clone the repository
git clone https://github.com/eu-sovereign-cloud/spec.git
cd spec/website
# Install dependencies
npm install
# Generate API Docs
npm run generate:all
# Run it
npm run start
# Expected Result
> docs-site@0.0.0 start
> docusaurus start
[INFO] Starting the development server...
[SUCCESS] Docusaurus website is running at: http://localhost:3000/
✔ Client
Compiled successfully in 1.12m
client (webpack 5.98.0) compiled successfully
# Navigate to `http://localhost:3000/` in your browser to view the website.
All contributors are warmly welcome. If you want to become a new contributor, we are so happy! Just, before doing it, read the tips and guidelines presented in the dedicated documentation page.
SECA is distributed under the Apache-2.0 License. See License for more information.